Skip to content

sbarczyk/Gymtracker

Repository files navigation

GymTracker

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


Cel projektu

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.


Cele funkcjonalne

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

Model danych (kolekcje)

  • users — dane użytkownika (z systemem punktów)
  • exercises — dostępne ćwiczenia
  • workouts — zapisy treningów z datą, ćwiczeniami i seriami
  • measurements — pomiary sylwetki (waga, biceps, klatka, inne obwody)
  • events — limitowane wydarzenia specjalne (z możliwością rejestracji)

Technologie

Warstwa Technologia
Baza danych MongoDB
Backend Node.js + Express + Mongoose
Frontend testy w Postmanie
Narzędzia Docker, MongoDB Compass, DataGrip

Czego się nauczyliśmy

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.

Setup projektu

1. Sklonuj repozytorium

git clone https://github.com/sbarczyk/Gymtracker.git
cd Gymtracker

2. Dodaj plik .env w folderze projektu:

PORT=3000
JWT_SECRET=12345
MONGO_URI=mongodb://127.0.0.1:27017/gymtracker?replicaSet=rs0

3. Zainstaluj zależności backendu

npm install

4. Uruchom MongoDB z replica set w Dockerze

docker run -d   --name gymtracker-mongo   -p 27017:27017   -v mongo-data:/data/db   mongo:6   --replSet rs0 --bind_ip_all

5. Zainicjuj replica set (jednorazowo po starcie MongoDB)

docker 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"}]})'

6. Przywróć bazę danych z dumpu

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/gymtracker

7. Uruchom backend

npm start

Serwer backendowy będzie działać pod adresem: http://localhost:3000


Licencja

Projekt udostępniony w celach edukacyjnych.

About

Backend project developed for the Databases II course at AGH UST, focused on NoSQL data modeling.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors