Giter VIP home page Giter VIP logo

momentum's Introduction

Momentum

Webbasierte Fitness-Plattform zum Tracking aller Aspekte des Fitness-Lifestyles mit sozialer Interaktion.

momentum's People

Contributors

masterazaroth avatar snlperstripes avatar ushellnotpass avatar wgumenyuk avatar

momentum's Issues

Feature: Geteilte Typdefinition für API-Antwort-Schema

Beschreibung

Geteilte Typdefinition für API-Antwort-Schema im shared-Package, das vom Client und Server verwendet werden kann.

Lösung

Keine Angabe.

Additionaler Kontext

Keine Angabe.

Zusammenhängende Issues

Keine Angabe.

Feature: Add API Test Page

Beschreibung

Add a API test page which tests client and server APIs.

Lösung

Create a Box or Button for a request/route.
If it works fine let the box be green.
If an error ocurred let the box be red.

Additionaler Kontext

Keine Angabe.

Zusammenhängende Issues

issue#29, issue#30

[Feature] Koa-Server erstellen

Beschreibung

Koa-Server erstellen und CORS-Middleware hinzufügen.

Mögliche Lösung

Keine Angabe.

Additionaler Kontext

Keine Angabe.

Feature: Status-Route für die API hinzufügen

Beschreibung

  • Hinzufügen einer GET /status Route, die Uptime und ähnliche Informationen liefert.

Lösung

Keine Angabe.

Additionaler Kontext

Keine Angabe.

Zusammenhängende Issues

  • Abhängend von #1.

Epic: Auth-System im Backend

Ziel

Implementieren eines Auth-Systems in der Backend API.

Aufgaben

  • #11
  • #36
  • #14
  • Session-Management mit Redis einbinden
  • Auth-Middleware implementieren
  • #13

Additionaler Kontext

Keine Angabe.

Feature: Create Landing Page

Beschreibung

Create a landing index.html file

Lösung

Create a index.html

Additionaler Kontext

The landing page has a login button

Zusammenhängende Issues

Keine Angabe.

[Feature] Token-Blacklist mit Redis umsetzen

Beschreibung

Sobald ein Nutzer sich abmeldet, muss sein JWT für die restliche Lebenszeit des Tokens in eine Token-Blacklist hinzugefügt werden.

Mögliche Lösung

  • Restliche Lebensdauer kann berechnet werden mit exp abgezogen von iat
  • Tokens werden in einem Redis Set gespeichert

Additionaler Kontext

Abhängig von #96.
Wird durch #49 erledigt.

Feature: Auth-Service hinzufügen

Beschreibung

Auth-Service implementieren.

Lösung

Keine Angabe.

Additionaler Kontext

Keine Angabe.

Zusammenhängende Issues

Keine Angabe.

Feature: `Workout`-Modell für MongoDB

Beschreibung

  • Workout-Modell für MongoDB entwerfen und implementieren.
  • Welche Daten wollen wir über eine Workout speichern (z.B. Länge, Übungen, usw.)?

Lösung

Siehe src/models/User.ts für eine Implementation des Nutzer-Modells, Workout sollte analog zu dem implementiert werden.

Additionaler Kontext

Keine Angabe.

Zusammenhängende Issues

Feature: Login route on Server

Beschreibung

Add a route to the server which handles the login

Lösung

Add a route with koa, which needs a username and passwords

Additionaler Kontext

Different return types depending on the user request sent

Zusammenhängende Issues

Issue-12

Bug: System-Font im Font Stack wird nicht geladen

Beschreibung

System-Font im Font Stack wird nicht geladen.

Reproduktion

Keine Angabe.

Erwartetes Verhalten

System-Font wird verwendet, wenn die primären Schriftarten nicht verfügbar sind.

Screenshots

Keine Angabe.

Umgebung

  • OS: Ubuntu 24.04
  • Browser: Chromium
  • Node.js-Version: v21.7.3

Additionaler Kontext

Keine Angabe.

Zusammenhängende Issues

Keine Angabe.

[Feature] Shared Typdefinitionen hinzufügen

Beschreibung

Für bessere DX können wir geteilte Typdefinitionen hinzufügen.

Mögliche Lösung

Erstellen eines @momentum/shared-Packages im packages-Ordner.

Additionaler Kontext

Keine Angabe.

[Feature] Auth-Routen hinzufügen

Beschreibung

REST-Routen für den Auth-Service hinzufügen.

  • POST /api/v1/auth/login
  • POST /api/v1/auth/register
  • POST /api/v1/auth/logout

