Getting started
Quickstart
Get the database, the backend and the launcher running on your own machine. About ten minutes, most of it installing prerequisites.
Prerequisites#
| Tool | Needed for | Get it |
|---|---|---|
| Docker | PostgreSQL, and the backend tests | docker.com |
| .NET 10 SDK | The backend | dotnet.microsoft.com |
| Node.js LTS | The launcher UI, website and dashboard | nodejs.org |
| Rust | The launcher's native side | rustup.rs |
Run it#
-
Clone the repository
Terminalgit clone https://github.com/flickedgg/FLICKED.git cd FLICKED -
Start the database
The repository's
docker-compose.ymlruns PostgreSQL 18 with a development-only password. Create no tables: the API applies its own migrations on startup.Terminaldocker compose up -d -
Configure and start the backend
Copy
backend/.env.exampletobackend/.envand fill in a Steam Web API key and your SteamID64. The connection string andSteam:PublicUrlalready have development defaults inappsettings.Development.jsonthat match the Docker database.backend/.envSTEAM_API_KEY=YOUR_STEAM_API_KEY_HERE FLICKED_ADMIN_STEAM_IDS=YOUR_STEAM_ID_HERE # Only needed once a real CS2 server has to call you back. In development this # is a tunnel whose hostname changes on every restart, so it is not committed. FLICKED_API_PUBLIC_URL=https://your-public-api-url.comThen start it. The API serves on
http://localhost:5165and applies its migrations on the first run.Terminalcd backend/Flicked.Api dotnet run --launch-profile https -
Start the launcher
Leaving
FLICKED_APIunset builds againsthttp://localhost:5165, which is what you want while developing.Terminalcd launcher npm install npm run tauri dev
The website and dashboard#
Both are Next.js apps and run the usual way from their own folders. The dashboard expects the API on
http://localhost:5165 and is served on http://localhost:3000, which is the origin
the backend allows by default.
cd dashboard # or: cd website
npm install
npm run devTo reach the dashboard as an admin, your SteamID64 must be listed in
FLICKED_ADMIN_STEAM_IDS.
Play with fewer than ten people#
A real Competitive match needs ten players. While testing alone or with a friend, shrink it:
# a 1v1 is a complete match as far as the matchmaker and rating are concerned
Matchmaking:CompetitivePlayers=2Everything else, including rating, works unchanged at that size. See Configuration for short-handed matches, which are the production-friendly version of the same idea.
Run the tests#
dotnet test backendAbout 70 tests in roughly 30 seconds. They need Docker running because they use a real PostgreSQL
database, flicked_test, which the fixture creates and migrates itself. Why real Postgres
and not an in-memory provider is explained in Contributing.
Repository layout#
| Path | What is in it |
|---|---|
backend/ | API and database code. Flicked.slnx opens it |
launcher/ | The desktop launcher: src/ is the React UI, src-tauri/ the Rust side |
dashboard/ | The admin dashboard |
website/ | The public website |
docs/ | Everything written down. These docs are built from it |
assests/ | Images, logos and other shared assets |
docker-compose.yml | PostgreSQL for local development |