Aplikacja internetowa słuząca do zarządzania projektami i zadaniami do danego projektu. Aplikacja składa się z monorepo, w którym mamy do dyspozycji oddzielny back-end jak i front-end.
- NestJS
- Fastify
- TypeORM
- PostgreSQL
- Jest
- OpenAPI (Swagger)
- Angular
- RxJS
- NGXS
- Tailwind CSS
- uwierzytelnianie za pomocą JWT - aplikacja korzysta z tokenów JWT do uwierzytelniania użytkowników i posiada mechanizm odświeżania tokenów
- aplikacja pozwala na logowanie na wiele urządzeń jednocześnie
- aplikacja posiada mechanizm obsługi wyjątków
- aplikacja posiada mechanizm logowania
- aplikacja jest w pełni przetłumaczona na język angielski i polski
- aplikacja posiada mechanizm wysyłania maili, osobno dla dev i prod (wzorzec strategii)
- aplikacja posiada mechanizm obsługi plików (wzorzec strategii)
- aplikacja posiada mechanizm obsługi zadań cyklicznych (cron)
- aplikacja posiada wydzielone środowiska dla dev i prod
- aplikacja posiada wydzielony plik konfiguracyjny
- aplikacja posiada RBAC (Role Based Access Control)
- aplikacja posiada CLS (Continuation Local Storage)
- napisano dokumentację API za pomocą OpenAPI (Swagger)
- i wiele innych funkcjonalności, które można znaleźć w kodzie aplikacji
- aplikacja posiada system zarządzania stanem za pomocą NGXS
- aplikacja jest w pełni przetłumaczona na język angielski i polski
- komponenty są w pełni re-używalne, były pisane zgodnie z zasadami DRY oraz użyto metodologii Atomic Design
- aplikacja pisana zgodnie z nowymi standardami Angulara - użyto m.in. sygnały
- i wiele innych funkcjonalności, które można znaleźć w kodzie aplikacji
- Turborepo w celu automatyzacji skryptów i zarządzania strukturą monorepo
- ESLint i Dprint do statycznej analizy kodu i utrzymania jednolitej jakości kodu
- Docker dla środowiska deweloperskiego
Podczas pisania aplikacji stosowano zasady SOLID, DRY, composition over inheritance, dependency injection, wzorce projektowe, wzorce architektoniczne, pisano testy oraz przyjęto inne dobre praktyki programistyczne.
- Pobieramy projekt na lokalne środowisko
- wykonujemy:
pnpm install
# or
npm install
Uwaga: w tym momencie zainstalują się wszystkie zalezności potrzebne do uruchomienia projektu oraz stworzą się dla nas pliki .env w strukturze back-endu
- W utworzonych plikach .env definiujemy swoje własne klucze API i dane konfiguracyjne.
- W strukturze front-endu definiujemy adres naszego API w pliku
enviroment.ts
Jeżeli chcemy uruchomić projekt lokalnie, to:
- Sprawdzamy czy mamy uruchomioną bazę danych, projekt korzysta z bazy danych
PostgreSQL
- wykonujemy:
pnpm run dev
# or
npm run dev
Jeżeli chcemy uruchomić projekt w kontenerach Docker, to:
- kopiujemy plik
.env.docker.dev.example
do.env
w głównym katalogu projektu - wykonujemy:
docker-compose -f docker-compose.dev.yml --env-file .env up -d
Domyśnie, jeżeli użyjemy jednej z powyższych ścieżek, to:
- aplikacja back-endowa powinna być dostępna na adresie http://localhost:3000
- aplikacja front-endowa powinna być dostępna na adresie http://localhost:4200
Adresy wklejamy do przeglądarki internetowej.