Surma (also known as Murhamaster 3.0) is an updated and upgraded version of the assassination tournament control app of Helsingin yliopiston salamurhapelaajat ry. You can read more about the association and the assassination tournaments on our website.
The app is running here.
This is a Next.js project bootstrapped with create-next-app. The app is deployed on Vercel and uses a Postgresql database and Prisma ORM.
- Node.js
- npm (included in Node installation)
- Postgresql (to use a local database)
- Run
npm ito install all dependencies - Start the local database
- Create an .env file (someone from the team can give you the correct values)
- You can run
npx prisma db seedto seed the database with test data or create data yourself - Start the development server with
npm run dev
Open http://localhost:3000 with your browser to see the app.
If you run into discrepancies between Prisma db schema and your development database, use npx prisma migrate to apply latest db schema.
To use the app, one needs to register to a tournament first, which is done at /registration. Click the name of the tournament you want to register in.
After the registration the user needs to log in with the email they have given at the registration phase. The login form is at the root page i.e. at https://surma.salamurhaajat.net. Write the email address there and then the login link will be sent to the email. After clicking the link the user is redirected to their user page.
At the user page the user can edit their information (the calendar and other information) that is given to their hunters. From the navigation bar the user finds their targets if the tournament is running.
The admin page is at /admin
There the umpires can create, edit and remove "murder rings" that determine who is hunting whom.
There is also a list of players. Every player has three states: ALIVE, DEAD and DETECTIVE. An alive player is both a hunter and a target, a dead player is out of the game and a detective is a hunter that can kill other players with some extra rules (the more detailed explanation of player states is found here).
By clicking the name of the player, you get to the player's user page where the umpire sees the player's data and also when they have last visited their profile.