Monorepo Structure Migration¶
This document describes the migration to a monorepo structure for better organization and scalability.
New Structure¶
homepot-client/
├── backend/ # Python backend (FastAPI)
│ ├── homepot/ # Main Python package
│ ├── tests/ # Backend tests
│ ├── pyproject.toml # Python project configuration
│ └── requirements.txt # Python dependencies
│
├── frontend/ # React frontend (Vite + React)
│ ├── src/ # Frontend source code
│ ├── public/ # Static assets
│ └── package.json # npm dependencies
│
├── ai/ # AI/LLM services (future)
│ ├── models/ # Trained models
│ ├── services/ # AI service layer
│ └── README.md
│
├── docs/ # Shared documentation
├── scripts/ # Utility scripts
├── data/ # Data directory
├── .github/ # CI/CD workflows
├── docker-compose.yml # Multi-service orchestration
└── README.md # Main project documentation
Changes Made¶
Directory Moves¶
- Backend:
src/→backend/src/homepot/tests/→backend/tests/pyproject.toml→backend/pyproject.tomlrequirements.txt→backend/requirements.txt-
mypy.ini→backend/mypy.ini -
Frontend:
-
homepot-frontend/→frontend/ -
AI (New):
- Created
ai/directory for future ML/LLM services
File Updates¶
backend/pyproject.toml: Updated paths for packages, tests, and coveragescripts/*.sh: Updated to reference new paths- Documentation: Updated references to new structure
Benefits¶
- Clear Separation: Backend, frontend, and future AI services are clearly separated
- Scalability: Easy to add new services (mobile apps, AI services, etc.)
- Independent Development: Each service can be developed and deployed independently
- Better Organization: Follows industry best practices for full-stack projects
- Future-Ready: Prepared for AI/LLM integration
Migration for Developers¶
Backend Development¶
Frontend Development¶
Full Stack Development¶
Use docker-compose from the root:
CI/CD Updates¶
GitHub Actions workflows updated to reflect new paths: - Python tests now run from backend/ - Frontend tests now run from frontend/ - Scripts updated to work with new structure
Questions?¶
See the main README.md or contact the development team.