# Technical Assumptions ## Repository Structure: Monorepo The project will use a Monorepo to simplify dependency management and code sharing between modules. ## Service Architecture The application will be built as a single Python application (Monolith) with distinct modules. It will expose an internal REST API (using Flask or FastAPI) for communication. While initially consumed only by the link-building machine, this API should be designed with standard practices to allow for future consumption by other internal applications. ## Testing Requirements The project will require both Unit tests for individual functions and Integration tests to ensure modules and cloud services work together correctly. ## Additional Technical Assumptions and Requests - **Primary Language**: Python. - **Database**: SQLite for the MVP. - **Data Access**: A database-agnostic data access layer (Repository Pattern) must be used to facilitate a future migration to PostgreSQL. - **Cloud Integration**: The system will use Boto3 for S3, the Azure SDK for Blob Storage, and refactor existing code for Bunny.net and other specified cloud providers. - **Configuration**: A central JSON file will manage the workflow for each project. - **Credentials**: All secrets and API keys will be stored in and accessed from a .env file. - **API Design for Future Use**: The internal REST API must be designed with clean, well-documented endpoints and data contracts, anticipating potential future use by other internal systems on the network.