This commit adds significant UX improvements to multiple onboarding steps: **1. Recipes Setup Step:** - Fixed double next button issue (removed duplicate navigation button) - Filtered finished products dropdown to show only 'finished_product' type ingredients - Users can now only select appropriate finished products for recipes **2. File Upload Step:** - Added comprehensive validation success state with detailed feedback - Shows file name, rows found, and unique products count after validation - Enhanced error display with helpful troubleshooting tips - Clear visual distinction between file selected, validation success, and processing states - Improved user confidence by clearly communicating validation results **3. Completion Step:** - Complete redesign with animated success icon and gradient text - Added 4 quick access cards for Analytics, Inventory, Procurement, and Production - Interactive hover effects on quick access cards (scale and shadow) - New "Tips for Success" section with actionable advice - Enhanced primary CTA button with better sizing and prominence - More engaging and valuable final step that guides users to next actions All changes use global CSS variables for proper dark mode support and maintain consistent design language throughout the application.
🍞 Bakery IA - Multi-Service Architecture
Welcome to Bakery IA, an advanced AI-powered platform for bakery management and optimization. This project implements a microservices architecture with multiple interconnected services to provide comprehensive bakery management solutions.
🚀 Quick Start
Prerequisites
- Docker Desktop with Kubernetes enabled
- Docker Compose
- Node.js (for frontend development)
Running the Application
-
Clone the repository:
git clone <repository-url> cd bakery-ia -
Set up environment variables:
cp .env.example .env # Edit .env with your specific configuration -
Run with Docker Compose:
docker-compose up --build -
Or run with Kubernetes (Docker Desktop):
# Enable Kubernetes in Docker Desktop # Run the setup script ./scripts/setup-kubernetes-dev.sh
🏗️ Architecture Overview
The project follows a microservices architecture with the following main components:
- Frontend: React-based dashboard for user interaction
- Gateway: API gateway handling authentication and routing
- Services: Multiple microservices handling different business domains
- Infrastructure: Redis, RabbitMQ, PostgreSQL databases
🐳 Kubernetes Infrastructure
🛠️ Services
The project includes multiple services:
- Auth Service: Authentication and authorization
- Tenant Service: Multi-tenancy management
- Sales Service: Sales processing
- External Service: Integration with external systems
- Training Service: AI model training
- Forecasting Service: Demand forecasting
- Notification Service: Notifications and alerts
- Inventory Service: Inventory management
- Recipes Service: Recipe management
- Suppliers Service: Supplier management
- POS Service: Point of sale
- Orders Service: Order management
- Production Service: Production planning
- Alert Processor: Background alert processing
📊 Monitoring
The system includes comprehensive monitoring with:
- Prometheus for metrics collection
- Grafana for visualization
- ELK stack for logging (planned)
🚀 Production Deployment
For production deployment on clouding.io with Kubernetes:
- Set up your clouding.io Kubernetes cluster
- Update image references to your container registry
- Configure production-specific values
- Deploy using the production kustomization:
kubectl apply -k infrastructure/kubernetes/environments/production/
🤝 Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
🔧 Troubleshooting
macOS "too many open files" error
If you encounter the "too many open files" error when running the application on macOS:
failed to create fsnotify watcher: too many open files
This is related to system limits on file system watchers. The kind configuration has been updated to handle this, but if you still encounter issues:
-
Restart your Kind cluster with the updated configuration:
kind delete cluster --name bakery-ia-local kind create cluster --config kind-config.yaml --name bakery-ia-local -
If needed, you can also increase the macOS system limits (though this shouldn't be necessary with the updated kind configuration):
# Check current limits sysctl kern.maxfiles kern.maxfilesperproc # These are usually set high enough by default, but if needed: # sudo sysctl -w kern.maxfiles=65536 # sudo sysctl -w kern.maxfilesperproc=65536
📄 License
This project is licensed under the MIT License.