# Aavishkar app
**Version 3.0**
This app is being developed by the GNU linux users group exclusively for the aavishkaar fest to be held at NIT durgapur.
## Roadmap
- App will be implemented on BloC pattern
- We will move our backend from google cloud (Firebase) to Aws.
- Backend will be developed using serverless technlogy(Lambda). Language will be Node.js
## Features
- Unified login experience (Google, Facebook, Email & Password, Apple)
- Push notifications on events.
- Forum for discussion.
- Games to earn eurokoins and spend in the fest.
- Best Photo of the Fest contest.
## Eurokoins
- Everyone will given a free 100 eurokoins.
- Every referral will grant them 25 eurokoins.
- One can earn and spend eurokoins in the games section.
- Everyday the Photo of the day winner will win 1000 eurokoins.
- They can only be convertible into coupons and non-convertible into any form of assets or cash.
- They will be mined only one time during sign up of users.
- The number of eurokoins is fixed to the number of users.
- Any form on prizes paying eurokoins need to be funded from other eurokoins wallets, due to limitations of non-mining of eurokoins.
- **Every eurokoin earned is every eurokoin deducted** (Except during sign up of users.)
## Games Zone
### Dice and Box
This is a two player luck based board game, where a player will be provided to roll two dice and try to match a number provided on a wooden box. Player having highest number of matches among five boxes wins the game and earn double amount of eurokoin cashed in for the table.
## Login Systems
- 
- 
- 
- Email and Password
## WebSocket Implementation
We need to websocket to provide a constant realtime connection between the client and the server so that they can constantly get update on the score, other player move.
- GET /session
- POST /session
- PUT /session
- DELETE /session
```
class Session {
String id;
String gameId;
DateTime startTime;
PlayerSession player1;
PlayerSession player2;
}
class PlayerSession {
String playerId;
int currentScore;
GameObjects[] moves;
}
```
### PUT /<gameid>/move
- userId
- moveObject
### GET /<sessionId> - Return sessionData of the game