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).
- ⚡ 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.
- Create or copy the
.env
file at the project root and fill in the required variables (seedeployment.md
for details). - Start the development environment:
make dev
- Open your browser:
- Backend API docs: http://localhost:8000/docs
- Frontend: http://localhost:5173
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.
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.
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 docs: backend/README.md.
Frontend docs: frontend/README.md.
Deployment docs: deployment.md.
General development docs: development.md.
This includes using Docker Compose, custom local domains, .env
configurations, etc.
Check the file release-notes.md.
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
.
The Full Stack FastAPI Template is licensed under the terms of the MIT license.