1
0

PROJECT_CONTEXT.md 4.5 KB

Project Context: Local Food AI

🎯 Vision Statement

A local food AI that provides full nutritional value information on any food and can generate complete menu proposals based on the user's specification. The system is designed with a strict privacy-first focus, ensuring no user data leaves the server, and fits within specific hardware limits.

🏗️ Architecture & Tech Stack

Remote Environment

  • Server: Ubuntu 24.04 VM at 192.168.130.170 (8 vCPUs, 30 GB RAM, no dedicated GPU). Accessed via SSH as francois or root.
  • Containerization: Docker (for backend/frontend) or native deployment.
  • LLM Engine: Ollama (for running lightweight, quantized local language models like mistral or llama3-8b).
  • Database Server: MySQL (for user data, saved lists, and nutritional database).

Frontend Web Interface

  • Framework: Streamlit (Python)
  • Purpose: To provide an interactive chat interface for the AI, search functionality for food nutrition, user account management, and food combination calculators.

Local Environment

  • Workspace: c:\Users\lanfr144\Documents\DOPRO1\Antigravity\Food
  • OS: Windows

Python Environment

Python will be used for scripting, data manipulation, and interacting with the LLM and the Database. Required libraries:

  • streamlit: To build the web application.
  • ollama: For querying local models.
  • pandas: For data processing (e.g., ingesting nutrition CSVs).
  • mysql-connector-python or SQLAlchemy: For database access.
  • Web Search Tool: (e.g., DuckDuckGo API wrapper) for the AI to dynamically gather external information anonymously.

🔐 Core Requirements & Privacy

  • User Accounts: Secure login and registration system.
  • Data Privacy: No user data leaves the server.
  • Repository: Public Git repository at https://git.btshub.lu named LocalFoodAI_<your IAM>. Contains a strict .gitignore. Teacher (evegi144) added as collaborator.
  • Ease of Use: Anyone should be able to clone the repo and run it easily (via Docker/scripts).

🚀 Key Features (User Stories)

  1. Nutritional Information: View complete macros, minerals, vitamins, etc., for any food.
  2. Food Combinations: Enter quantities for multiple foods to get a combined nutritional overview. Store and edit these in named lists.
  3. Nutrient Search: Search for specific nutrients and sort foods containing them.
  4. AI Menu Proposals: Get AI-generated menu proposals based on nutritional goals and constraints (e.g., allergies).
  5. AI Nutrition Chat: Freely chat with the AI about nutrition.
  6. Anonymous Web Search: The AI can perform local background web searches for missing information.

🚀 Installation Prerequisites & Deployment

Server Prerequisites (Ubuntu 24.04 Native)

  • gcc and build-essential.
  • python3-venv, python3-dev, and python3-pip.
  • mysql-server and curl.

Automated Deployment (deploy.sh)

Executing this file on a naked server will automatically:

  1. Fetch and install all apt-level system prerequisites.
  2. Install Ollama natively.
  3. Push custom configurations (my.cnf) to MySQL server and configure the local virtual environment.
  4. Pip-install the project dependencies.

💾 Database Configuration & Data Loading

1. Initial MySQL Setup

  • init.sql script loads into MySQL to create the database, users, and tables for User Profiles, Food Combos, and the Nutrition Data.

2. Data Import (CSV)

  • A nutritional database .csv ingestion script (using pandas) populates the MySQL tables.

3. Search Capabilities

  • The MySQL database must be optimized for text/context queries to support the AI's Retrieval-Augmented Generation (RAG).

📝 Roadmap & Next Steps (Sprints)

  • Sprint 1 (Foundation): Initialize Git repository (LocalFoodAI_<IAM>), setup .gitignore, finalize deploy.sh, initialize MySQL (init.sql), and build Streamlit user login.
  • Sprint 2 (Data Core): Import food nutritional CSV via Pandas into MySQL. Build Streamlit pages for food search and details.
  • Sprint 3 (Combinations): Implement Streamlit logic to combine foods by gram amounts and save lists to MySQL.
  • Sprint 4 (Local AI): Deploy lightweight Ollama models and build the Streamlit chat interface.
  • Sprint 5 (Advanced AI): Implement RAG for menu proposals and integrate anonymous web search tool.
  • Sprint 6 (Polish): Thorough testing and perfect the README.md.

Generated by Antigravity. Update this file as technical requirements and data schemas evolve.