Skip to content

bramlak/barchemy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

80 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Barchemy

Codecool

Logo

A fullstack MERN application for managing your home bar inventory, exploring classic and modern cocktail recipes.

Request Feature

Table of Contents

  1. About the Project
  2. Tech Stack
  3. Prerequisites
  4. Installation
  5. Usage
  6. Project Structure
  7. Future Plans
  8. Contributing
  9. Acknowledgments

About the Project

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.

Logo

Tech Stack

Category Technologies
Frontend React Vite Tailwind CSS
Backend Express.js
Database MongoDB
Containerization (in progress) Docker Kubernetes
CI/CD (in progress) GitHub Actions
Cloud Infrastructure (in progress) AWS Terraform

Prerequisites

  • Node.js and npm.
  • MongoDB (local or cloud instance).
  • Python (v3.0 or later) for data processing.
  • Git for cloning the repository.

Installation

Clone the Repository

git clone https://github.com/bramlak/barchemy.git
cd barchemy

Configure environment variables

cp .env.exapmle .env

Modify .env variables

Data Processing

  1. Navigate to the data directory:
    cd data
    
  2. Install Python dependencies:
    pip install -r requirements.txt
    
  3. Generate processed data (creates JSON files for units, recipes, ingredients):
    python scripts/generate_processed_data.py
    
  4. Populate the MongoDB database (ensure MongoDB is running):
    python scripts/populate_db.py
    

Backend Setup

  1. Navigate to the backend directory:
    cd ../backend
    
  2. Install dependencies:
    npm install
    
  3. Start the server:
    npm start
    

Frontend Setup

  1. Navigate to the frontend directory:
    cd ../frontend
    
  2. Install dependencies:
    npm install
    
  3. Start the development server:
    npm run dev
    

Usage

  • 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.

Project Structure

  • 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.

Future Plans

  • 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

Contributing

Fork the repo. Create a feature branch. Commit your changes. Push to the branch. Open a pull request.

Acknowledgments

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors