A full-stack application tracker built with FastAPI (backend) and React (frontend).
This project can be run in two ways: using a Dev Container (recommended) or directly on your host machine.
Before starting, you need to configure the environment variables:
-
Environment Configuration: Create a
.envfile from the example template:cp .env.example .env
Edit the
.envfile and set the following required variables:POSTGRES_PASSWORD- Set a secure password for your databaseSECRET_KEY- Generate a long, random secret key for JWT authenticationPOSTGRES_HOST- Usepostgresfor dev container orlocalhostfor host setupPOSTGRES_HOST_TEST- Usedb-testfor dev container orlocalhostfor host setup
Other important variables:
POSTGRES_USER,POSTGRES_DB- Database name and user (can keep defaults)DEBUG- Enable/disable debug mode
This project uses a script to automatically generate a TypeScript client for the frontend based on the FastAPI OpenAPI schema. The scripts/generate-client.sh script:
- Extracts the OpenAPI JSON schema from the running FastAPI application
- Uses the
hey-apilibrary to generate TypeScript client code - Creates type-safe API methods and models for the frontend
Note: The client generation requires the backend dependencies to be installed (Poetry) and is automatically run during dev container setup.
This project follows the Conventional Commits specification for commit messages. This ensures consistent, readable commit history and enables automated changelog generation.
Format: <type>[optional scope]: <description>
Examples:
feat(auth): add JWT token refresh functionalityfix(db): resolve connection pool timeout issuedocs: update API documentation for user endpoints
See the full specification at: https://www.conventionalcommits.org/en/v1.0.0/
Requirements:
- Docker Desktop
- Visual Studio Code
- Dev Containers extension for VS Code
Steps:
-
Clone the repository:
git clone https://github.com/Dima-Bulavenko/application_tracker.git cd application_tracker -
Open in VS Code:
code . -
Start Dev Container:
- VS Code will detect the dev container configuration
- Click "Reopen in Container" when prompted, or
- Use Command Palette (
Ctrl+Shift+P): "Dev Containers: Reopen in Container"
-
Wait for container setup:
- The container will automatically:
- Install Python 3.12 with Poetry
- Install Node.js 23
- Install all Python dependencies (backend)
- Install all Node.js dependencies (frontend)
- Generate frontend API client using hey-api
- Set up PostgreSQL database
- Configure pgAdmin for database management
- The container will automatically:
-
Start the application:
Backend (FastAPI):
cd backend fastapi dev --host "0.0.0.0" --port "8000"
Frontend (React):
cd frontend npm run dev
- Backend API: http://localhost:8000
- Frontend: http://localhost:5173
- pgAdmin: http://localhost:1654
- Email:
admin@pgadmin.com - Password:
password
- Email:
- PostgreSQL: localhost:5432
- Test Database: localhost:5435
Requirements:
- Python 3.12
- Poetry 1.8.3
- Node.js 23
- PostgreSQL server
Steps:
-
Clone the repository:
git clone https://github.com/Dima-Bulavenko/application_tracker.git cd application_tracker -
Update environment configuration: Edit your
.envfile to use localhost for database connection:POSTGRES_HOST=localhost POSTGRES_PORT=5432 # Update other variables as needed
-
Setup PostgreSQL:
- Install and start PostgreSQL on your system
- Create databases:
CREATE DATABASE app_tracker; CREATE DATABASE app_tracker_test; CREATE USER app_tracker_user WITH PASSWORD '123456'; GRANT ALL PRIVILEGES ON DATABASE app_tracker TO app_tracker_user; GRANT ALL PRIVILEGES ON DATABASE app_tracker_test TO app_tracker_user;
-
Install Backend Dependencies:
cd backend poetry install -
Install Frontend Dependencies:
cd frontend npm install -
Generate Frontend API Client:
bash scripts/generate-client.sh
-
Start the applications:
Backend (in one terminal):
cd backend fastapi dev --host "0.0.0.0" --port "8000"
Frontend (in another terminal):
cd frontend npm run dev
- Backend API: http://localhost:8000
- Frontend: http://localhost:5173
- PostgreSQL: localhost:5432