Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

K3: Förklaringar kring de olika kraven #33

Open
sawariz0r opened this issue Jun 20, 2022 · 0 comments
Open

K3: Förklaringar kring de olika kraven #33

sawariz0r opened this issue Jun 20, 2022 · 0 comments

Comments

@sawariz0r
Copy link
Collaborator

sawariz0r commented Jun 20, 2022

Godkänt

Backenden ska byggas med hjälp av Node och Socket.io

Här klarar du dig gott med bara node och socket.io-paketet, så skulle du vilja använda ytterligare paket för att lösa det är det fritt fram. Men viktigt att komma ihåg: Det är genom socket.io servern och klienten ska kommunicera.

Den ska ha en tillhörande frontend

Du behöver alltså skapa en tillhörande frontend som ska ha stöd för dessa funktioner, den ska stödja möjligheten att skapa, skriva i flera rum och ta bort dessa i frontenden. Viktigt även här att kommunikationen mellan klient och server sker med socket.io-client

Den ska spara meddelande och rum långsiktigt, i en databas

Valet av databas är frivilligt, men jag skulle rekommendera att använda sqlite3. Skulle du välja att använda en annan databas, måste du inkludera instruktioner och anslutningsuppgifter för denna databas. Dessa kan du skicka i samband med inlämningen

Den ska ha stöd för flera chatt-rum

Man ska alltså kunna skapa och ha flera separata chatt-rum samtidigt.

Man ska kunna skapa och ta bort chattrum

Tror denna är tydlig nog :)

När man tar bort ett chattrum ska även dess meddelande tas bort

Om du skulle ta bort ett chattrum, vill jag även att dess meddelande ska tas bort. Du behöver alltså ta bort både rum och meddelande från databasen när ett rum tas bort. Här skulle du kunna nyttja styrkan av relationer (och ON DELETE CASCADE) mellan två tabeller.

Chattrum som skapas ska ha unika namn

Du behöver se till så två rum inte kan ha identiska namn, exempelvis genom att kolla om det finns innan du skapar det.

Varje meddelande ska ha info om vem som skrev det och när

I ett meddelande behöver du alltså ha både name och en tidsstämpel på när det skrevs. Ex:

{
  name: "Oscar",
  timestamp: "20-06-22 12:51" // (bör vara en date-sträng)
}

Den ska innehålla en middleware som sparar loggar med relevant info i en eller enskilda filer (tidsstämpel, vem som skrev det, i vilken kanal)

Här är det lättast att skriva sin egen, men du kan även använda 3e parts-paket om du hittar ett lämpligt sådant. Det behöver innehålla en tidsstämpel, namn och vilken kanal de skrev i.

Den ska validera meddelande på backenden så att en användare inte kan skicka ett tomt meddelande

Du behöver se till så man inte kan skicka ett tomt meddelande, genom att validera datan du får från klienten.

Väl godkänt (minst 3)

Klienten ska visa alla användare som är aktiva i chatten/rummet

En lista på användare som har en aktiv anslutning och är med i det rummet

När någon skriver ska det finnas någon form av indikator att någon håller på att skriva ett meddelande (ex. “... skriver just nu”)

Du behöver berätta för alla användare i det rummet där det skrivs, att någon skriver ett meddelande - t.ex. när de skriver något i input-fältet så ska de andra användarna kunna se det.

Det ska finnas stöd för att skapa ett låst rum som kräver lösenord

Man ska kunna skapa ett rum som är lösenordsskyddat, så när du försöker ansluta till det så behöver du ange just det lösenordet.

Man ska inte kunna ta bort ett lösenordsskyddat rum utan lösenordet

Hör ihop med föregående, du behöver ha och ange lösenordet för att kunna ta bort ett lösenordsskyddat rum.

Det ska finnas stöd för att skicka direktmeddelande till andra användare

På samma sätt som vi har rum, så vill jag att man ska kunna skriva direkt till andra användare.

Det ska finnas stöd för att skicka emojis i meddelanden

Stöds emojis rakt upp och ner en sträng eller behöver du hantera det på något specifikt sätt?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant