piqr is a random recipe retrieval CRUD app and the first full-stack portfolio project for Coren Frankel as a fledgling developer. It integrates the spoonacular API random recipe endpoint to provide an adventurous recipe discovery, persistence, and deletion experience for the user. Live demo here.
- General Info
- Technologies Used
- Features
- Screenshots
- Project Status
- Room for Improvement
- Acknowledgements
- Contact
Have you ever been willing to cook, unwilling to cook the familiar, but had the general creative desire to try something new or different?piqr was contrived as a response to the classic dilemna that can result amongst individuals when asking, "What should we make to eat?" The app harnesses the spoonacular Nutrition, Recipe, & Food API to allow easy-click random recipes from over 300K to be glanced and saved to user-registered accounts. The Python-Flask MVC architecture utilizes bcrypt hashing for password security and authentication, and flash messages for login and registration validations. The MySQL database is host to minimal user info and collects reference points to spoonacular's recipes to avoid the scraping of data from the API per developer agreement. Users are able to access one-click request/responses for 1, 5, or 10 recipes at a time.
- Python 3.10
- Flask 2.1.3
- MySQL 8.0.28
- PyMySQL 1.0.2
- bcrypt 4.0.1
- Jinja2 3.1.2
- Bootstrap 5.0
- Google Fonts API
- spoonacular API via RapidAPI
- Login/Registration with bcrypt password-hashing & email regular expression backend validations with flash messages
- User account allows fetching of 1, 5, or 10 random recipes at a time
- Users can "piq" their favorite recipes to be saved, view more detail about recipes, and purge them from their account
- Guests can get a dose of the user experience with access to 1 random recipe at a time, and are able to attempt to save a recipe, which
- More to come! (Ingredient/Cuisine/Diet search filters!!!)
Project is: 🏗️ in progress
Active Contributors:
- Coren Frankel (Full Stack Developer)
Room for improvement:
- When initially learning, exploring & building with the spoonacular api, fetch, & bootstrap styles and components, the UX was largely bolstered by DOM manipulation through javascript. This amalgymated several areas needing improvment including: exposed API keys in js files, clunky template literals & indistinct bootstrap accordion elements that open/close in unison rather than being autonomously interactive.
- The original design(unfinished & excluded in minimum viable product) provides a form that allows users to call for random recipes with filters to include or exclude cuisine, diets, and/or ingredients to provide a more robust recipe inspiration experience. This feature will come to exist!**
To do:
- Migrate API request to the backend from JS to Python to promote clean API consumption
- Refactor styles for mobile-friendly responsive design
- Integrate minimal animations for AJAX waiting/loading
- Provide the ability to create, edit your own recipes
- Build relationships and logic to "like" & comment on recipes
- Introduce minimal "social" element to share/show recently "piq'd" (favorited) recipes
- This project is dedicated to my wife Rosey, who tolerates me and endures my flagrant suggestion of "food" whenever asked what to eat or cook.
- Coren Frankel: feel free to email me!