A User-Friendly web application powered by the Yelp Fusion API.
Live Demo and Overview: https://www.youtube.com/watch?v=1B-GNInJWo0&t=8s
This app generates nearby restaurant suggestions driven by user choices in an interactive wizard. The main django app is located in app/shout
.
- HTML 5 Geolocation
- Google maps Embed and integration
- Image-based User selection
- Organized User Data
- Security
- Interactive Mobile Responsive Design
I integrated google maps' geolocation API that comes with HTML5. This was a surprisingly trivial task and the javascript integrated fairly smoothly.
I designed the frontend to be very user-friendly. Users navigate through the javascript form wizard and enter their preferences. The location is automatically entered for them and they can select various images that represent their food preferences for the evening.
- Django (Python Web Framework)
- YELP rest API (Python script)
- Jinja (templating language that follows the DRY principle)
- SQLite database
The backend is developed using the Django Web frameworks and user data is stored in a SQLite database. I rendered the front end by writing templates in Jinja. To generate the search results, I wrote several JQuery/Ajax scripts that asynchronously call a REST api (python) that communicates with the Yelp Fusion API. These results are rendered using the Jinja templating language.
Each user interaction with the webpage is stored in a SQLite databse. Their food preferences, location, and personal information (optional) are stored, because it is very useful for businesses. The reality of the internet is that most of our information is repackaged and sold to marketing and analytics agencies.
User privacy is extremely important, so entering in identity and e-mail data is entirely optional and the transaction data is protected in the database. Django has form sanitization
features which protect this application from SQL-injection
attacks which could corrupt db data or steal it. Another feature is CSRF protection
for the views that I wrote. This prevents cross site scripting
attacks.