Mögliche Lösung

Routen sollen in src/api/v1/auth.ts definiert werden.

Additionaler Kontext

Abhängend von:

Feature: Koa für Backend API installieren

Beschreibung

  • koa und koa-router sowie deren Typdefinitionen (siehe Schtitt 2) im server-Package installieren.

Lösung

  1. Dependencies installieren:
$ pnpm add koa koa-router
  1. Development-Dependencies installieren:
$ pnpm add -D @types/koa @types/koa__router

Additionaler Kontext

Keine Angabe.

Zusammenhängende Issues

Keine Angabe.

Epic: MongoDB einbinden

Ziel

MongoDB mit benötigten Modellen in das Backend einbinden.

Aufgaben

Additionaler Kontext

Keine Angabe.

Zusammenhängende Issues

Keine Angabe.

[Feature] `login`-Service implementieren

Beschreibung

Hinzufügen einer login()-Funktion im Auth-Service1, der bei erfolgreicher Anmeldung ein JWT ausstellt. Nutzerdaten werden mit zod überprüft. Das dazugehörige Login-Schema soll sich im Shared Package befinden.

Mögliche Lösung

Siehe register() für eine mögliche Herangehensweise.

Additionaler Kontext

Abhängig von #107.

Footnotes

  1. Der Auth-Service befindet sich in src/services/auth.ts.

[Feature] Prisma-Modelle implementieren

Beschreibung

Prisma-Modelle für User, Exercise, Split und Workout konzeptionieren und implementieren.

Mögliche Lösung

Keine Angabe.

Additionaler Kontext

Keine Angabe.

[Feature] Auth-Middleware hinzufügen

Beschreibung

Middleware für Authentifizierung implementieren.

Mögliche Lösung

isAuthenticated(ctx: Context, next: NextFunction): Promise<void>;
isNotAuthenticated(ctx: Context, next: NextFunction): Promise<void>;

Additionaler Kontext

Abhängend von:

Feature: Schriftart "Inter" hinzufügen

Beschreibung

Schriftart Inter zum Client hinzufügen.

Lösung

Installation mit Fontsource und Konfiguration in tailwind.config.js.

Additionaler Kontext

Keine Angabe.

Zusammenhängende Issues

Keine Angabe.

Feature: Add Client API for Login

Beschreibung

Add a Client API which sends the Login Credentials to the Server Login API trough a http request.

Lösung

Create a Client API.
Add the server endpoint.
Read the correct Credentials from login field (username and password).
Send the Credentials to the server endpoint.
Handle the server response from the login request.

Additionaler Kontext

Keine Angabe.

Zusammenhängende Issues

Issue#12, Issue#29

Feature: React für Mobile-Client initialisieren

Beschreibung

  • React + Vite für Mobile-Client im eigenen Package (packages/client-mobile) initialisieren.

Lösung

Keine Angabe.

Additionaler Kontext

Keine Angabe.

Zusammenhängende Issues

Keine Angabe.

Feature: Environment-Variablen laden

Beschreibung

  • Umgebungsvariablen laden, um Zugangsdaten zu Datenbanken, Ports, usw. zu konfigurieren.

Lösung

  • Installieren von dotenvx
  • Scripts zu package.json hinzufügen

Warning

Die .gitignore im Root muss ebenfalls aktualisiert werden.

.env*
!.env.vault
{
  // script für Development
  "dev": "dotenvx -f .env.development -- node .",

  // Script für Production
  "start": "dotenvx -f .env.production -- node ."
}

Scripts können dann wie folgt ausgeführt werden:

$ pnpm dev
$ pnpm start

Additionaler Kontext

Keine Angabe.

Zusammenhängende Issues

Keine Angabe.

[Feature] `logout`-Service implementieren

Beschreibung

Hinzufügen einer logout()-Funktion im Auth-Service1, der das Token in die Token-Blacklist hinzufügt und somit invalidiert.

  • Übrige Lebenszeit des Tokens berechnen (aus dem Token-Header)
  • Token in Redis speichern mit Expiry (restliche Lebenszeit)

Mögliche Lösung

logout(token: string): Promise<Momentum.Response>;

Additionaler Kontext

Abhängend von:

#45 wird durch dieses Issue ebenfalls erledigt.

Footnotes

  1. Der Auth-Service befindet sich in src/services/auth.ts.

[Enhancement] Bessere Shared Types und DX für API-Antworten

Beschreibung

