Fully dockerized online game based on websockets with GinGonic backend and an Angular 8 frontend.
Project developed by Raül, Ethan, Jordi and Iván.
To get the repo running locally:
- Clone this repo
- Install Docker Community Edition
docker-compose up --build
untested
| Service | Features |
|---|---|
| Register | Regular register or login with GitHub or Google |
| Login | Regular login or login with GitHub or Google |
| Lobby | List of public rooms with ability to add more or join a private room |
| Game | Functional tag game based on websockets |
| Technical Feature | Where it works |
|---|---|
| Authentication | Lobby and game requires logged in user with JWT |
| Docker | Entire application is dockerized |
| Redis | Total score of each user is saved in redis |
| Websocket | Whole game works on websockets |
- GinGonic
- Angular 8
- Docker
- MySQL
- Redis
- JWT
- Bootstrap
- Toaster
- Gorm
- Gocialite
| Name | Description |
|---|---|
| clients | Websocket handler |
| common | Database handler and utils functions (JWT GenToken) |
| game | Character model |
| redis | Redis request handler |
| rooms | Rooms handler |
| social | Social login route handler |
| tokens | Tokens.json file with Social APIs, functions to extract from file |
| users | Login, register and overall users handler |
| Dockerfile | Our Go Dockerfile |
| main.go | Main package |
| Name | Description |
|---|---|
| e2e | Angular generated e2e testing |
| src | Main frontend Angular application |
| Dockerfile | Our Angular Dockerfile |
src/app |
Module folder |
src/assets |
Images and font used |
src/environments |
Constant environment variables |
src/app/auth |
Login and register module |
src/app/background |
Draws the background |
src/app/character |
Draws the characters |
src/app/core |
Core services, interceptors and models |
src/app/game |
Game module |
src/app/lobby |
Lobby module |
src/app/logout |
Logout button component, linked to AuthModule |
src/app/scoreboard |
Draws the scoreboard |
src/app/social |
Social module |
src/app/app.module.ts |
Main app module |
- https://github.com/kardianos/govendor
- https://github.com/pilu/fresh
- https://github.com/go-sql-driver/mysql
- https://github.com/gorilla/websocket
- https://github.com/gin-gonic/gin
- https://github.com/jinzhu/gorm
- https://github.com/go-redis/redis
- https://golang.org/x/crypto/bcrypt
- https://gopkg.in/danilopolani/gocialite.v1
- https://github.com/dgrijalva/jwt-go
- Implement Redux
- User's image on ingame ranking
