cory2067 / gtsosu Goto Github PK
View Code? Open in Web Editor NEWWebsite for the Global Taiko Showdown series
Website for the Global Taiko Showdown series
It's usually quite annoying to keep track of warm ups for referees. I think it would be nice if this could be handled by the website.
Just to give some guidelines I guess:
Currently, when someone adds a map the pool, the map card says that they're the one who picked it.
However, there are cases when a pooler isn't available to add their own picks to the site. So we should add a field to AddMapModal where poolers can specify who picked the map (defaulting to the current user)
https://gtsosu.com/2020/egts/schedule#3
You can see here some players with no flag and no seed.
This is because their username changed since those matches were scheduled. The Match
model has each player's username instead of something unchanging like userid (which was a bad design decision)
We should think about ways to allow schedules to be up-to-date with username changes so that archived tourneys don't have some missing flags.
Add links with icons to all the GTS related stuff: Twitter, Youtube, main Twitch channel, Discord server, Bandcamp and I guess Osu Wiki page
A counter on the "Players" page when players are displayed for country-based tourneys. At least a potential teams counter would be really nice. So, countries with 2 or more players + B teams if 7 players or more. Another counter could be: potential teams counter without B teams but eh.
As most GTS tournaments tend to use a specific deadline to get players to register to lobbies, actually enforcing on the website the fact that they cannot move whatsoever after a specific date might be good?
We somehow haven't needed that in past GTS tourneys, but EGCS just made me need to actually screenshot lobbies and enforce "no players are allowed to move now", so ehh.... Would be good as a safety measure. Not high priority though, as EGCS' qualifiers are already starting, and next GTS tourney is in 2025.
I think the title is pretty clear. Currently each role has to be added separately when adding a staff member. I tagged as good for first issue but I'm not exactly sure how complicated this is? I believe it shouldn't be too hard.
Adding role on website adds the role on GTS server
A simple page where people who staffed in gts can be shown, and what tourney's they've worked on.
Personally, I think adding which role they had is already too much, people can go to the staff page of a specific tourney if they want to check.
Basically if we could move that here instead of using more and more roll slots for that, would be great x)
Right now, if someone/a team doesn't play all their qualifiers maps, the missing maps need to be manually given a zero to work. Otherwise they'll probably get too high of a rank average and seed too high.
If it could be done automatically that someone's score on a pick is 0 if that score is missing, that would be cool.
Could maybe even do it for quals that everyone starts off with 0's on everything and they have to be overridden by scores from the mp links. Idk which way would be easier x)
Based off fajar's figma:
https://www.figma.com/file/wbsINGHpMUoujRLtYN1f4E/Website?node-id=0%3A1
Not sure how much we'll be able to leverage the ant.design library to make this happen, or if we'll need to consider other options
The title portion of the new homepage is done, but we should add the pretty tourney cards like in the figma
Add qualifiers results on the schedules page so that we don't have to use spreadsheets. Example sheet: https://docs.google.com/spreadsheets/d/1Qfv_V36IHqQ4KUTRzRiLp8dYTHBeP-aPKZlAZUrhdiE/edit#gid=984263065
Make sure to consider both individual and team tourneys.
We'll first need to add a button so that refs can submit the mp link for each match. There's currently a link
field in the QualifiersLobby
schema, but it's unused. Then, we can process that match with the osu api and persist the quals results in the db.
Force players to join server before even being able to click the register button, as well as forcing them to login with their Discord account, instead of the manual usage we currently have for this, which Doesn't Help players understanding shit sememingly.
Change the "Language" on the top menu to a more recognizable term/icon by everyone. Some ppl don't seem to know this word. I believe either displaying the current selected language (English, ...) or a flag (like osu! website) would make it clearer.
Originally posted by @Briesmas in #38 (comment)
Add a little icon in the MapCard
for maps that were custom-made for the tourney.
A new field will need to be added to the Map
schema, and it would probably make sense to add this as an option in the AddMapModal
so poolers or admins can choose whether to show the badge.
only captain should be allowed to do this
Here's an example of a statistics sheet: https://docs.google.com/spreadsheets/d/1N9seyZEphvV5OisGBvuCaz-tb1shOJoGOjpvNMykW30/edit#gid=795207119
Be sure to consider both team tourneys and individual tourneys
Add a new page for this, maybe linked from the schedules page? Currently, we store the mp link for every map in the database, but we're not any kind of processing on it.
Whenever a ref submits a match link, we can use the osu api to fill out info about that match and persist it in the db. We also might want a script to backfill the stats all the past tourneys.
Refactor all classes to use react hooks+functional components instead of the old style class-based components
Currently there's a router in App.js and a separate router in Navbar.js, and it's a little ugly.
I have an idea of refactoring it to only use one router in App.js and having a route wrapper that renders the navbar
Lots of components define functions like this:
isRef = () => hasAccess(this.props.user, this.props.tourney, ["Referee"]);
and there is some repeated code like this between components
Refactor these checks into some permissions helper util file. It should have functions for each useful type of permission check, and also should define constants for those role names (e.g. Role.REFEREE
) instead of using string literals like "Referee"
Skin the mappools, schedule, players, staff, stats pages to have a dark theme for consistency with the tourney home page.
In auth.ts, in the logout route, the line req.logout()
fails to compile because logout()
is not a property of Request
.
This error happened in prod, but I can't reproduce it in dev.
I ended up temporarily fixing it by overriding that type to any
: 0b24a00
but we should try to fix the root cause
Passport is supposed to override express.Request
by adding on the additional logout
property, but it seems like that isn't working
Add a new page to list all the custom songs made for GTS with links to socials
Maybe it's possible to add soundcloud preview player? Idk how that works
There's often confusion whenever daylight savings changes, because people forget to change their timezone on the website.
We can detect when the browser's timezone is different from the timezone on the player's profile. In that case, we can prompt the user if they want to change their profile timezone.
Consider breaking out api.js into smaller modules instead of one huge file
Currently, you have to manually type out a comma-separated list of player names to create a team
This is tedious and prone to typos
Improve this by making it a searchable multi-select drropdown, with all the registered players as options. The list of players should be available from the frontend without any additional api calls.
Docs for select: https://ant.design/components/select/
One common pattern in this repo is having a form inside a modal.
Something vaguely like this to give an idea of what I mean:
function FormModal(props) { // todo flesh out these props
const [formData, setFormData] = useState(props.initialFormData);
const onValuesChange = (newData) => setFormData({...formData, ...newData});
return (
<Modal
...props,
onOk={() => props.handleOk(formData)}
>
<Form onValuesChange={onValuesChange} initialValues={props.initialFormData}
{ props.formContents}
</Form>
</Modal>
)
}
This can help reduce some of the boilerplate involved in setting up form modals
The tourney rules pages have literally no styling or design, it's an empty page and we dump the rules markdown in it.
Since there's no design, it'll basically be working with a blank slate.
Talk with designers to see how we can lay this out in the best way.
This is pretty gross. Instead, we should have these options change based on which tourney is currently being viewed.
The code for this is in Navbar.js, where there's a hardcoded list of language options.
Maybe we could populate the list of available languages based off what files are in the client/src/content directory
I think this is the only thing left to do on the tourney home page. It might be cool to add some table of contents sidebar like in a wiki. The hard part is figuring out how to generate clickable links to sections based on the info/rules markdown.
I don't think we should implement isolated rules sections like in the figma. It really needs to be scrollable all the way through like it is currently imo
Some beatmap listing page that shows off all the songs and maps custom made for GTS.
Maybe show custom songs at the top, and then a more compact view where we list off all the custom maps. Need to talk with designers to figure out something.
Either a short text under the "Role"/"Custom flag" thing or a ticket(?) appearing on the bottom right for example when you add staff/teams to indicate it was successful. This is really low prio btw but sometimes I double check when I add stuff because of a potential typo so this would be a nice QoL.
Having type checking would make our lives a lot easier in catching issues with the code. Not sure how much
I think a codebase can be migrated to Typescript incrementally, so this might be doable.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.