dcsplan is a web app helping plan missions for combat flight simulators such as DCS. Its main advantage is to generate detailed kneeboards allowing mission following and navigation, even in aircrafts with limited onboard systems (such as 60s era jets).
An online server is accessible at https://dcsplan.bonnefon.org/
- Online edition of flight plans
- Maps from DCS itself for accuracy of landmarks in the sim
- Generate kneeboards, one page per leg
- Draw accurate turns based on ground speed and bank angle
This is a monorepo using pnpm workspaces.
packages/frontend: Vite/React/TypeScript front-end application.packages/backend: FastAPI/Python back-end application.
- Node.js 24 and pnpm (the version is pinned by
packageManagerinpackage.json;corepack enablepicks it up) - uv (
brew install uv). It installs the Python version the backend needs (3.13, frompackages/backend/.python-version) if you don't have it.
-
Install front-end dependencies: From the root of the project, run:
pnpm install
This will install dependencies for the root workspace and the front-end package (once it's created).
-
Set up and install back-end dependencies: This runs
uv sync, which createspackages/backend/.venvand installs the locked dependencies frompackages/backend/uv.lock(runtime and dev).pnpm run install:backend
If you have an old
packages/backend/venvfrom before the move to uv, delete it.Dependencies are declared in
packages/backend/pyproject.toml. To add or upgrade one, use uv frompackages/backend(uv add <pkg>,uv add --dev <pkg>,uv lock --upgrade-package <pkg>) and commituv.lock. To run any other backend command in the environment, prefix it withuv run(for exampleuv run python -m some_module).
To run both the front-end and back-end servers concurrently, use the following command from the root directory:
pnpm dev- The front-end (Vite) will be available at
http://localhost:5173(or the next available port). - The back-end (FastAPI) will be available at
http://localhost:8000.
To run all tests (back-end and front-end):
pnpm testTo run back-end tests only:
pnpm test:backendTo run front-end tests only:
pnpm test:frontend