Competitive Splatoon Platform
Go to file
2021-01-30 13:04:10 +02:00
components relocate some hooks 2021-01-30 13:04:10 +02:00
hooks relocate some hooks 2021-01-30 13:04:10 +02:00
lib relocate some hooks 2021-01-30 13:04:10 +02:00
locale closes #219 filter by mode dropdown 2021-01-30 02:35:58 +02:00
pages relocate some hooks 2021-01-30 13:04:10 +02:00
prisma remove unused 2021-01-30 12:38:46 +02:00
public teams icon on the nav bar 2021-01-15 09:58:50 +02:00
.babelrc lingui initial 2020-11-04 03:09:57 +02:00
.env update readme! 2020-12-02 19:57:54 +02:00
.gitignore fixed team migration 2021-01-12 12:58:29 +02:00
lingui.config.js remove zh 2020-12-03 20:51:43 +02:00
next-env.d.ts fix type errors 2020-11-18 13:57:41 +02:00
next.config.js sr on home page 2020-12-21 19:12:24 +02:00
package-lock.json remove unused 2021-01-30 12:38:46 +02:00
package.json remove unused 2021-01-30 12:38:46 +02:00
README.md add external api info to readme 2021-01-15 23:48:39 +02:00
theme.ts improved styles for select 2020-12-17 20:21:25 +02:00
tsconfig.json principal id script 2021-01-20 18:27:43 +02:00

Discord Server

Goal of sendou.ink is to provide useful tools and resources for the Splatoon community.

Live version: https://sendou.ink/

Technologies used

  • React (via Next.JS)
  • TypeScript
  • Node.js
  • PostgreSQL (via Prisma 2)

A few highlight features

🦑 Planner tool where you can draw on any map in the game to conveniently make up game plans

🐙 Calendar that collects together all the events happening in the community

🦑 Users can make an account and submit their builds and browse builds made by others

🐙 It is possible to submit yourself as "free agent". If two FA's like each other they are notified and a new team can be founded

🦑 X Rank Top 500 results can be browsed through far more conveniently than on the official app

🐙 X Rank Top 500 leaderboards to compare yourself against other players

🦑 Browse through detailed tournament results

🐙 Choose between light and dark mode

Setting up the project locally

Access pages that don't need database access

With the following steps you can access a few pages that don't need a database. For example: home page (/), build analyzer (/analyzer) and map planner (/plans)

  1. Clone the project
  2. Run npm i to install dependencies
  3. Run npm run compile to compile translation files.
  4. Run npm run dev to start the development server at http://localhost:3000/

Access rest of the pages

In addition to the steps above the steps below enable access to rest of the pages.

  1. Create a file called .env in the prisma folder. In it you need an environmental variable called DATABASE_URL that contains the URL to a running PostgreSQL database. For example mine looks like this while developing:
DATABASE_URL=postgresql://sendou@localhost:5432

You can see Prisma's guide on how to set up a PostgreSQL database running locally for more info.

  1. Once you have a database running run pg_restore -d 'postgresql://sendou@localhost:5432' --jobs 4 dump.sql --clean (replace the connection string with your own) in the prisma folder (assuming your database name is postgres). This formats the database with the correct tables and fills it with real data dumped from the production site.

Enable logging in

In addition to the steps above the steps below enable logging in.

  1. Create a file called .env.local in the root folder. In it you need following variables:
DISCORD_CLIENT_ID=
DISCORD_CLIENT_SECRET=
JWT_SECRET=

a) Go to https://discord.com/developers/applications
b) Select "New Application"
c) Go to your newly generated application
d) On the "General Information" tab both "CLIENT ID" and "CLIENT SECRET" can be found.
e) On the "OAuth2" tab add http://localhost:3000/api/auth/callback/discord in the list of redirects.

JWT_SECRET can be any randomly generated reasonably long string.

Using API

If you wish to use the sendou.ink API for your own project like a Discord bot you can use the API endpoints under https://sendou.ink/api/bot (https://github.com/Sendouc/sendou.ink/tree/main/pages/api/bot) as long as you keep the load on my backend reasonable.

Using other endpoints isn't advised as I change those as I feel to suit the needs of the website. If the endpoints under /bot don't meet your use case feel free to leave an issue.

Contributing

Check out the list of existing issues I haven't assigned for myself to find issues I could accept help with. Before you start working on one please leave a comment.

Is there a bug or a new feature that isn't an issue yet? Feel free to leave one.

Please always leave a comment or create an issue before working on anything.