Git Product home page Git Product logo

nom-noms's Introduction

Nom-noms

Live Site

Summary

Nom noms is a social-themed location search platform inspired by Yelp that allows users to search for locations, create reviews, and connect with other users.

Languages

  • JavaScript
  • Ruby
  • HTML
  • CSS
  • SQL

Frameworks

  • Rails
  • React.js

Libraries and Technologies

  • PostgreSQL
  • jQuery
  • Google Maps API
  • Google Maps Geocoding API
  • Paperclip w/ AWS
  • Figaro
  • ReactRouter
  • Flux
  • Faker
  • jBuilder

App features

You can:

  • Create an account with an avatar
  • Log in / Log out (demo account available too)
  • Search for locations by name, type, cuisine and city
  • View search results by search index or by interactive Google Maps view
  • Sort index items by rating, distance, or time
  • Access location pages from the index or map view
  • Filter search results by price range and distance
  • Create, read, edit, and delete location reviews
  • Upload multiple pictures to location reviews
  • Access personal page with stats, reviews, and pictures
  • Search for other users' page by username, first name, or last name

Nom noms is focused on the user experience. It features:

  • A tutorial for how to use the site features
  • Selectable autocomplete lists to for every search
  • Search index and google maps integration

API

Nom noms is powered by a RESTful JSON API.

I took great care to ensure correspondence between React routes and API endpoints. If you're on a page that displays data, you can replace the # in the URI fragment at any time with api to see what's being served up for a given view. This includes search results, location, and user pages.

Many API responses handle nested data, associations, and perform basic mathematical calculations (for stats). I made extensive use of jbuilder to manage these.

API responses are structured to prevent N+1 queries. I used model scoping with find_by_sql as needed to minimize database fetching and keep controllers slim.

Sorting the index results is done completely in the front end. Since data is already loaded into the stores, the sort functions simply sort the stores rather than refetching from the database. Therefore, sorting is a very inexpensive operation.

Future enhancements

  • Follow other users
  • Bookmark locations
  • Pagination / infinite scroll for Search Index with Kaminari
  • Omni Auth (Facebook)

Implementation Timeline

nom-noms's People

Contributors

ephraimpei avatar jnelken avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.