# Architecture Stack **General Guideline: ** Free and Open-Source, self-hostable with little to no limitations. ## Development - use git and make proper commits ## Frontend - Astro.js + React - Tailwind.css - Framer Motion ## Backend - Strapi (Core MIT License) - **User Management:** Strapi's built-in user authentication and role management system can handle user accounts for access control. - **Database:** PostgreSQL (PostgreSQL License) ## Other Functionalities ### Newsletter - **Email/Mailing List Manager:** `Listmonk` (AGPLv3 License) - A self-hosted, open-source newsletter and mailing list manager. ### File Downloads (e.g., Ebooks) - **Content Hosting:** Ebooks hosted and served via Strapi's Media Library. - **Access Control:** Downloads gated by Strapi user authentication. Users must be logged in via Strapi to access protected download links. - **Newsletter Integration:** User registration/login process within Strapi can be integrated with `Listmonk` (e.g., via API calls or webhooks) to automatically subscribe users to the newsletter upon signup, fulfilling the requirement for download access. # Deployment - **Docker Compose:** - Define services for `Strapi` (MIT License), `PostgreSQL` (PostgreSQL License), and `Listmonk` (AGPLv3 License). - Configure volumes for Strapi uploads, PostgreSQL data persistence, and Listmonk data persistence. - Ensure environment variables are managed for database connections, Strapi secrets, and Listmonk configuration. - Consider how the Astro.js frontend will be built and served, and how it interacts with Strapi's API for user authentication and protected content. - DO create docker-compose.yaml to make it deployable for Coolify