Skip to content

con2/konsti

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,726 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Konsti

Build

Event signup application Konsti. Supports direct signup (first-come-first-served) and lottery sign-up.

Konsti is used by conventions like Ropecon, Tracon, Tracon Hitpoint, and Solmukohta. Konsti has been in use since Ropecon 2017 and is used by thousands of users. Event data is fetched from Kompassi Event Management System.

Features

  • Direct sign-up (first-come-first-served)
  • Lottery sign-up using eventassigner-js and eventassigner-random
    • Users can choose weighted preferences
    • Users can form groups to be assigned to the same program item

Quick Start

  • Requirements

    • Node.js 24.18.0
    • Docker
    • Yarn
  • Run

    yarn
    yarn docker:db
    yarn run populate-db:dummy
    yarn start:dev
  • Open localhost:8000

  • Login credentials for different roles

    • Admin: admin:test
    • Users: test1:test | test2:test | test3:test
    • Users in same group: group1:test | group2:test | group3:test
    • Helpers: helper:test

You can also run the project completely in Docker:

yarn docker-compose:start

In this case, access the frontend at localhost:5000.

Running multiple local instances

Several copies of the app (for example one per git worktree) can run side by side without port or database collisions. Each checkout gets a PORT_OFFSET automatically: the main checkout uses offset 0 (the classic ports below) and every linked worktree claims the smallest free slot from a registry shared by all worktrees (.git/konsti-port-offsets.json in the main checkout, resolved by scripts/portOffset.ts). Removing a worktree releases its slot. The offset shifts every port by the same amount and picks a dedicated dev database:

PORT_OFFSET Client (Vite) Server / API Dev database
0 (default) 8000 5000 konsti
1 8001 5001 konsti-1
2 8002 5002 konsti-2
yarn start:dev   # in a worktree this resolves to e.g. offset 1 → localhost:8001

The automatic offset applies consistently to the dev server and client (start:dev, server, server:test, client), the Playwright suite, and the dev database scripts (populate-db:*, load-past-event-data, update-kompassi-data), so everything started from the same worktree targets the same instance. The client dev server uses strictPort, so a port collision (for example an orphaned process squatting the port) fails loudly instead of silently drifting to the next free port.

An explicitly set PORT_OFFSET always wins over the automatic assignment:

export PORT_OFFSET=5   # set once per terminal, before the commands below
yarn start:dev

To pin a checkout persistently, add PORT_OFFSET=5 to both server/.env.development and client/.env.development.local (both gitignored); a shell-set variable still wins over the files.

All instances share the single MongoDB container on port 27017; they stay isolated because each PORT_OFFSET uses its own database name. Seed an instance by running yarn populate-db:dummy from its worktree.

Tech

  • General

    • TypeScript
    • Zod
    • Prettier & ESlint
    • Vitest
    • Playwright
  • Backend

    • Node.js
    • Express
    • MongoDB
    • Kubernetes
  • Frontend

    • React
    • Redux & Redux Toolkit
    • Vite
    • styled-components
    • stylelint

Documentation

See docs for additional documentation, including the domain terminology glossary, event deployment guides, the datafiles guide and aggregated statistics derived from past-event dumps, and style guide.

Blog posts

Supporters

Konsti development supported by

Reaktor logo    Sovellin logo    BrowserStack logo Sentry logo

Konsti logo created by Ami Koiranen.

About

Konsti event signup application

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages