⛩️ WarsawJS Workshop #31 — Node.js
Front-end part created by @g3f4 — https://github.com/G3F4/warsawjs-workshop-31-calendar-client
Dostępne tylko po uruchomieniu bazy danych MongoDB oraz ewentualnie klienta.
-
✅ Stworzenie struktury aplikacji
-
✅ Stworzenie web serwera (
npm/express
) -
✅ Stworzenie pierwszego endpointa
-
✅ Napisanie testu integracyjnego (
npm/jasmine
&npm/supertest
) -
✅ Wydzielenie konfiguracji do zewnętrznego pliku (
npm/dotenv
) -
🌟 Bonus: Dodanie middlewarów
- Logowanie requestów (
npm/morgan
) - CORS (
npm/cors
) - Włączenie kompresji nagłówków (
npm/compression
)
- Logowanie requestów (
-
✅ Dodanie middleware-a do odczytywania body z zapytania POST (
npm/body-parser
) -
✅ Napisać testy weryfikujące endpointy (
npm/ajv
).
Wykorzystać schemy z katalogudocs/schemas
.
Schemy są wygenerowane za pomocą https://www.jsonschema.net/. -
✅ Podłączenie się od bazy danych (
npm/mongoose
) -
✅ Implementacja API na potrzeby części klienckiej (
npm/dayjs
).-
GET: /api/calendar?month={YYYY-MM}
— zwracanie danych do budowy kalendarzaresponse body
{ data: [ { date: string(format=YYYY-MM-DD), events: [ { id: string(format=guid) title: string } ] } ] }
-
GET: /api/day?date={YYYY-MM-DD}
— zwracanie danych do prezentowania wydarzeń z pojedynczego dniaresponse body
{ data: [ { id: string(format=guid) title: string description: string time: string(format=YYYY-MM-DDThh:mm) notification: boolean } ] }
-
POST: /api/event
— dodanie nowego wydarzenia (konkretnego dnia)request body
{ title: string description: string time: string(format=YYYY-MM-DDThh:mm) notification: boolean }
response body
{ id: string }
-
PUT: /api/event/:id
— aktualizacja wydarzeniarequest body
{ title: string description: string time: string(format=YYYY-MM-DDThh:mm) notification: boolean }
response body
{ id: string }
-
DELETE: /api/event/:id
— usunięcie wydarzeniarequest body
{ id: string }
response body
{ id: string }
-
POST: /api/subscriptions
request body
{ data: { endpoint: URL expirationTime: Date keys: { p256dh: string auth: string } } }
response body
{ id: string }
-
-
🌟 Walidacja parametrów zapytań HTTP (
npm/celebrate
&npm/@hapi/joi
) -
🌟 Bonus: Uwierzytelnienie za pomocą GitHuba (
npm/passport
)
The MIT License @ 2019