Files
njaa-frontend/Gemini/NJAA-Architecture Stack.md

1.7 KiB

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