Architectural Constraints Demo 1 - COS301-SE-2026/Mealchemy GitHub Wiki
Architectural Constraints
Cost
All technologies, services, and hosting platforms must remain within free tier limits.
No paid APIs or services may be introduced.
Platform Support
The system must run on both iOS and Android
During development, the Flutter application can only be run on a physical device connected to the development machine until a simulator or emulator is configured (planned for sprint 2)
Security
No passwords, secrets, or API keys may be hardcoded in source files.
All credentials are injected at runtime via environment variables.
Database
PostgreSQL is accessed exclusively by the Spring Boot backend.
No other service writes to the database directly.
Flyway migration files are immutable once committed and run, all schema changes require a new versioned migration file
[However during development with Docker, the database volume can we wiped upon editing existing migration files]
Backend
The backend holds no server-side session state, all authentication state lives in the JWT token
The recommendation engine communicates exclusively through the Spring Boot REST API and has no database connection of its own
Layer Boundaries
Controllers may only call services, services may only call repositories, repositories may only interact with the database, no layer may skip or bypass an adjacent layer.
API Design
All backend endpoints must follow RESTful conventions, no business logic may be exposed through query parameters or non-standard HTTP methods.
Testing
All three services must maintain a minimum of 80% code coverage, no code may be merged without passing the full CI pipeline.