Przykładowy projekt pod zajęcia z backendów: REST API w Django + osobny, uproszczony frontend (statyczny HTML/JS). Temat: zarządzanie firmowymi plikami (upload i udostępnianie), wewnętrzne wiadomości oraz lista zadań TODO.
- Python 48.4%
- JavaScript 30.7%
- HTML 12.4%
- CSS 8.5%
| backend | ||
| frontend | ||
| README.md | ||
| requirements.txt | ||
Company Files (Django REST API + prosty frontend)
Przykładowy projekt pod zajęcia z backendów: REST API w Django + osobny, uproszczony frontend (statyczny HTML/JS). Temat: zarządzanie firmowymi plikami (upload i udostępnianie), wewnętrzne wiadomości oraz lista zadań TODO.
Struktura repozytorium
backend/– Django + Django REST Frameworkfrontend/– statyczny frontend (HTML/CSS/JS) komunikujący się z APIrequirements.txt– zależności Pythona dla backendu
Funkcjonalności (MVP)
- Pliki:
- upload plików i metadanych (tytuł)
- lista plików: własne + udostępnione
- pobieranie plików przez endpoint wymagający autoryzacji
- udostępnianie pliku innemu użytkownikowi z uprawnieniem
readlubwrite
- Wiadomości:
- inbox / outbox
- wysyłanie wiadomości do użytkownika po
username - oznaczanie wiadomości jako przeczytanej
- TODO:
- CRUD dla własnych zadań
- oznaczanie zadania jako wykonane
- Dokumentacja API:
- OpenAPI schema + Swagger UI
Zastosowane rozwiązania (dlaczego „tak”)
- Django REST Framework: serializery + viewsety + routery (klasyczny, dydaktyczny wzorzec).
- JWT (SimpleJWT): pokazuje nowoczesny wariant autoryzacji dla SPA i klientów mobilnych.
- CORS: ułatwia uruchomienie osobnego frontendu w przeglądarce podczas zajęć.
- drf-spectacular: automatyczne OpenAPI + Swagger UI do testowania i prezentacji endpointów.
- SQLite: minimalne wymagania do uruchomienia lokalnie (łatwe na laboratoria).
Uruchomienie (dev)
Wymagania:
- Python 3.11+ (projekt działa na Python 3.13)
Backend
python3 -m pip install -r requirements.txt
cd backend
python3 manage.py migrate
python3 manage.py createsuperuser
python3 manage.py runserver
Linki (domyślnie):
- Admin: http://127.0.0.1:8000/admin/
- Swagger UI: http://127.0.0.1:8000/api/docs/
- OpenAPI: http://127.0.0.1:8000/api/schema/
Frontend (statyczny)
W osobnym terminalu:
cd frontend
python3 -m http.server 5173
Następnie otwórz: http://127.0.0.1:5173/
Frontend loguje się do /api/auth/token/ (JWT) i wykonuje przykładowe operacje: upload pliku, lista dokumentów, udostępnianie, TODO, wiadomości.
Szybki „smoke test” przez cURL
- Pobierz token:
curl -s -X POST http://127.0.0.1:8000/api/auth/token/ \
-H 'Content-Type: application/json' \
-d '{"username":"admin","password":"HASLO"}'
- Lista dokumentów:
curl -s http://127.0.0.1:8000/api/documents/ \
-H "Authorization: Bearer ACCESS_TOKEN"
Na później ;-)
Rozbudowaną, bardziej „akademicką” instrukcję znajdziecie w repozytoryjnym wiki.