This is an app to manage unofficial tournaments within communities. The app helps to organize, manage and track competitions.
- 404: As a user I get to see a 404 page with a feedback message if I try to reach a page that does not exist so that I know it's my fault.
- Signup: As an anonymous user I can sign up on the platform so that I can start creating and managing tournaments.
- Login: As a user I can login to the platform so that I can access my profile and start creating and managing tournaments.
- Logout: As a logged in user I can logout from the platform so no one else can use it.
- Profile Page: As a logged in user I can visit my profile page so that I can access the edit page and see the list of tournaments I have created.
- Add Tournaments: As a logged in user I can access the add tournament page so that I can create a new tournament.
- Edit Tournaments: As a logged in user I can access the edit tournament page so that I can edit the tournament I created.
- Add Players: As a user I can add players to a tournament.
- View Tournament Table: As a user I want to see the tournament details, players list and the time table.
- View Ranks: As a user I can see the rankings list for the tournament.
- Add weather widget
- lottie interactions
- users can bet
- add geolocation to events when creating
Path | Component | Permissions | Behavior |
---|---|---|---|
/login |
LoginPage | anon only <AnonRoute> |
Login form, navigates to home page after login. |
/signup |
SignupPage | anon only <AnonRoute> |
Signup form, navigates to home page after signup. |
/ |
HomePage | public <Route> |
Home page. |
/user-profile |
ProfilePage | user only <PrivateRoute> |
User and player profile for the current user. |
/user-profile/edit |
EditProfilePage | user only <PrivateRoute> |
Edit user profile form. |
/tournaments/add |
CreateTournamentPage | user only <PrivateRoute> |
Create new tournament form. |
/tournaments |
TournamentListPage | user only <PrivateRoute> |
Tournaments list. |
/tournaments/:tournamentId |
TournamentDetailPage | user only <PrivateRoute> |
Tournament details. Shows players list and other details. |
/tournament/players/:id |
PlayerDetailsPage | user only <PrivateRoute> |
Single player details. |
/rankings/:tournamentId |
RankingsPage | user only <PrivateRoute> |
Tournament rankings list. |
Pages:
-
LoginPage
-
SignupPage
-
HomePage
-
ProfilePage
-
EditProfilePage
-
CreateTournamentPage
-
TournamentListPage
-
TournamentDetailsPage
-
PlayerDetailsPage
-
RankingsPage
Components:
- PlayerCard
- TournamentCard
- Navbar
-
Auth Service
authService
:.login(user)
.signup(user)
.logout()
.validate()
-
User Service
userService
:.updateCurrentUser(id, userData)
.getCurrentUser()
-
Tournament Service
tournamentService
:.addTournament(tournamentData)
.getTournaments()
.getOneTournament(id)
.deleteTournament(id)
-
Player Service
playerService
:.createPlayer(id)
.getPlayerDetails(id)
User model
{
email: { type: String, required: true, unique: true },
password: { type: String, required: true },
playerProfile: { type: Schema.Types.ObjectId, ref:'Player' },
createdTournaments: [ { type: Schema.Types.ObjectId, ref:'Tournament' } ]
}
Tournament model
{
name: { type: String, required: true },
img: { type: String },
players: [ { type: Schema.Types.ObjectId, ref:'Player' } ],
games: [],
rankings: []
}
Player model
{
firstName: { type: String, required: true },
lastName: { type: String, required: true },
profileImage: { type: String },
scores: []
}
HTTP Method | URL | Request Body | Success status | Error Status | Description |
---|---|---|---|---|---|
GET | /auth/verify |
200 | 404 | Check if token is valid | |
POST | /auth/signup |
{name, email, password} | 201 | 404 | Checks if fields not empty (422) and user not exists (409), then create user with encrypted password |
POST | /auth/login |
{username, password} | 200 | 401 | Checks if fields not empty (422), if user exists (404), and if password matches (404), then creates and sends JWT |
GET | /api/tournaments |
400 | Show all tournaments | ||
GET | /api/tournaments/:id |
Show specific tournament | |||
POST | /api/tournaments |
{ name, img, players } | 201 | 400 | Create and save a new tournament |
PUT | /api/tournaments/:id |
{ name, img, players } | 200 | 400 | edit tournament |
DELETE | /api/tournaments/:id |
201 | 400 | delete tournament | |
GET | /api/players/:id |
show specific player | |||
POST | /api/players |
{ name, img, tournamentId } | 200 | 404 | add player |
PUT | /api/players/:id |
{ name, img } | 201 | 400 | edit player |
DELETE | /api/players/:id |
200 | 400 | delete player | |
GET | /api/games |
201 | 400 | show games | |
GET | /api/games/:id |
show specific game | |||
POST | /api/games |
{player1,player2,winner,img} | add game | ||
PUT | /api/games/:id |
{winner,score} | edit game |
Link to your trello board or a picture of your physical board
The url to your repository and to your deployed project
Slides Link - The url to your public presentation slides
FirstName LastName - -
FirstName LastName - -