- β‘ FastAPI as the backend framework.
- π¦ Dependency management with Poetry.
- πΆ Code linting using Ruff.
- π Data validation with Pydantic.
- π SQLite as the database.
- π ORM free approach using raw SQL queries with the repository pattern.
- π Database migrations with SQLift.
- π JWT (JSON Web Token) authentication.
- π Registration with email based account activation.
- π Secure password hashing.
- π« Password recovery via email.
- π§ SMTP integration for sending emails.
- βοΈ Email templates using Jinja.
- β Unit testing with Pytest.
- π Nuxt.js as the frontend framework.
- π¦ TypeScript for static type checking.
- π Code formatting with Prettier.
- β¨ Code linting using ESLint.
- π¨ Styling with TailwindCSS.
- π§© Ready-to-use components from daisyUI.
- π Middleware for authentication handling.
- π Form validation with VeeValidate and Yup.
- π¨ Theme selector with 32 themes from daisyUI.
- π¨ Utility functions for alerts and notifications.
- β Call
showErrorAlert('message')
to show an error message. - β
Call
showSuccessAlert('message')
to show a success message. - π‘ Call
showInfoAlert('message')
to show an info message. β οΈ CallshowWarningAlert('message')
to show a warning message.
- β Call
- π CI/CD pipeline with GitHub Actions.
- π§ͺ Automated testing before deployment.
- π Code coverage reporting with Codecov
- π Ready-to-use workflow configurations in .github/workflows/
- π’ Deployment instructions using Docker Compose.
- π¦ Traefik as a reverse proxy.
You can just fork or clone this repository and use it as is.
β¨ It just works. β¨
You need to configure the environment variables to set your own values.
You can copy the example .env
files:
cp .env.default .env
And then edit the .env
file and set your own values.
docker-compose -f docker-compose.dev.yml up
docker-compose up
This project has a CI/CD pipeline with GitHub Actions. You can see the workflow configuration in .github/workflows/. To use it, you need to set the following secrets in your repository settings:
CODECOV_TOKEN # Your Codecov token
HOST # Your SSH host
SSH_KEY # Your SSH private key
USERNAME # Your SSH username
The communication between FastAPI and Nuxt.js is done via plugin `api' which is located in frontend/app/plugins/api.ts. This plugin uses the $fetch to make requests to the FastAPI backend. You can use this plugin in two ways:
const { data: users } = await useAPI<User[]>('/users', {
method: 'get',
...
})
await useNuxtApp().$api<{ token: string }>('/auth/login', {
method: 'POST',
...
})
This project is licensed under the terms of the MIT license.