DEVELOPMENT ENVIRONMENT

~liljamo/deck-builder

ref: e74a2cbda1637443df8fbf8c5d583dd494be3b66 deck-builder/README.md -rw-r--r-- 2.3 KiB
e74a2cbdJonni Liljamo feat(server, shared): handle currently existing datarequests 1 year, 9 months ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# Deck Builder (code-named 'laurelin')
See `dev` branch for latest changes.
---
A multiplayer deck building game.


## **Current major issues**
### **Session cookie refreshing**
Currently, the cookie is refreshed on every single action which requires\
session auth.\
Okay, that seems pretty normal.\
So, we just save the new one to the `global.user_to_session_map` hashmap,\
and just send an event to the client with the new one, so they can update\
it in the clients presistent storage, right? This can happen automatically\
in the background.

### **Quite a few unwraps in use**
All should be handled, with sane error responses.

## **Shortest possible explanation of the structure**
```
Client <-> Server <-> API <-> Persistent database (PSQL)
                      API <-> Session store (Redis)
```

The client only communicates with the server.\
The server is authorative, and has the final say in _ALL_ things.\
The server communicates with a web API that handles all database\
functionality.\
The API is *not* exposed publicly (thus, it will not require authentication\
or authorization for most endpoints), and all request go through the server.

### **Client**
The client creates a connection to the server once the user gives their account\
credentials, either for an existing account, or a new account.

This connection _may_ be rejected if the credentials are not valid.

### **Server**
When a client connects to the server, it sends the account credentials to\
authenticate (or an existing cookie on the client side).\
These are then sent to the API, which will create a session\
(or verify the previous one) and return a cookie. The cookie should then be\
passed to the client.

Should the cookies for both users in a game be stored on the server as well?\
In-memory, but just so the user doesn't have to send it with every request,\
to save on the traffic.

### **API**
The web API has access to a PSQL server and a Redis server.

### **PSQL** and **Redis**
PostgreSQL is used for storing/persisting data.

Redis is used for storing user sessions.


## **Commit conventions**
Commits after 09.01.2023 MUST follow [Conventional Commits 1.0.0](https://www.conventionalcommits.org/en/v1.0.0/).

Things to remember:
* everything lowercase
* allowed scopes are `schema`, `shared`, `client`, `server` and `api`