38 lines
1.7 KiB
Markdown
38 lines
1.7 KiB
Markdown
# 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 |