A modern full-stack application template built for quick and efficient project setup.
- Python β Core programming language for backend.
- Litestar β High-performance ASGI framework for modern Python web apps.
- Piccolo β Async ORM and query builder with migration support.
- PostgreSQL β Advanced open-source relational database known for reliability.
- GraphQL β API query language providing a more efficient alternative to REST.
- TypeScript β Core language for frontend, adding static types to JavaScript.
- Next.js β React framework for production-ready applications.
- Tailwind CSS β Utility-first CSS framework for rapid UI development.
- Chart.js β Simple yet flexible JavaScript charting library.
The primary prerequisites for this project are:
- Docker Desktop: Provides Docker Engine and Docker Compose.
- Task: A task runner / build tool used for managing common development workflows.
- pre-commit: A tool for managing and running pre-commit hooks.
Alternatively, install the components separately:
- Docker Engine: Version 28 or later.
- Docker Compose: Version 2 (V2) or later.
Verify the installation by running:
docker --version
docker compose version
task --version
pre-commit --version-
Copy the example environment files:
cp .env.example .env cp backend/.env.example backend/.env cp frontend/.env.local.example frontend/.env.local
-
Edit the environment files (
.env,backend/.env, andfrontend/.env.local) to set the required secrets and configuration values (such as database URLs, API keys, etc.). -
Install pre-commit hooks:
pre-commit install
-
Build the Docker images:
task docker:build
-
Start all services:
task docker:up
Note: Wait for the frontend service to be fully running.
-
Generate frontend code based on the backend API:
task frontend:codegen
-
Create an initial admin user:
task backend:create-user
Note: Follow the prompts. Use your email address as the username. You can leave the email field blank when prompted later.
-
The services will be available at:
-
To stop and remove containers:
task docker:down
This project uses Task to simplify common development workflows. The main Taskfile.yml in the project root provides commands for:
- Managing the Docker environment (for example, building, starting, or stopping services).
- Running development tasks within the
backendandfrontendservices (such as linting, formatting, or testing).
To list all available tasks, run:
task --listRefer to the README.md files in the backend and frontend directories for service-specific task details.
If the frontend container crashes when installing dependencies:
- Stop all services:
task docker:down
- Open a shell in a temporary frontend container:
task frontend:bash
- Inside the container, install the dependencies.
- Build all services again:
task docker:build
- Start all services:
task docker:up
This project uses GitHub Actions for continuous integration and validation:
- PR Validation: Enforce PR title conventions and limit PR size.
- CI Workflow: Run tests and linting on both frontend and backend.
For detailed information about our CI/CD workflows, see the workflows documentation.
All versioned changes are documented on the GitHub Releases page.
This project is licensed under the MIT License.