= If I Did It Over Again = Or Cabernet Design 2.0 == Things I need to improve == 1. Come up with a better presentation model then a grid * Old & tired * Hard to put a lot of wine data in a single row * !CellarTracker uses grids too, but with a lot less data * Grid view in CT isn't for managing your wine in any way * Wine management is done via the detail view 1. Easier entry of new wines * Fewer required fields * [http://www.cellartracker.com/ Cellar Tracker] does a good job of this * Make it easier to clone wines by vintage * Add by UPC code? Would be great to find a service which converts UPC codes to wines 1. Don't do full page reloads all the time- Ajaxify 1. Needs to be fast! Slow page loads suck 1. Design as multi-user from the get-go * Global data where useful * Where can I get data to start off with? 1. Database is very normalized, but not very "railsy" Need to rethink schema to make ActiveRecord model work better for me * Store single values for anything sorted/filtered * Avg. Bottle price * Single date for drinking * Bottle count * Need to better model data * wine_vintage should be it's own table * Do more roll-ups for performance/sorting/filtering 1. Better use of memcached * Power anything autocomplete 1. Allow users to import/export their data * Need to allow to import from CT & Export in the same format (or equivalent) 1. Menu system * Really there should only be 1-3 views when searching to find a wine to drink and probably a single wizard workflow to add a wine * Have some "administration" views to manage producers/wineries 1. External Reviews aren't smart enough * Need to match winery & something about the wine * Should try to extract points == Things I did Right == 1. PDF printing was totally worth it * Would be nice to have a detail view for a binder 1. Using RoR * Quick prototyping * Scaling will always be an issue though (use memcached) 1. Using MySQL * Should scale well for site usage patterns (writes being < reads) 1. Drunk wine list * Should be an rss feed * Should generate reminders to write tasting notes 1. Storage View * [http://www.bottlecount.com BottleCount] has a prettier representation but is missing features == Things I like about !CellarTracker == 1. Huge database means less typing 1. Adding wine via fulltext/ajax search is great 1. Great full text search 1. Excellent categorization (region, subregion, appellation, designation, vineyard, etc) 1. Excellent Advanced Search * but is very awkward to use 1. Their twitter integration is awesome. Also provides great marketing for the site == Things I don't like about !CellarTracker == 1. Very slow (especially evenings) 1. Ugly * Poor use of color * Lots of plain lists without any means to sort/filter * Small font used everywhere makes it hard to find what you're looking for * Very busy, information is just splattered all over the page without any regard for the important info vs. merely interesting 1. Difficult to use cellar structure: Location/Bin * Very free form * All bottles added go to the same location/bin 1. Feels like an "expert system"- very overwhelming at first with a steep ramp-up * Lots of cool features are buried deep down. == Misc Ideas == 1. Embrace the grid. Basically use the grid view, but via ajax allow you to drill down & look at the details of a wine w/o reloading the page. basically put the information in a new (large) row or temporarily hide the grid. 1. RSS feeds for events (adding wines, drinking wines) 1. Should be able to do tasting notes for bottles not entered in the system (wines tasted at restaurants, friend houses, etc) 1. Use data from other sites [http://api.wine.com/ Wine.com API] for example (look at: WineZap, Wine Searcher, and Snooth) 1. Tags! tags can be used for a variety of things: * style (red, white, rose, port) * reserve, organic, estate, limited * vintage? -- probably not. too intrinsic to the system and creates new objects rather then describing them * food pairings * [http://agilewebdevelopment.com/plugins/acts_as_taggable_on_steroids acts_as_taggable_on_steroids] 1. make it easy for users to leave comments (see how pcapr did it) 1. Multiple kinds of search * Simple text box search, use [http://github.com/wvanbergen/scoped_search scoped_search] or [http://freelancing-god.github.com/ts/en/ ThinkingSphinx] * For an advanced search form, use [http://railscasts.com/episodes/176-searchlogic SearchLogic] 1. [http://acts-as-rated.rubyforge.org/ acts_as_rated] or roll my own rating system? == Multi-User Issues & Features == 1. Account != User. Account owns the bottles, a user is granted r/o or r/w access to the account * Husband/Wife get different userid's * Allow's friends to get r/o access * Use [http://github.com/binarylogic/authlogic AuthLogic] and [http://github.com/josevalim/auth_helpers auth_helpers] for reset/confirmation * Use [http://stonean.com/page/lockdown Lockdown] for authorization 1. Need a way to deal with global data issues * Fat fingering in new wines/wineries/etc * Merging duplicate records * Version history, show changes over time and by who * Rollback changes * Wikipedia-like volunteers to help manage? * ~~[http://allaboutruby.wordpress.com/2009/06/26/acts_as_versioned-tutorial/ acts_as_versioned]~~ or [http://railscasts.com/episodes/177-model-versioning Vestal Versions] or [http://github.com/kkurach/has_versioning has_versioning]? 1. Forums & mailing list for user discussions & system notifications 1. Subscriptions? Checkout [http://chargify.com/ Chargify] for billing 1. Recommendation system? Wine.com affiliate?