Competitive Splatoon Platform
Go to file
Kalle (Sendou) 58a0356615 Upgrade deps
2022-01-06 17:31:09 +02:00
.github Create FUNDING.yml 2021-12-20 19:07:42 +02:00
app Add TODO 2022-01-06 17:26:52 +02:00
cypress Fix more ESLint complaints 2022-01-06 11:06:13 +02:00
prisma Fix more ESLint complaints 2022-01-06 11:06:13 +02:00
public Add favicon 2021-12-22 21:21:40 +02:00
server Manage roster E2E tests initial (not working) 2021-12-26 21:02:15 +02:00
.env.example Return to same page after log in 2021-12-19 11:11:17 +02:00
.eslintrc.js Fix more ESLint complaints 2022-01-06 11:06:13 +02:00
.gitignore Add Tailwind 2021-12-29 08:46:40 +02:00
.prettierignore Add Prettier 2021-12-02 20:56:38 +02:00
.stylelintrc.json Add Prettier 2021-12-02 20:56:38 +02:00
cypress.json Update tests 2021-12-04 15:22:33 +02:00
LICENSE Create LICENSE 2021-11-27 16:18:15 +02:00
package-lock.json Upgrade deps 2022-01-06 17:31:09 +02:00
package.json Upgrade deps 2022-01-06 17:31:09 +02:00
README.md Check-in/check-out to local action function 2021-12-25 22:33:15 +02:00
remix.config.js Add Prettier 2021-12-02 20:56:38 +02:00
remix.env.d.ts Remix starter 2021-11-23 18:54:52 +02:00
tsconfig.json Seeding v=match initial 2021-12-28 08:40:05 +02:00

Note: This is the WIP Splatoon 3 version of the site. To see the current live version checkout the main branch

Running locally

Prerequisites: Node.js 16.13

  1. Run npm i to install the dependencies.
  2. Make a copy of .env.example that's called .env and fill it with values.
  • You can check Prisma's guide on how to get PostgreSQL set up and running locally.
  • Run npm run seed to seed the database with some test data.
  1. Run npm run dev to run both the server and frontend.

File structure

sendou.ink/
├── app/
│   ├── components/ -- Components shared between many routes
│   ├── core/ -- Core business logic
│   ├── hooks/ -- React hooks
│   ├── models/ -- Calls to database
│   ├── routes/ -- Routes see: https://remix.run/docs/en/v1/guides/routing
│   ├── services/ -- Functions that loaders etc. call that typically work with multiple models
│   ├── styles/ -- All .css files of the project for styling
│   ├── utils/ -- Random helper functions used in many places
│   └── constants.ts -- Global constants of the projects
├── cypress/ -- see: https://docs.cypress.io/guides/core-concepts/writing-and-organizing-tests#Folder-structure
├── prisma/ -- Prisma related files
│   ├── migrations/ -- Database migrations via Prisma Migrate
│   ├── seed/ -- Seeding logic for tests and development
│   ├── client.ts -- Global import of the Prisma object
│   └── schema.prisma -- Database table schema
├── public/ -- Images, built assets etc. static files to be served as is
└── server/ -- Express.js server-side logic that is not handled in Remix e.g. auth

Seeding script variations

You can give a variation as a flag to the seeding script changing what exactly is put in the database. For example npm run seed -- -v=check-in seeds the database with a variation where check-in is in progress.

Commands

Convert .png to .webp

cwebp -q 80 image.png -o image.webp

TODO

MVP

  • Captain can remove players from roster
  • Add info about architecture to README
  • Move away from MyForm
  • Make description mandatory + overview tab
  • Captain can check in
  • Admin can check teams in / out
  • Migrate to *.prisma.ts
  • Admin can drop people out (show on bracket somehow that they dropped)
  • Admin can change team captain
  • Admin can randomize and rerandomize maps
  • Admin can change seeding
  • Admin can start the tournament
  • Table design to support arbitrary brackets
  • Generate SE bracket from seeds
  • Generate DE bracket from seeds
  • Can add players to roster mid-tournament (but not remove)
  • Admin can report score
  • Action panel for captain during tournament
    • Before match is available shows info about what match we are waiting on
    • Shows current map/mode and opponent name
    • When reporting score select roster for both teams (if less than 4, remember previous selection)
    • Undo score reported even if it concluded the set
  • Browse streams of the tournament in progress
  • Footer
  • Link nav links to old sendou.ink

After MVP

  • ESLint (button type="button"...)
  • Subs list: (new tab before tournament starts -> remove sub automatically if they join a team)
  • Detailed match reports from Lanista
  • Stats
  • Routine to calculate Trueskill
  • Markdown support for tournament description
  • Can make a new tournament as org admin
  • Can delete team before checking in / tournament start
  • Rules tab with a good default, highlight overrides
  • Friend code to add that is easily editable even before tournament starts
  • Admin can see how long each match has been in progress (with descriptive colors)
  • Can make a team and if enough overlap shows automatically for a tournament
    • Show both names if different or just the one if it's the same
  • Groups -> Many brackets
  • Generate picture for sharing about team's matches and placement in the tournament
  • Generate picture to share info about the top 3 etc.
  • Widget for players to use on stream to show live score
  • Each team has DC count, admin can mark DC's, show to opponent the team's DC counter
  • League mode (LUTI etc.)
  • Can indicate doesn't want to host, site resolves who should host