93 lines
4.6 KiB
Markdown
93 lines
4.6 KiB
Markdown
---
|
|
okf_version: "0.1"
|
|
---
|
|
|
|
# HIPCTF Documentation
|
|
|
|
HIPCTF is a single-tenant CTF (Capture-The-Flag) platform built as a Node.js
|
|
monorepo containing a NestJS REST API and an Angular single-page application.
|
|
It supports user registration, authentication, challenge management, a live
|
|
scoreboard, an event window with a public countdown, theming, and admin
|
|
controls.
|
|
|
|
The docs below are organized by purpose so agents can pull just the slice
|
|
they need. Last regenerated 2026-07-22T15:46:18Z.
|
|
|
|
# Architecture
|
|
|
|
* [System Overview](/architecture/overview.md) - High-level layout of the
|
|
backend, frontend, and how they communicate.
|
|
* [Backend Module Map](/architecture/backend-modules.md) - NestJS modules,
|
|
controllers, services, and their wiring.
|
|
* [Frontend Structure](/architecture/frontend-structure.md) - Angular routes,
|
|
components, services, guards, and stores (including the authenticated shell
|
|
+ signal stores).
|
|
* [Key Files Index](/architecture/key-files.md) - One-line summary of every
|
|
important source file in the repository.
|
|
|
|
# Database
|
|
|
|
* [Schema Overview](/database/schema.md) - Tables, relationships, and indexes.
|
|
* [User Table](/database/users.md) - `user` table schema and seed behavior.
|
|
* [Challenge Tables](/database/challenges.md) - `category`, `challenge`,
|
|
`challenge_file`, `solve` tables.
|
|
* [Auth and Settings Tables](/database/auth-settings.md) - `refresh_token`
|
|
and `setting` tables.
|
|
* [Blog Post Table](/database/blog-posts.md) - `blog_post` table.
|
|
|
|
# API
|
|
|
|
* [REST API Overview](/api/rest-overview.md) - Base URL, versioning, auth,
|
|
CSRF, and error envelope.
|
|
* [Auth Endpoints](/api/auth.md) - Login, refresh, logout, CSRF, `/me`,
|
|
`/change-password`, and first-admin registration.
|
|
* [Setup Endpoint](/api/setup.md) - Dedicated `POST /api/v1/setup/create-admin`
|
|
used only while no administrator exists.
|
|
* [Admin Endpoints](/api/admin.md) - Admin-only endpoints covering user
|
|
management, general settings (`/api/v1/admin/general/*`), and
|
|
categories (`/api/v1/admin/categories/*`).
|
|
* [System Endpoints](/api/system.md) - Bootstrap, event status, public SSE
|
|
streams, public event-window settings, and the authenticated
|
|
`/events/status` SSE stream.
|
|
* [Uploads Endpoints](/api/uploads.md) - Admin-only multipart uploads for category icons, challenge files, and validated site logos.
|
|
|
|
# Guides
|
|
|
|
* [First-Run Bootstrap](/guides/bootstrap.md) - How a fresh instance is
|
|
initialized by the very first admin via the non-dismissible modal.
|
|
* [Setup Form Field Errors](/guides/setup-field-errors.md) - Pure
|
|
helpers that translate reactive-form state into the inline validation
|
|
messages on the first-admin modal.
|
|
* [Admin Shell & Side Navigation](/guides/admin-shell.md) - How admins
|
|
navigate the post-login admin area side-nav (General, Challenges,
|
|
Players, Blog, System) and reach the enabled child pages.
|
|
* [Admin — General Settings](/guides/admin-general-settings.md) - How an
|
|
admin edits platform-wide settings, including the required and strictly
|
|
ordered event window, at `/admin/general`.
|
|
* [Admin — Categories](/guides/admin-categories.md) - How an admin lists,
|
|
creates, edits, and deletes challenge categories at `/admin/categories`,
|
|
including system-row and challenge-attached protection.
|
|
* [Authenticated Shell](/guides/authenticated-shell.md) - The header, LED
|
|
+ countdown, quick-jump tabs, user menu, and SSE lifecycle that frame
|
|
every signed-in page.
|
|
* [Change Password](/guides/change-password.md) - How a signed-in user
|
|
changes their own password, including every error branch and the
|
|
refresh-token revocation behavior.
|
|
* [Cross-Tab Authenticated Shell Invalidation](/guides/cross-tab-invalidation.md) -
|
|
How a logout in one tab, or an unauthorized SSE response, instantly clears
|
|
and redirects every other open tab of the SPA.
|
|
* [Session Restoration on Reload](/guides/session-restoration.md) - How
|
|
the SPA keeps a user signed in across hard refreshes and how the
|
|
guards wait for bootstrap + auth hydration before deciding where to
|
|
route.
|
|
* [Landing Page](/guides/landing-page.md) - Public landing page
|
|
(logo, welcome Markdown, blog list) and the login + registration modal
|
|
rendered at `/login` once the instance is initialized.
|
|
* [Theming](/guides/theming.md) - How canonical themes are listed for admins, persisted through general settings, and applied to CSS custom properties.
|
|
* [Event Window](/guides/event-window.md) - How the 4-state event
|
|
window and live countdown work, including the authenticated SSE stream.
|
|
* [Event LED Color Mapping](/guides/event-led-colors.md) - Source of
|
|
truth for the shell status dot's color in each `EventState`.
|
|
* [Scoreboard Stream](/guides/scoreboard-stream.md) - How live solves are
|
|
broadcast to clients.
|