Projekt realizowany w ramach przedmiotu Bazy Danych II na Akademii Górniczo-Hutniczej w Krakowie, Wydziale Informatyki.
Aplikacja skupia się na warstwie backendowej oraz praktycznym wykorzystaniu bazy dokumentowej (NoSQL) — MongoDB.
Celem projektu było poznanie zasad modelowania danych w nierelacyjnych bazach danych, tworzenie zapytań agregujących oraz implementacja operacji CRUD w środowisku Node.js.
Autorzy: Szymon Barczyk, Jan Dyląg
Aplikacja do monitorowania treningów siłowych i progresu sylwetki użytkownika, z możliwością zapisywania się na wspólne treningi z trenerem personalnym oraz testy siłowe ze znajomymi.
| Nr | Cel główny | Opis |
|---|---|---|
| 1 | CRUD | • Dodawanie/edycja/usuwanie użytkowników • Ćwiczenia • Treningi (daty, ćwiczenia, serie, powtórzenia, ciężar) • Pomiary ciała (waga, biceps, klatka itd.) • Wydarzenia specjalne |
| 2 | Operacje transakcyjne i kontrola równoczesnego dostępu | Rejestracja na limitowane wydarzenia, np. testy siły, wspólne treningi – z ograniczoną liczbą miejsc |
| 3 | Raportowanie & zapytania agregujące | • Najczęściej wykonywane ćwiczenia użytkownika • Ilość treningów użytkownika w danym miesiącu • Ranking punktów użytkowników |
users— dane użytkownika (z systemem punktów)exercises— dostępne ćwiczeniaworkouts— zapisy treningów z datą, ćwiczeniami i seriamimeasurements— pomiary sylwetki (waga, biceps, klatka, inne obwody)events— limitowane wydarzenia specjalne (z możliwością rejestracji)
| Warstwa | Technologia |
|---|---|
| Baza danych | MongoDB |
| Backend | Node.js + Express + Mongoose |
| Frontend | testy w Postmanie |
| Narzędzia | Docker, MongoDB Compass, DataGrip |
Podczas realizacji projektu zdobyliśmy doświadczenie w:
- praktycznym wykorzystaniu bazy dokumentowej (MongoDB),
- modelowaniu danych w systemie nierelacyjnym,
- projektowaniu architektury backendu w Node.js i Express,
- pracy z operacjami CRUD, transakcjami i agregacjami w NoSQL,
- konteneryzacji środowiska z użyciem Dockera.
git clone https://github.com/sbarczyk/Gymtracker.git
cd GymtrackerPORT=3000
JWT_SECRET=12345
MONGO_URI=mongodb://127.0.0.1:27017/gymtracker?replicaSet=rs0npm installdocker run -d --name gymtracker-mongo -p 27017:27017 -v mongo-data:/data/db mongo:6 --replSet rs0 --bind_ip_alldocker exec -it gymtracker-mongo mongosh --eval 'rs.initiate({_id: "rs0", members: [{_id: 0, host: "localhost:27017"}]})'lub – jeśli masz zainstalowany lokalnie mongosh:
mongosh "mongodb://127.0.0.1:27017" --eval 'rs.initiate({_id: "rs0", members: [{_id: 0, host: "localhost:27017"}]})'Upewnij się, że masz folder dump/ (np. ./dump/gymtracker). Następnie uruchom:
mongorestore --uri="mongodb://127.0.0.1:27017/gymtracker?replicaSet=rs0" --drop ./dump/gymtrackernpm startSerwer backendowy będzie działać pod adresem: http://localhost:3000
Projekt udostępniony w celach edukacyjnych.