Momentum Mod is a standalone game built on the Source Engine, aiming to centralize movement gamemodes found in CS:S, CS:GO, and TF2.
This is the repository for the major web systems used by Momentum Mod.
Its central components are the web frontend and the HTTP backend. The frontend is a dashboard site that acts as a central hub for and an extension to the game client, allowing players to log in via (OpenID), where they can see edit their profile, submit maps, see additional statistics, and more.
The backend of the website is a REST HTTP API used primarily by the game client and frontend, handling database and file storage, and providing much of Momentum Mod's core functionality, such as map uploads/downloads, run submission/viewing, and stats congregation/filtering.
The vast majority of the codebase is written in Typescript.
The frontend runs on Angular. We use Tailwind for most styling, PrimeNG for some components.
The backend runs on NodeJS, with
- NestJS: handling architecture and routing,
- Fastify: the underlying HTTP server,
- Prisma: an ORM,
- Postgres: the underlying database
This repo is a monorepo, using Nx for organization and
tooling. Application code (such as frontend/backend) lives in respective
directories in apps/
, and anything shared between applications lives in
libs/
.
We use npm as our package manager.
Momentum Mod is developed entirely by volunteers, so we're always on the lookout for more contributors! If you want to get involved, we highly recommend joining our Discord and letting us know. Whilst you could just work off of the open issues board, it's much easier for us to organize if we know who is working on what, and can make sure there's no overlap.
To get started check out the setup guide, as well as the rest of the wiki. The majority of information about this repo lives on the wiki!
Please see our contribution guidelines before making a pull request.
If you've found a problem with the website, please open an issue!