Warning
Ten projekt został porzucony.
Sprawdź CaaTS, to jest prawdopodbnie to czego szukasz.
GraphQL/REST API dla wszystkich studentów PJATK.
Mimo faktu, że Altapi stanowiło przełom jako usługa do planu zajęć, nie spełnia moich wysokich oczekiwań.
Puppy adresuje problemy związane z Altapi
- Brak obsługi "rezerwacji"
- Monolityczna aplikacja reactowa
- Problematyczny protokół scrapowania
- Brak obsługi kont dla studentów
- Słaba jakość dokumentacji w OpenAPI
- Pełne wsparcie dla wszystkich wydarzeń z planu zajęć
- Plan zajęć będzie dostępny jako:
- GraphQL API (
/graphql
) - REST API (
/rest/v1
) - ICS (
/ics
) - Google Calendar
- GraphQL API (
- Dodanie obsługi kont dla studentów (poprzez Google Identification Services), przechowujące informacje o:
- Grupach studenckich
- Prywatnych scraperach
- GraphQL over WS jako protokół komunikacji dla scraperów
- szczeniaczki 🐾 🐶 🥺
Bardziej szczegółowe zmiany
W Altapi wykorzystywana była biblioteka mongoose
(wraz z MongoDB). Zostanie ona zastąpiona przez ORM Prisma wraz z Postgres.
Altapi było pozbawione jakiejkolwiek autentykacji czy autoryzacji. Scrapery były wewnątrz zaufanej sieci i całe dostarczanie danych było oparte wyłącznie o zaufanie. Tym razem każdy scraper będzie miał przypisanego właściciela.
Poprzedni projekt całkowicie był napisany w konwencji code first. W tym projekcie jednak została zastosowana konwencja schema first, ponieważ brak dobrego type reflection w TypeScript utrudnia pracę na dłuższą metę.
Również tym razem ESLint będzie miał surowsze zasady związane z pisaniem type safe kodu.
Mimo, że NestJS, framework który został wykorzystany do tworzenia aplikacji, wykorzystuje domyślnie CommonJS, w tym projekcie wszystko wykorzystuje ES Modules oraz targetuje w najnowsze wersje Node'a.
W stabilnej fazie projektu zostaną zaimplementowane moduły WASI/WASM obsługę parsowania HTML'a zapewniające otrzymanego z scrapera.
W tym projekcie zostanie zaimplementowana obsługa SSR dla landing page. Aplikacja do planu zajęć pozostanie jako SPA.
git clone https://github.com/pjatk21/puppy-api puppy && cd puppy
cp docker/examples/.*.env .
# tutaj uzupełnij swoje klucze
docker-compose pull
docker-compose up -d database
docker-compose run --rm api yarn prisma migrate deploy
docker-compose up -d
docker run --rm -d -e PUPPY_GATEWAY="https://puppy.kpostek.dev" -e SCRAPER_TOKEN="<token scrapera>" ghcr.io/pjatk21/puppy-scrapy