# 🍞 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

1. **Clone the repository:**
   ```bash
   git clone <repository-url>
   cd bakery-ia
   ```

2. **Set up environment variables:**
   ```bash
   cp .env.example .env
   # Edit .env with your specific configuration
   ```

3. **Run with Docker Compose:**
   ```bash
   docker-compose up --build
   ```

4. **Or run with Kubernetes (Docker Desktop):**
   ```bash
   # 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:

1. Set up your clouding.io Kubernetes cluster
2. Update image references to your container registry
3. Configure production-specific values
4. Deploy using the production kustomization:
   ```bash
   kubectl apply -k infrastructure/kubernetes/environments/production/
   ```

## 🤝 Contributing

1. Fork the repository
2. Create a feature branch
3. Make your changes
4. 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:

1. Restart your Kind cluster with the updated configuration:
   ```bash
   kind delete cluster --name bakery-ia-local
   kind create cluster --config kind-config.yaml --name bakery-ia-local
   ```

2. If needed, you can also increase the macOS system limits (though this shouldn't be necessary with the updated kind configuration):
   ```bash
   # 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.
