MealMasterMind

Meal Master is a comprehensive system that allows you to explore various recipes and their ingredients. Based on your dietary preferences, it generates a personalized shopping list to help you buy the necessary ingredients. Additionally, it offers more features to enhance your meal planning experience.

Stars
4

Meal Master Mind

will be refactored soon

1- will use more services and separate these services into more services !! Currently for example user service is also sending emails!! (will be fixed) adding logger service for example

2- will use amqp and gRPC

3- different DB for some services (will add mongoDB soon)

4- will make services more light

Structure:

Microservices Breakdown:

Recipe Service (FastAPI)

    Responsibilities: Handle all operations related to recipes such as creating, reading, updating, and deleting recipes.
    Features:
        User authentication and authorization for recipe management (JWT-based).
        Endpoints to add new recipes, get recipes by ID, list all recipes, and update/delete recipes.
        Support for tagging recipes with dietary preferences (e.g., vegan, gluten-free).
        Allow users to upload images and ingredients.

Meal Planning Service (Golang)

    Responsibilities: Manage the meal planning feature, allowing users to create meal plans based on recipes.
    Features:
        Create, retrieve, update, and delete meal plans.
        Generate meal plans based on user preferences, dietary restrictions, and selected recipes.
        Allow users to customize meal plans with meals for specific days.

User Service (FastAPI)

    Responsibilities: Manage user accounts and profiles.
    Features:
        User registration, login, and profile management.
        User preferences for dietary restrictions and favorite recipes.
        Integration with third-party authentication (e.g., OAuth with Google/Facebook).

Shopping List Service (Golang)

    Responsibilities: Generate shopping lists based on selected recipes or meal plans.
    Features:
        Create a shopping list from selected recipes.
        Allow users to manage and edit their shopping lists.
        Suggest recipes based on ingredients users already have.

Notification Service (FastAPI)

    Responsibilities: Send notifications to users about meal planning reminders, recipe suggestions, etc.
    Features:
        Use a message queue (e.g., RabbitMQ) to communicate with other services.
        Send push notifications or emails to users regarding their meal plans.

Architecture:

API Gateway: Use an API Gateway (like Kong or Traefik) to route requests to the appropriate microservice based on the endpoint.
Database: Use a shared database like PostgreSQL for persistent storage, or have separate databases for each service depending on requirements.
Containerization: Use Docker to containerize the microservices for easier deployment and management.

Additional Features:

Include a search functionality to find recipes based on ingredients, tags, or popularity.
Allow users to rate and comment on recipes.

Technologies Used:

FastAPI: For fast and efficient API development.
Golang: For high-performance services (especially the Meal Planning and Shopping List services).
Database: PostgreSQL
Docker: For containerization of microservices.
Message Queue: RabbitMQ or Kafka for communication between services (if needed).

bugs:

pre-commit cant find any files (use pre-commit run --all-files ) to do this manually before pushing until the pre-commit debug