Skip to content

JazzDataSolutions/brain2gain

Repository files navigation

Full Stack FastAPI - ERP AND Store

CI Coverage

Brain2Gain es una tienda de suplementos que busca transformarse en una plataforma de comercio electrónico. Además de ofrecer una landing page que describa los productos y la misión de la marca, se planea que el sitio cuente con:

- E-commerce para venta de suplementos (con o sin registro).
- Panel de control (dashboard) de ventas para monitorear métricas y pedidos.
- Gestión de inventario y recursos, con distintos roles de usuario (admin, empleado, etc.).
- Registro de usuarios opcional para un seguimiento más personalizado, ofertas especiales y compra recurrente.
- Posibilidad de comprar como invitado, sin necesidad de iniciar sesión (guest checkout).

El proyecto se basa en la plantilla “Full Stack FastAPI + React” que incluye Docker Compose para entornos de desarrollo y producción, JWT para autenticación y configuración inicial para tests (Pytest y Playwright).

Technology Stack and Features

  • FastAPI for the Python backend API.
    • 🧰 SQLModel for the Python SQL database interactions (ORM).
    • 🔍 Pydantic, used by FastAPI, for the data validation and settings management.
    • 💾 PostgreSQL as the SQL database.
  • 🚀 React for the frontend.
    • 💃 Using TypeScript, hooks, Vite, and other parts of a modern frontend stack.
    • 🎨 Chakra UI for the frontend components.
    • 🤖 An automatically generated frontend client.
    • 🧪 Playwright for End-to-End testing.
    • 🦇 Dark mode support.
  • 🐋 Docker Compose for development and production.
  • 🔒 Secure password hashing by default.
  • 🔑 JWT (JSON Web Token) authentication.
  • 📫 Email based password recovery.
  • ✅ Tests with Pytest.
  • 📞 Traefik as a reverse proxy / load balancer.
  • 🚢 Deployment instructions using Docker Compose, including how to set up a frontend Traefik proxy to handle automatic HTTPS certificates.
  • 🏭 CI (continuous integration) and CD (continuous deployment) based on GitHub Actions.

Quickstart

  1. Create or copy the .env file at the project root and fill in the required variables (see deployment.md for details).
  2. Start the development environment:
    make dev
  3. Open your browser:

Configure

You can then update configs in the .env files to customize your configurations.

Before deploying it, make sure you change at least the values for:

  • SECRET_KEY
  • FIRST_SUPERUSER_PASSWORD
  • POSTGRES_PASSWORD

You can (and should) pass these as environment variables from secrets.

Read the deployment.md docs for more details.

Generate Secret Keys

Some environment variables in the .env file have a default value of changethis.

You have to change them with a secret key, to generate secret keys you can run the following command:

python -c "import secrets; print(secrets.token_urlsafe(32))"

Copy the content and use that as password / secret key. And run that again to generate another secure key.

Input Variables

Copier will ask you for some data, you might want to have at hand before generating the project.

But don't worry, you can just update any of that in the .env files afterwards.

The input variables, with their default values (some auto generated) are:

  • project_name: (default: "FastAPI Project") The name of the project, shown to API users (in .env).
  • stack_name: (default: "fastapi-project") The name of the stack used for Docker Compose labels and project name (no spaces, no periods) (in .env).
  • secret_key: (default: "changethis") The secret key for the project, used for security, stored in .env, you can generate one with the method above.
  • first_superuser: (default: "[email protected]") The email of the first superuser (in .env).
  • first_superuser_password: (default: "changethis") The password of the first superuser (in .env).
  • smtp_host: (default: "") The SMTP server host to send emails, you can set it later in .env.
  • smtp_user: (default: "") The SMTP server user to send emails, you can set it later in .env.
  • smtp_password: (default: "") The SMTP server password to send emails, you can set it later in .env.
  • emails_from_email: (default: "[email protected]") The email account to send emails from, you can set it later in .env.
  • postgres_password: (default: "changethis") The password for the PostgreSQL database, stored in .env, you can generate one with the method above.
  • sentry_dsn: (default: "") The DSN for Sentry, if you are using it, you can set it later in .env.

Backend Development

Backend docs: backend/README.md.

Frontend Development

Frontend docs: frontend/README.md.

Deployment

Deployment docs: deployment.md.

Development

General development docs: development.md.

This includes using Docker Compose, custom local domains, .env configurations, etc.

Release Notes

Check the file release-notes.md.

Documentation

La documentación completa (arquitectura, plan de trabajo, endpoints, pruebas, despliegue) se genera con Sphinx.

Para compilarla localmente:

cd docs
pip install -r requirements.txt
make html

Los archivos HTML resultantes se ubican en docs/_build/html.

License

The Full Stack FastAPI Template is licensed under the terms of the MIT license.

About

This repo is designed for the consulting project of the Brain2Gain Company

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published