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.