An experimental aiohttp microservice for urban beehive management and technology exploration.
CityHive is a synthetic yet realistic sandbox project designed to explore modern Python web development patterns, architectural approaches, and DevOps practices. While grounded in the domain of urban beehive management, this project serves as a comprehensive technology playground rather than a production application.
- Python 3.12+
- Docker and Docker Compose
-
Clone and setup dependencies
git clone https://github.com/sergeyklay/cityhive.git cd cityhive uv sync --all-groups -
Start the application
docker compose up --build
-
Verify everything works
make test
The application will be available at http://localhost:8080.
This project serves as an experimental playground for:
- Clean Architecture: Domain-driven design with strict layer separation
- Async Python: Modern aiohttp web framework with SQLAlchemy async ORM
- Developer Experience: AI-assisted development, comprehensive tooling
- Production Practices: Docker, CI/CD, monitoring, comprehensive testing
make test-unit # Run unit tests with coverage
make test-integration # Running integration tests (needs DB to be up)
make test # Run all tests
make format # Format code with ruff
make lint # Run linter checks
make migrate # Apply database migrations📖 Comprehensive guides available in the docs/ folder:
- Development Guide - Setup, workflows, testing, and best practices
- Architecture - Clean architecture principles, layer separation, and design patterns
- Technology Stack - Detailed technology choices and rationale
- Coding Standards - Code style, naming conventions, and best practices
- AI Integration - Cursor AI setup, MCP server, and AI-assisted development
- Logging - Structured logging with JSON output
- Python 3.12 with aiohttp web framework
- PostgreSQL + PostGIS with SQLAlchemy async ORM and asyncpg driver
- Docker containerization and uv package management
- Pytest testing with ruff linting and formatting
See CONTRIBUTING.md for development guidelines and contribution process.
This project is licensed under the MIT License - see the LICENSE file for details.