Aplikacja SpringBoot dla portalu do grupowego tworzenia i dzielenia się fiszkami. Daje możliwość tworzenia grup, przedmiotów w grupach oraz talii fiszek dla danych przedmiotów. Zaimplementowano uwierzytelnianie i autoryzację JWT, chat tekstowy oraz wspomaganie tworzenia fiszek przez ChatGPT.
Uruchomienie:
docker-compose -p flashgpt up --build --remove-orphans --force-recreate
POST /api/auth/register
Rejestracja. Wymagane parametry:
- firstname: String
- lastname: String
- email: String
- password: String
- role: enum(USER, MANAGER, ADMIN)
Zwraca:
- access_token: String
- refresh_token: String
GET /api/check
Zwraca wiadomość zalogowanemu użytkownikowi.
GET /api/users[?id={}]
Zwraca dane użytkownika. Opcjonalny parametr: id w przypadku jego braku zwraca aktualnie zalogowanego użytkownika.
POST /api/auth/login
Logowanie. Wymagane parametry:
- email: String
- password: String
Zwraca:
- access_token: String
- refresh_token: String
PATCH /api/users
Zmiana hasła. Wymagane parametry:
- currentPassword: String
- newPassword: String
- confirmationPassword: String
POST /api/auth/refresh-token
Zmiana tokenu. Wymagany refresh_token w nagłówku Authorization. Zwraca:
- access_token: String
- refresh_token: String
GET /api/auth/logout
Wylogowanie.
POST /api/group/create
Tworzenie grupy. Wymaga access token jako bearer token. Wymagane body:
- name: String
- code: String
POST /api/group/join
Dołączanie do grupy. Wymaga access token jako bearer token. Wymagane body:
- code: String
GET /api/group/user-groups
Zwraca listę grup użytkownika. Wymaga access token jako bearer token.
POST /api/subject/create-subject
Dodanie przedmiotu do grupy. Wymaga access token jako bearer token. Wymagane body:
- groupId: Integer
- name: String
GET /api/subject/get-subjects?groupId={}
Zwróć przedmioty danej grupy. Wymaga access token jako bearer token. Wymagany parametr:
- groupId: Integer
Broker czatu. Lokalnie uruchomiony serwer działa pod tym adresem.
/topic/{subjectId}
Dla wiadomości czatu danego przedmiotu należy zasubskrybować topic.
/app/{subjectId}
Ścieżka do wysyłania wiadomości. Zawartość wiadomości to tekstowy JSON z polami:
- sender: String (id użytkownika)
- content: String
Serwer przesyła do subskrybentów JSON z polami (sender, content, id, date).
GET /api/message/?subjectId={}×tamp={}
Zwraca wiadomości przedmiotu. Zwraca najnowsze 20 wiadomości dla przedmiotu, opcjonalnie 20 ostatnich wiadomości przed datą timestamp.
Wymagany parametr:
- subjectId: Integer
Opcjonalny parametr
- timestamp: Timestamp (String formatu yyyy-mm-dd hh:mm:ss.[fff...])
POST /api/deck/create
Tworzenie talii fiszek. Wymaga access token jako bearer token. Wymagane parametry:
- name: String
- groupId: Integer
- subjectId: Integer
POST /api/flashcards/create-flashcard
Dodanie fiszki do talii. Wymaga access token jako bearer token. Wymagane body:
- front: String
- back: String
- groupId: Integer
- deckId: Integer
GET /api/decks/subject-decks?subjectId={}
Zwraca wszystkie talie danego przedmiotu i jego fiszki Wymaga access token jako bearer token. Wymagany parametr:
- subjectId: Integer
GET /api/flashcards/deck-flashcards?groupId={}&deckId={}
Zwraca fiszki danej talii. Wymaga access token jako bearer token. Wymagane parametry:
- groupId: Integer
- subjectId: Integer
GET /api/gpt/flashcard-hint?groupName={}&userPrompt={}
Podpowiedź rewersu dla fiszki. Zwraca odpowiedź od gpt-3.5-turbo. Wymaga access token jako bearer token. Parametry:
- groupName: String
- userPrompt: String