syncstream-dev / syncstream-backend

Java + SpringBoot backend for SyncStream Application
GNU General Public License v2.0
2 stars 2 forks source link

Setup initial backend modules #1

Closed Xu-Gavin closed 9 months ago

Xu-Gavin commented 9 months ago
Server Side
├── Session
│   ├── id (String)
│   ├── host (User)
│   ├── Genre (Genre)
│   ├── participants (ArrayList<User>)
│   ├── ChatStream (ChatStream)
│   └── VideoInfo (VideoInfo)
│
├── PublicSession (Extends Session)
│   └── n/a
│
├── PrivateSession (Extends Session)
│   ├── password (byte[])
│   ├── max_participants (int)
│   └── vacant (boolean)
│
├── User (Class)
│   ├── id (String)
│   ├── username (String)
│   ├── avatar_url (String)
│   ├── session_hosted (int)
│   ├── messages_sent (int)
│   └── karma (int)
│
├── Genre (Enum)
│   └── // Gaming, Cooking, Coding...
│
├── ChatStream (Class)
│   ├── messages (HashMap<UserMessage.id, pair (tupe[video_timestamp (long), UserMessage])>)
│   └── participated (ArrayList<User>)
│
├── VideoInfo (Class)
│   ├── url (String)
│   ├── title (String)
│   ├── timestamp (long)
│   └── playing (boolean)
│
├── Message (Class)
│   ├── id (String)
│   ├── timestamp (long)
│   └── content (String)
│
├── UserMessage(Extends Message)
│   ├── sender (User)
│   └── flagged (boolean)
│
└── FullUser (Extends User)
    ├── token (String)
    ├── email (String)
    ├── password (byte[])
    ├── creation_date (long)
    ├── last_login (long)
    └── avatar_url (String)
Xu-Gavin commented 9 months ago

Session should be done by @itsmarsss but I'll see if there is any more work needed for the setup.

Xu-Gavin commented 9 months ago

I'm working on branch feature/#1-setup-basic-backend-modules

Hoping to finish this ticket in the next 2 days.

Xu-Gavin commented 9 months ago

I'm going to use the term 'points' over the term 'karma' because I feel like Karma might confuse people who don't use Reddit. (Talking about the user module)

Xu-Gavin commented 9 months ago

Had kind of a mishap since we are switching to Java before going too deep in rust. Decisions revolved around trying to get a minimum product out faster.