# Project 3
## To Do
- match front end logic with back end
- signup/login/logout
- socket.io - set up, get socket working
- utilize socket.io to update the game real time
## Brainstorm
Stock keeping app
travel planner app
Project management app
Events Page app
E-Voting System app
iCinema Clone app
### Codenames app*
- login/logout system
-
- after log in prompt to create game
- lobby(future dev)
- create a lobby
- join Lobby
- emoji only chat (future dev)
- friend list feature (future dev)
- backend
- Words (see below)
- (https://github.com/sagelga/codenames/blob/main/wordlist/en-EN/default/wordlist.txt)
- Users (see below)
- Games (see below)
- Teams
- (create 2 new teams every game - team Dog and team Cat)
- multiple users belong to one team
- 8 or 9 words
- Moves
- associated to one player/team?
- belongs to one Game
- User who made the move
- word selected
- (for future) would chats/emoji chat go here?
- WordList - 25 words
- subset of "Words" - 25 words that belong to one Game
- neutral words - 7 words
- team dog words - 8 or 9 words
- team cat words - 8 or 9 words
- "death" words - 1 word
wordSchema = new Schema({
word: string
})
userSchema = new Schema({
username: string,
email: string,
password: string,
team: [Teams _id: id] // assigned when game starts
isSpyMaster: boolean // assigned when game starts
wins: integer,
losses: integer
})
gameSchema = new Schema({
name: string, randomly generated (3 words?)
team: [
{ team one },
{ team two }
],
startTeam: either team one or team two's id?,
moves: ref: 'move'
neutralWords:
teamDogWords:
teamCatWords:
deathWord:
})
when a game is created
1. Create Game
a. choose 25 random words from Word.findAll
3. Create 2 Teams
a. 1 team should be team Cat (isTeamDog = false)
b. 1 team should be team Dog
5. Assign words 1-9 to team Cat
6. assign words 10-17 to team Dog
7. assign half of players to team Cat, assign the others to team dog
8. assign Spy Masters