-
Notifications
You must be signed in to change notification settings - Fork 2
Competitions Portal
Make sure that you have the acm-ai-site and acm-ai folders open in your workspace.
- Navigate to MongoDB and set up your account with your acmucsd email if you haven't already
- Verify that your local cluster is set up. Refer to this README https://github.com/acmucsd/acm-ai-api
- In the acm-ai-api root directory, execute
npm run dev
which should spin up the database and server localhost:9000# - In the acm-ai-site root directory,execute run
npm run start
which should launch the app on localhost:3000
The goal of the competitions portal is to provide a way to streamline how ACM AI carries out its annual competitions. Here's a couple of screenshots of the work in progress as of Spring 2024.
- Provides summary statistics of a user's team including a score history graph
- Displays the members in the team
- Gives users ability to upload a submission with a description. In previous years, the users were able to add tags however there isn't a use for it yet so the tag is being used to record the name of the person who submitted.
- Users can search for a team to join via a shareable passcode
- Leaderboard of rankings
- Ability to view submission history and match history
- The biggest one is to OPTIMIZE the portal
index.tsx
state management. Due to time constraints, we were trying to push out an MVP (minimum viable product) so there was a bit of prop drilling unfortunately. Although it's not extensive, it's not fun to look at nor work with. React context might be a viable solution to help make state management and development much easier for future iterations. Alternatively, React-Redux is an old but proven way to make custom state management. - Secondly, the app needs to avoid frequent refreshes on recurrent page navigations within the portal. Find a way to cache responses to mitigate api requests.
- No testing was done yet for the submission uploads or submission history since the test eval servers were never hosted (sad)
- The match history page has no UI at all at the moment
- The upload submission section has a bug where it displays the incorrect remaining time until the submission deadline
- A help button to trigger some sort of modal, drawer, or dialogue that provides information about the competition
metadata
. This info can be pulled from the API like so:
`
const getCompMetaData = async () => {
getMetaData(competitionName).then((res) => {
setMetaData(res.data);
})
}`
The idea is that upon first page load, the app needs to check for user authentication. If the user isn't registered for the competition, they receive a prompt to participate. If verified, the user has the ability to form their own team or join one.
The page will force a partial reload of the stats and other data to retrieve the teamInfo and ranking information from the MongoDB schemas. other interactions such as making a submission and navigation between pages will also perform page reloads. Again, how the future dev team wants to handle reloads is up to them.
The page will again force a reload to reset the page to the default screen to join a team or make a new one.