A full-stack web application for managing Formula 1 pilots and teams, built with a modern, containerized microservice architecture.
FormulaRace is a comprehensive web application that provides CRUD (Create, Read, Update, Delete) functionality for Formula 1 pilots and their respective teams. The backend is a robust ASP.NET Core Web API, and the frontend is a dynamic single-page application built with Angular.
The entire solution is containerized using Docker and orchestrated with Docker Compose, making setup and deployment streamlined and consistent across different environments.
The solution is organized into distinct parts to maintain a clean separation of concerns:
/
├── backend/
│ └── microservices/
│ └── teammanagement-service/ # .NET API for managing teams and pilots
├── frontend/ # Angular SPA for the user interface
├── .dockerignore
├── docker-compose.yaml # Orchestrates all services
└── README.md
This project leverages a modern tech stack:
- Backend:
- .NET 9
- ASP.NET Core Web API
- Entity Framework Core (for data access)
- Serilog (for structured logging)
- Frontend:
- Angular
- TypeScript
- Angular Material (for UI components)
- Database:
- Microsoft SQL Server (default)
- PostgreSQL (supported, configurable)
- DevOps & Tooling:
- Docker & Docker Compose
- Seq (for log analysis)
Follow these instructions to get the application running on your local machine.
Ensure you have the following software installed:
- Docker Desktop
- .NET SDK (for running EF Core migrations locally)
- Node.js and npm (for managing frontend packages)
-
Create an Environment File: In the root directory (
c:\source\FormulaRace
), create a file named.env
. This file will hold your local configuration secrets. -
Add Configuration Variables: Copy the following content into your new
.env
file. Choose a strong, secure password forDB_PASSWORD
.# .env # Password for the database user (both SQL Server and PostgreSQL) DB_PASSWORD=YourStrong(!)Password # Default environment for ASP.NET Core ASPNETCORE_ENVIRONMENT=Development # URLs for the backend API service inside the container ASPNETCORE_URLS=http://+:8080 # URL for the Seq logging service Seq_ServerUrl=http://seq:5341
The entire application stack can be launched with a single command from the root directory.
-
Build and Run Containers: Open a terminal in the root of the project (
c:\source\FormulaRace
) and run:docker-compose up --build -d
This command will:
- Build the Docker images for the backend API and frontend Angular app.
- Pull images for SQL Server and Seq.
- Start all services in detached mode (
-d
).
-
Accessing the Services: Once the containers are running, you can access the different parts of the application:
- Frontend Application: http://localhost:4200
- Backend API (Swagger): http://localhost:8080/swagger
- Seq Log Viewer: http://localhost:5341
-
Stopping the Application: To stop all running containers, use the command:
docker-compose down
- Pilot Management: Full CRUD functionality for pilots.
- Team Management: Full CRUD functionality for teams.
- Data Presentation: Server-side paging, sorting, and filtering for pilot data.
- Containerized: Fully containerized with Docker for easy setup and deployment.
- Structured Logging: Integrated with Seq for easy log monitoring and analysis.
Project is: in progress
Created by [@SutoZ]