A fullstack MERN application for managing your home bar inventory, exploring classic and modern cocktail recipes.
- About the Project
- Tech Stack
- Prerequisites
- Installation
- Usage
- Project Structure
- Future Plans
- Contributing
- Acknowledgments
Barchemy is a liquor cabinet management system. It helps users track ingredients with quantities. Users can explore recipes, mix cocktails, and automatically deduct used amounts from inventory. The app includes about 90 recipes and 150 ingredients.
Data comes from the International Bartenders Association (IBA) official cocktails. Sourced from rasmusab/iba-cocktails (IBA website version). Processed for standardization using KNIME for analysis and Python for cleaning and unit conversions.
This is a MERN stack application. Backend uses Express.js with modular structure. Frontend built with React, frontend routing and Tailwind CSS. Data processing scripts prepare and populate the MongoDB database.
| Category | Technologies |
|---|---|
| Frontend | |
| Backend | |
| Database | |
| Containerization (in progress) | |
| CI/CD (in progress) | |
| Cloud Infrastructure (in progress) |
- Node.js and npm.
- MongoDB (local or cloud instance).
- Python (v3.0 or later) for data processing.
- Git for cloning the repository.
git clone https://github.com/bramlak/barchemy.git
cd barchemy
cp .env.exapmle .env
Modify .env variables
- Navigate to the data directory:
cd data - Install Python dependencies:
pip install -r requirements.txt - Generate processed data (creates JSON files for units, recipes, ingredients):
python scripts/generate_processed_data.py - Populate the MongoDB database (ensure MongoDB is running):
python scripts/populate_db.py
- Navigate to the backend directory:
cd ../backend - Install dependencies:
npm install - Start the server:
npm start
- Navigate to the frontend directory:
cd ../frontend - Install dependencies:
npm install - Start the development server:
npm run dev
- Access the app at
http://localhost:5173(default frontend port). - Use the Home page for overview.
- Add/edit ingredients and quantities, browse and filter recipes on the Bar page.
- Select a recipe to mix: app deducts ingredients from inventory.
- About page provides more details.
For API usage, backend runs at http://localhost:3000. Endpoints include /ingredient, /recipe.
- data/: Raw and processed data, scripts for cleaning and DB population.
- Raw: CSV from IBA source.
- Processed: JSON for DB collections.
- Config: Units and conversions.
- Scripts: Python files for processing.
- Analysis: KNIME workflow for data exploration.
- backend/: Express.js server.
- Modules: Ingredient, Recipe, Unit (controllers, models, etc.).
- Core: Error handling.
- Routes: API endpoints.
- frontend/: React app with Tailwind CSS.
- Pages: Home, Bar, About.
- Components: Inventory, Recipe filters, etc.
- API: Hooks for data fetching.
- infrastructure/: Planned for Terraform and ECS.
- Complete frontend features with advanced search.
- Implement infrastructure as code using Terraform for AWS ECS deployment.
- Set up CI/CD pipelines with GitHub Actions for automated builds and deployments.
- User system with recipe history, inventory storage and more
Fork the repo. Create a feature branch. Commit your changes. Push to the branch. Open a pull request.
- Data from IBA Cocktails.