A comprehensive web application for managing restaurant food costs, ingredients, recipes, batches, dishes, inventory, and utilities.
- Secure JWT-based authentication with HTTP-only cookies
- Role-based access control (Admin/User roles)
- One-time setup wizard for initial admin user
- Track ingredients with units and costs
- Categorize ingredients for better organization
- Cost tracking for accurate recipe pricing
- Create reusable recipe templates
- Define ingredient quantities and ratios
- Calculate total recipe costs automatically
- Track actual prep work based on recipes
- Record yields and labor time
- Support for portion breakdowns (half, quarter batches)
- Create menu items using batch portions
- Set sale prices and calculate profit margins
- Track food cost vs. sale price
- Daily inventory tracking with par levels
- Visual indicators for below/near par items
- Task assignment and time tracking
- Day finalization for record keeping
- Track monthly utility costs (power, gas, water)
- Prorate costs for accurate dish pricing
- Admin-only utility management
- Clone the repository:
git clone https://github.com/Xaque8787/roux
cd roux- Create environment file:
cp .env.example .env
# Edit .env with your settings- Start the application:
docker-compose up -d-
Access the application at
http://localhost:8000 -
Complete the initial setup by creating an admin user
Note: The docker-compose.yml file uses pre-built images from GitHub Container Registry. For local development with builds, use docker-compose.local.yml instead.
Use the included startup script for local development:
./start.shThe script will:
- Create and activate a virtual environment
- Install all dependencies
- Run database migrations if needed
- Start the development server on http://localhost:8000
- Navigate to the application URL
- You'll be redirected to the setup page
- Create the first admin user
- Default categories will be created automatically
For detailed documentation on each feature, see the docs folder:
Complete guide to setting up and managing ingredients, including:
- Purchase configurations (single items, cases, breakable units)
- Unit conversions and baking measurements
- Vendor management and pricing methods
- Cost calculations and tracking
Detailed instructions for building recipes:
- Adding ingredients with quantities and units
- Using batch portions in recipes
- Cost calculations and recipe organization
- Multi-stage production workflows
Comprehensive guide to production batches:
- Yield configuration (fixed and variable)
- Labor tracking and cost estimation
- Batch scaling options
- Historical performance analysis
Everything about creating and costing dishes:
- Building dishes from batch portions
- Direct ingredient additions
- Multiple cost calculation methods
- Profit margin and food cost percentage analysis
Complete inventory management system:
- Inventory item setup and par levels
- Daily counting and task creation
- Task assignment and time tracking
- Reports and performance analysis
- Go to Ingredients section
- Add ingredients with their units and costs
- Assign categories for better organization
- Go to Recipes section
- Create recipes by selecting ingredients and quantities
- View recipe details including total cost
- Go to Batches section
- Select a recipe and enter yield amount and labor time
- Optionally enable portion breakdowns
- Go to Dishes section
- Create dishes using portions from batches
- Set sale prices to calculate profit margins
- Go to Inventory section
- Add inventory items with par levels
- Start a new day and assign employees
- Enter daily quantities (items below par are highlighted)
- Create and track tasks
- Finalize the day when complete
- Go to Utilities section
- Add monthly costs for utilities
- View daily prorated costs
- FastAPI: Modern Python web framework
- SQLAlchemy: ORM for database operations
- Pydantic: Data validation and serialization
- JWT: Secure authentication
- Jinja2: Server-side templating
- Bootstrap 5: Responsive UI framework
- Font Awesome: Icons
- Vanilla JavaScript: Form enhancements
- SQLite: Default database (production-ready)
- PostgreSQL: Optional for larger deployments
- Docker: Containerized deployment
- Gunicorn: Production WSGI server
- Multi-stage builds: Optimized container images
- HTTP-only cookies for JWT storage
- Password hashing with bcrypt
- Role-based access control
- CSRF protection via SameSite cookies
- Input validation and sanitization
- Database files stored in
./datadirectory - Docker volume mounting for data persistence
- Automatic database table creation
GET /setup- Initial setup formPOST /setup- Create admin userGET /login- Login formPOST /login- Authenticate userGET /logout- Logout user
/ingredients- Ingredient management/recipes- Recipe management/batches- Batch production/dishes- Menu item management/inventory- Daily inventory tracking/utilities- Utility cost management (admin only)
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is licensed under the GNU Affero General Public License v3.0 - see the LICENSE file for details.
For support, please create an issue in the repository or contact the development team.
