SpiceShare is a recipe-sharing platform for home cooks and food enthusiasts to share and discover recipes from around the world. Whether you're an expert or a beginner, SpiceShare connects you to a global community where food brings everyone together.
- Deployed site: SpiceShare
- Blog Article: Read about SpiceShare's Development Journey
- Author:
- Introduction
- Features
- Prerequisites
- Installation
- Usage
- Learnings and Next Steps
- Contributing
- Related Projects
- License
- COntact
SpiceShare was born from the love for food and the desire to build a community where people can discover new flavors and culinary traditions. The idea started from noticing how food often brings people together, regardless of culture or background. SpiceShare aims to create that sense of togetherness online by making it easy for users to upload and share their favorite recipes.
While developing this project, I encountered challenges with implementing image uploads for recipes, building robust user authentication, and managing dynamic ingredient lists. These hurdles taught me to think critically and apply solutions like modular architecture and database management. Looking forward, I envision further features like AI-based recipe recommendations and a mobile app version.
- User authentication
- Recipe creation and sharing
- Search and filter recipes
- User profiles
- Favorite and save recipes (later updates)
Before you begin, ensure you have met the following requirements:
- Node.js (v14.x or later)
- npm (v6.x or later)
--- this is only used to build tailwind css
To run SpiceShare locally, follow these steps:
-
Clone the repository:
https://github.com/Esekyi/SpiceShare.git
-
Navigate to the project directory:
cd spiceshare
-
Create and activate a virtual environment:
python -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate
-
Create a .env file in the root directory and add these variables
S3_BUCKET_NAME='AWS_S3_bucketName' # for uploads to AWS S3, add your bucket name here AWS_ACCESS_KEY_ID='' # AWS Access key AWS_SECRET_ACCESS_KEY='' # AWS secrete key AWS_REGION='' # AWS region for the S3 DATABASE_URL='postgresql://postgres:localhost' # Postgress db url SECRET_KEY='WQioiUU-TWIQ-To-Much_TO-6ue22' # Secrete key for Flask and Flsk-WTF # Flask-mail variables MAIL_SERVER ='smtp.gmail.com' # SMTP server address MAIL_PORT =587 # Usually, 465 for SSL or 587 for TLS MAIL_USE_TLS =True # If you are using port 587 (for TLS), set to True MAIL_USERNAME ='' # Your email address MAIL_PASSWORD ='' # Your email password MAIL_DEFAULT_SENDER ='Your name <[email protected]>'
-
Install dependencies: python and flask
python3 -m pip install -r requirements.txt
Node for tailwind css build
npm install # or yarn install
-
Set up the database:
flask db upgrade
-
Run the application
flask db upgrade
Your local SpiceShare app will now be running at http://127.0.0.1:5000/.
SpiceShare is easy to use. Here are the core features:
- Register an account.
- Upload your first recipe by filling in the form with name, ingredients, and instructions.
- Browse recipes shared by others and give feedback theough comments.
- Search Recipes by category or ingredient.
- Add Ingredients Dynamically using a user-friendly form.
Through the development of SpiceShare, I gained valuable insights into full-stack development, database management, and UI/UX design. I also deepened my understanding of Flask and how to build modular, scalable web applications.
Moving forward, I plan to:
- Add user profiles and recipe ratings.
- Implement an advanced search/filter feature for recipes.
- Implement JWT authentication for API expansion.
Contributions to SpiceShare are welcome! Please follow these steps:
- Fork the repository
- Create a new feature branch:
git checkout -b feature/your-feature-name
- Make your changes and commit them:
git commit -m 'Add some feature'
- Push to the branch:
git push origin feature/your-feature-name
- Submit a pull request to the main branch
Please make sure to adhere to the project's coding standards.
If you're interested in recipe-sharing or similar projects, you may also enjoy:
This project is licensed under the MIT License.
If you have any questions or feedback, please open an issue on GitHub or contact the maintainer at [email protected].