System dziennika elektronicznego to aplikacja webowa wspierająca zarządzanie procesami edukacyjnymi w szkołach. Projekt powstał jako część zaliczenia przedmiotu Programowanie w zastosowaniach i umożliwia efektywne zarządzanie planem lekcji, obecnościami oraz ocenami uczniów.
Aplikacja została zaprojektowana w oparciu o architekturę layoutów przypisanych do ról użytkowników, co zapewnia przejrzystość struktury i separację odpowiedzialności. Dla każdej roli zdefiniowano osobny layout oraz zestaw komponentów i tras:
- Administrator (
AdminLayoutComponent):
Zarządzanie klasami, przedmiotami, użytkownikami oraz planem lekcji. - Nauczyciel (
TeacherLayoutComponent):
Wystawianie ocen, przegląd planu lekcji, zaznaczanie obecności. - Uczeń (
StudentLayoutComponent):
Przegląd własnego planu lekcji oraz historii obecności.
Każda sekcja posiada własną nawigację, trasowanie i zabezpieczenia (adminGuard, teacherGuard, studentGuard), co pozwala na precyzyjne kontrolowanie dostępu i łatwe rozszerzanie funkcjonalności bez naruszania innych modułów.
Dzięki temu podejściu aplikacja jest skalowalna, łatwa w utrzymaniu i przygotowana na ewentualne dodanie nowych ról użytkowników, np.:
- rodzic,
- sekretariat.
- Rejestracja obecności: Nauczyciele mogą oznaczać obecności uczniów na zajęciach.
- Dodawanie i edycja klas, przedmiotów: Administrator dodaje, usuwa i edytuje przedmioty i klasy.
- Tworzenie i edycja planu lekcji: Administrator ma możliwość zarządzania harmonogramem zajęć.
- Zarządzanie użytkownikami: Administrator może dodawać, edytować i usuwać konta użytkowników.
- Przegląd planu lekcji: Nauczyciele mogą przeglądać swoje zajęcia w przejrzystym widoku.
- Wystawianie i przeglądanie ocen: Funkcjonalność umożliwiająca nauczycielom ocenianie uczniów.
- Zaawansowana obsługa sesji JWT:
Aplikacja monitoruje ważność tokena JWT. Na 2 minuty przed wygaśnięciem sesji użytkownik otrzymuje dynamiczne powiadomienie (toast) z odliczaniem czasu i możliwością ręcznego przedłużenia sesji. W przypadku braku reakcji i wygaśnięcia tokena następuje automatyczne wylogowanie z odpowiednim komunikatem. System wspiera także bezinwazyjne odświeżanie tokena JWT przez zapytanie HTTP z autoryzacją.
- Framework:
ASP.NET Core 8 - ORM:
Entity Framework Core - Baza danych:
SQL Server - Autoryzacja:
JWT - Logowanie:
Serilog
- Framework:
Angular v19 - UI:
Angular Material - Reaktywność:
RxJS - Powiadomienia:
ngx-toastr
school-logbook/
├── backend/ # Backend oparty na ASP.NET Core
│ ├── Controllers/
│ ├── Data/
│ ├── DTOs/
│ ├── Interfaces/
│ ├── MappingProfiles/
│ ├── Migrations/
│ ├── Models/
│ ├── Properties/
│ ├── Services/
│ ├── appsettings.json
│ └── Program.cs
│
├── frontend/ # Frontend oparty na Angularze
│ ├── src/
│ │ ├── app/
│ │ | ├── core/
│ │ | ├── features/
│ │ | ├── layout/
│ │ | └── shared/
| | ├── assets/
│ │ | └── fonts/
| | └── enviroments/
| |
│ └── angular.json
│
└── README.md
- Node.js:
v22.16.0 - .NET SDK:
v8 - SQL Server: Baza danych jest dostępna online
- Angular CLI:
npm install -g @angular/cli
-
Przejdź do katalogu
backend:cd backend -
Przywróć zależności:
dotnet restore
-
Uruchom API:
dotnet run
Backend będzie dostępny pod adresem:
http://localhost:5234⚠️ Upewnij się, że plikappsettings.jsonzawiera poprawny connection string i klucz do tworzenia JWT.
- Przejdź do katalogu
frontend:cd frontend - Zainstaluj zależności:
npm install
- Uruchom aplikację:
Frontend będzie dostępny pod adresem:
ng serve
http://localhost:4200
| Rola | Hasło | |
|---|---|---|
| Administrator | pstaniul@gmail.com | opel1234 |
| Nauczyciel | barbara@gmail.com | opel1234 |
| Uczeń | janek.kowalski@gmail.com | opel1234 |
Po zalogowaniu token JWT jest zapisywany w localStorage. Wszystkie żądania do backendu wymagają nagłówka:
Authorization: Bearer <token>
| Moduł | Status |
|---|---|
| Logowanie | ✅ Gotowe |
| Role i autoryzacja | ✅ Gotowe |
| Użytkownicy | ✅ Gotowe |
| Plan lekcji | ✅ Gotowe |
| Obecności | ✅ Gotowe |
| Oceny | ✅ Gotowe |
- Anna Sroka
- Barbara Sławińska
- Justyna Szofińska
- Paweł Staniul
Uniwersytet WSB Merito w Poznaniu
Kierunek: Informatyka