PFControl is an open-source, real-time flight strip platform for air traffic controllers and pilots. It focuses on fast, collaborative session management with enterprise-level reliability. This repository contains both the frontend and backend for PFControl v2.
We welcome contributions, bug reports, and feature requests. See the Contributing section below to get started.
If you just want to try or demo PFControl:
- Visit control.pfconnect.online
- Try PFControl by creating a session from the homepage.
Getting started with PFControl development is straightforward. We've set up Docker Compose to handle PostgreSQL and Redis for you, so you don't need to manually configure databases.
-
Install Docker Desktop (if you don't have it) Download from docker.com and open it. Make sure it fully starts up.
-
Clone the repository
git clone https://github.com/PFConnect/pfcontrol-2.git cd pfcontrol-2 -
Start PostgreSQL and Redis
docker-compose -f docker-compose.dev.yml up -d
This starts local PostgreSQL and Redis containers in the background. First-time setup downloads the images and takes about 30 seconds.
-
Set up your environment file
cp .env.example .env.development
This creates a
.env.developmentfile with localhost connection strings that point to the Docker containers. -
Install dependencies and start the dev server
npm install npm run dev
That's it! The frontend will be at http://localhost:5173 and the backend API at http://localhost:9901.
When you're done, stop the databases with:
docker-compose -f docker-compose.dev.yml downTo reset your local database (fresh start), run:
docker-compose -f docker-compose.dev.yml down -v
docker-compose -f docker-compose.dev.yml up -d- "Cannot connect to the Docker daemon": Make sure Docker Desktop is running. Open the Docker Desktop application before running docker-compose commands
- "Cannot connect to PostgreSQL": Make sure Docker Compose is running (
docker psshould show postgres and redis containers) - "Port 5432 already in use": You might have PostgreSQL installed locally. Either stop your local PostgreSQL or change the port mapping in
docker-compose.dev.yml - Need help? Join our Discord server, create a ticket, and we'll help you out
src/— frontend application (React + Vite + Tailwind CSS)server/— backend (Express + TypeScript + Kysely)public/— static assets
We are committed to a welcoming, inclusive, and harassment-free community for everyone. All participants are expected to be respectful, considerate, and constructive. Unacceptable behavior such as harassment, discrimination, or personal attacks will not be tolerated. Community leaders enforce these standards and may take corrective action when necessary. Reports of misconduct can be sent to support@pfconnect.online. See CODE_OF_CONDUCT.md for full details.
PFControl v2 is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). You may use, modify, and redistribute this project, but any distributed or networked version must also be released under the same license. See the LICENSE file for full details.
- Open issues on GitHub for bugs or feature requests.
- Join our Discord server for discussions and support. Invite Link