# Mnemo Cards Backend - Project Configuration ## Project Overview - **Name**: mnemo_cards_backend - **Type**: Flutter/Dart backend server using Shelf framework - **Purpose**: Backend API server for Mnemo Cards application - **Architecture**: Clean architecture with dependency injection ## Tech Stack - **Language**: Dart 3.0+ - **Framework**: Shelf (HTTP server) - **Database**: Isar (local database) - **Dependency Injection**: GetIt + Injectable - **Code Generation**: Build Runner - **Testing**: Dart Test + Mockito - **Authentication**: JWT tokens, Google APIs - **Payment**: YooKassa integration ## Project Structure - `lib/` - Main source code - `test/` - Unit tests - `certs/` - SSL certificates for HTTPS - `backup/` - Database backups - `python_folder/` - Python utilities - `target_folder/` - Build artifacts ## Key Dependencies - `mnemo_cards_common` - Shared common code - `mnemo_cards_common_backend` - Backend-specific common code - `isar` - Database - `shelf_*` - HTTP server components - `get_it` + `injectable` - Dependency injection - `googleapis` - Google services integration - `yookassa_client` - Payment processing ## Commands ```bash # Development ./run_dev.sh # Start development server ./restart_dev.sh # Restart development server # Production ./run_http_production.sh # HTTP production server ./run_https_production.sh # HTTPS production server # Code Generation ./codegen.sh # Run build_runner flutter pub run build_runner build --delete-conflicting-outputs # Testing flutter test # Run all tests flutter test test/ # Run specific test directory # Database # Backup files are in backup/ directory # Database files are in isar/ directory # SSL Certificates ./certs/generate_server.sh # Generate server certificates ./certs/generate_domain_cert.sh # Generate domain certificates ``` ## Environment Variables - SSL certificates in `certs/` directory - Database files in `isar/` directory - Backup files in `backup/` directory ## Architecture Guidelines - Use `yx_state` and `yx_scope` for state management - Follow clean architecture principles - Reference `../mnemo_cards` app for design/features (don't copy architecture) - Use dependency injection with GetIt/Injectable - Implement proper error handling and validation ## Testing Requirements - Write unit tests for all functionalities - Use Mockito for mocking dependencies - Test coverage for business logic - Integration tests for API endpoints ## Acceptance Criteria - [ ] Builds successfully (`flutter build`) - [ ] All linters pass (`dart analyze`) - [ ] All existing tests pass (`flutter test`) - [ ] New tests cover new functionality - [ ] Code generation runs without errors (`./codegen.sh`) - [ ] Server starts and responds to requests - [ ] SSL certificates are valid - [ ] Database operations work correctly ## File Maintenance - Update `PROGESS.md` after completing major steps - Update `TODO.md` with current tasks and priorities - Maintain `workflow_state.md` for autonomous operation state - Keep backup files organized in `backup/` directory ## Safety Constraints - Never run destructive commands without explicit approval - Always backup database before migrations - Use HTTPS in production environments - Validate all user inputs - Implement proper error handling for external API calls