The items here are not listed in any particular order.
- Make REST API read/write. The first priority is to allow people to rate/review entries and upload photos.
- Find a replacement for Google Maps geocoding so we can include lat/long info in REST API responses.
- Wiki-ize all data. Let anyone edit but make it easy to rollback changes.
- Better search. Identify things like cuisines ("Chinese") in search and do something intelligent with this so "Chinese in Minneapolis" just works.
- Interesting-ness ranking, based on veg-friendliness level, recency, new reviews/ratings, # of reviews/ratings, and some sort of manual "this is cool/boring" flag. This would let you filter out "boring" entries like chains if you don't want to see them.
- "Personal lists" - the ability to create lists of entries with arbitrary names ("Favorites in Phoenix", "Best Chinese Ever"). These lists could be public or private.
- If a user rates an entry they've rated previously, then the stars shown at the top of the page are updated, but the stars by their review (or name in the ratings list) are not updated.
- The side listing key for the Google Maps view of an entry list could be improved with more useful info.
- The info box for the per-entry Google map sucks. Improve it (smaller, more useful).
- Allow region maintainers to edit regions they maintain. Also allow them to move entries between their regions.
- Log failed searches so we can tune the search engine.
- Accent-insensitive searching, so "cafe" matches "cafÃ©".
- The default search radius for geographic searches is 1 mile/km. Automatically default to a larger radius if the number of entries found is very small.
- Indicate relative "completeness" of an entry somehow (weighting each field, hours, etc) and indicate this in listings so as to show people which ones could use suggestions/editing.
- Add a feature to allow the creation of PDF versions of this content, in a format suitable for printing and distribution. Ideally, this would be somewhat customizable, so it could say something like "The Guam Vegetarian Society Dining Guide" as a title. Also consider providing other formats which are more easily editable, like Tex or DocBook. This has been on the todo list forever, because it's a great idea, but really hard.
- Add a "friends" system. If you add another user to your friends list, you should be able to do things like filter listings to only show entries that you or your friends liked, or only show the average rating you and your friends gave entries.
- Consider giving newer ratings more weight than old ones. Also consider giving rating w/ reviews more weight.
- "Was this review helpful?" The most helpful reviews could be featured on the site, given a higher weighting in rating averages, etc. This also provides a way to flag inappropriate reviews for review/deletion (though in practice these are incredibly rare, and therefore basically a non-issue).
- Allow people to upload scanned menus, OCR them, and make the text searchable.
If you have a suggestion, please let us know.
These items are things to improve the code, but aren't features. Feel free to ignore this, it's just for our reference.
- The user & location inline search bits do not work in IE. Fix this before exposing this to non-admins.
- Times are stored as (server-)local time. Fix this to use UTC. This is so embarassing.
- Switch to DBIx::Class. The goal here is to reduce the number of queries sent to the DBMS, and just have a nicer model in general.
- Switch to Postgres. Maybe do this while switching to DBIC?
- Give categories attributes, including "is_rateable", "prices_are_relevant", "smoking_is_relevant", "reservations_are_relevant", and possibly others. Use this to determine if some given feature applies to a vendor.
- Implement some form of admin tool for cuisines & entry features. These change rarely enough that this could be a simple CLI tool.
- The search uri methods are kind of a jumble of overlapping code (map, printable, base, etc) and could probably be cleaned up, in particular the way lots of code has ternary ops to decide which method to call.
Various bits of code need cleanup.
- Map URI generation & its interaction with geocoding.
- Parsing/formatting of hours