Momentan sind die Shared Types für API-Antworten (packages/shared) nicht perfekt — sie können vereinfacht werden, und status und code können aus einem ResponseCode-Objekt gleichzeitig ausgelesen werden.

Mögliche Lösung

Keine Angabe.

Additionaler Kontext

Keine Angabe.

Feature: CORS aktivieren

Beschreibung

CORS aktivieren für spätere Verwendung.

Lösung

  • Installation von @koa/cors
  • Verwenden einer CORS_ORIGIN Umgebungsvariable

Additionaler Kontext

Keine Angabe.

Zusammenhängende Issues

Keine Angabe.

Feature: Pino-Logger implementieren

Beschreibung

  • pino und pino-pretty installieren und implementieren.

Lösung

Keine Angabe.

Additionaler Kontext

Keine Angabe.

Additionaler Kontext

Keine Angabe.

Zusammenhängende Issues

Keine Angabe.

Feature: Nutzer-Modell für `mongoose` implementieren

Beschreibung

  • Implementieren eines Nutzermodells für mongoose.
  • Welche Infomationen wollen wir über Nutzer speichern (Vorname, E-Mail, Geburtsdatum, usw.)?

Lösung

Keine Angabe.

Additionaler Kontext

Keine Angabe.

Zusammenhängende Issues

Keine Angabe.

[Feature] Error-Handler für Koa

Beschreibung

Eigener Error-Handler als Middleware für Koa, der 404 und andere Fehler verarbeiten kann.

Mögliche Lösung

Keine Angabe.

Additionaler Kontext

Keine Angabe.

Feature: Create a Login page

Beschreibung

Create a login page, including username and password fields and a login button

Lösung

Tailwind

Additionaler Kontext

The login button on the landing page should link to this login page

Zusammenhängende Issues

[Feature] MongoDB-Connector implementieren

Beschreibung

MongoDB-Connector analog zum Redis-Connector1 implementieren. Wenn die Verbindung scheitert, dann gesamten Prozess beenden.

Mögliche Lösung

  • Methode namens initMongo() exporieren
  • MONGODB_URL kommt aus den Umgebungsvariablen process.env
  • Siehe src/internal/redis.ts
mongoose.connect(MONGODB_URL);

Additionaler Kontext

Keine Angabe.

Footnotes

  1. src/internal/redis.ts.

Feature: Logging in Production

Beschreibung

Momentan erzeugt pino keinen Output in Production, da targets ein leerer Array ist.

Lösung

  • Unformatierter Output nach stdout
  • Nutzen von logrotate auf *NIX-Systemen

Additionaler Kontext

Keine Angabe.

Zusammenhängende Issues

Keine Angabe.

Feature: `Exercise`-Modell für MongoDB

Beschreibung

  • Exercise-Modell für MongoDB entwerfen und implementieren.
  • Welche Daten wollen wir über eine Übung speichern (z.B. Bezeichnung, betroffenene Muskelgruppen, usw.)?

Lösung

Siehe src/models/User.ts für eine Implementation des Nutzer-Modells, Exercise sollte analog zu dem implementiert werden.

Additionaler Kontext

Keine Angabe.

Zusammenhängende Issues

[Feature] `register`-Service implementieren

Beschreibung

Hinzufügen einer register()-Funktion im Auth-Service1, der einen neues Nutzerkonto in der Datenbank erstellt.

Mögliche Lösung

Nutzerdaten werden mit zod überprüft.

register(data: unknown): Promise<Momentum.Response>;

Additionaler Kontext

Keine Angabe.

Footnotes

  1. Der Auth-Service befindet sich in src/services/auth.ts.

[Feature] Umstieg auf Mongoose

Beschreibung

Prisma ORM ist langsamer als Mongoose und nicht für MongoDB optimiert.

Mögliche Lösung

Umstieg auf Mongoose.

Additionaler Kontext

Keine Angabe.

[Feature] Status-Route hinzufügen

Beschreibung

Status-Route /api/v1/status, die eine erfolgreiche Antwort zurückschickt.

Mögliche Lösung

Keine Angabe.

Additionaler Kontext

  • Abhängend von #51.

Enhancement: ESLint einrichten

Beschreibung

Quellcode wird momentan nicht durch einen Linter überprüft, was auf Dauer zu schlechter Codequalität führen kann.

Lösung

  • Einrichten von ESLint
  • Eventuelle Einbindung in Git Hooks mit Husky

Additionaler Kontext

Keine Angabe.

Zusammenhängende Issues

Keine Angabe.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.