https://github.com/jurek-muszynski/pap-ecommerce
Half-term project assignment as part of the Application Programming class @ Warsaw University of Technology
https://github.com/jurek-muszynski/pap-ecommerce
docker java rest-api
Last synced: 3 months ago
JSON representation
Half-term project assignment as part of the Application Programming class @ Warsaw University of Technology
- Host: GitHub
- URL: https://github.com/jurek-muszynski/pap-ecommerce
- Owner: jurek-muszynski
- Created: 2024-12-03T21:26:25.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-03-30T12:03:47.000Z (over 1 year ago)
- Last Synced: 2025-05-07T17:48:13.277Z (about 1 year ago)
- Topics: docker, java, rest-api
- Language: Java
- Homepage:
- Size: 1000 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# PAP2024Z-Z22
#### Członkowie Zespołu
- Jakub Antas
- Jerzy Muszyński
- Mateusz Lewko
- Albert Skutnik
### E-commerce Application :shopping_cart:
Głównym celem tego projektu jest stworzenie aplikacji w stylu sklepu-online, która pozwalałaby użytkownikom na przeglądanie, wybór oraz zakup produktów. System będzie posiadał różne role dla użytkownika (klient, admin), jak i również funkcje wspierające cały proces zakupowy, takie jak koszyk, system płatności, katalog dostępnych produktów, możliwość składania zamówień oraz ich śledzenie.
### Technologie wybrane do pracy nad projektem :tools:
---
1. Graficzny interfejs użytkownika =\> **Java FX**
2. Główna logika działania sklepu +Api =\> **Java Spring Boot**
3. Baza danych =\> **PostgreSQL**
### Instrukcja instalacji
---
__Pierwszym__ krokiem który należy wykonać jest sklonowanie repozytorium oraz stworzenie pliku o nazwie `.env` w głównym katalogu projektu. Plik ten odpowiedzialny jest za konfigurację klucza szyfrującego tokeny JWT oraz innych koniecznych zależności jak login i hasło do aplikacji mailowej wysyłającej powiadomienia
```bash
git clone https://gitlab-stud.elka.pw.edu.pl/pap2024z-z22/pap2024z-z22.git
cd pap2024z-z22
```
```bash
#.env
SPRING_DATASOURCE_USERNAME=
SPRING_DATASOURCE_PASSWORD=
JWT_SECRET_KEY=
JWT_EXPIRATION_TIME=
SUPPORT_EMAIL=
APP_PASSWORD=
MAIL_HOST=
MAIL_PORT=
```
Instalacje oraz uruchomienie programu obsługuje skrypt `run-ecommerce.sh`, który jest odpowiedzialny za pobranie oraz skonfigurowanie wszystkich koniecznych zależności do uruchomienia aplikacji na kontenerze dockerowym (część backendowa) oraz maszynie lokalnej (frontend). Poszczególne etapy są krótko opisane w samym skrypcie. Aplikacje należy uruchomić w następujący sposób
```bash
sh run-ecommerce.sh
```
W przypadku błędów uzyskanych po uruchomieniu skryptu należy przede wszystkim upewnić się że:
1. nasz system nie konwertuje automatycznie LF -> CRLF przy każdorazowym pobraniu kodu ze zdalnego repozytorium, potencjalnym rozwiązaniem może być zastosowanie komendy `git config core.autocrlf false`
2. doszło do poprawnej instalacji dockera oraz docker-compose: `docker --version` i `docker-compose --version`
Alternatywą do uruchomienia aplikacji w kontenerze jest posłużenie się którymś z IDE obsługujących projekty mavenowe, np. Intelij IDEA. Z poziomu takiego środowiska należy oddzielnie uruchomić projekt backendowy znajdujący się w `backend/` oraz frontendowy `frontend/`
### Główne funkcjonalności: :rocket:
---
1. **Podział na użytkowników i administratorów**
* System posiadałby dwie klasy użytkowników z różnym zakresem dostępu do jego usług
2. **Rejestracja użytkowników i autoryzacja** =\>
* Rejestracja oraz logowanie przy użyciu hasła/email oraz ewentualnie dodatkowo implementacja mechanizmu SSO
3. **Katalog produktów** =\>
* Główny widok z listą produktów z podstawowymi informacjami =\> zdjęcie, nazwa i cena
4. **Wyszukiwarka produktów** =\>
* Pasek wyszukiwania, ułatwiający dostęp do towarów na podstawie ich nazw
5. **Filtrowanie/sortowanie produktów** =\>
* Proste filtry katalogu produktów według cen, kategorii, średniej ocen, itd.
6. **Szczegóły produktu** =\>
* Oddzielny widok/strona w obrębie aplikacji na szczegółowe dane dotyczące produktu (zdjęcie, opis, recenzje, itd.)
7. **Koszyk zakupowy** =\>
* Użytkownik (klient) może dodawać/usuwać/edytować produkty w koszyku
8. **Proces składania zamówień** =\>
* Jednoetapowy proces składania zamówień, polegający na podsumowaniu towarów z koszyka i ewentualnym wybraniem adresu dostawy
9. **Proces zakupu** =\>
* Potwierdzenie wybranych produktów z koszyka, przekierowanie do transakcji
* Ewentualna integracja z zewnętrznym narzędziem do bezpiecznych płatności online, typu PayPal
10. **Podsumowanie zamówienia** =\>
* Po finalizacji procesu zakupowego, klient zostanie przekierowany do widoku z podsumowaniem produktów i adresu dostawy
11. **Zarządzanie zamówieniami** =\>
* Każdy klient otrzymałby informacje o statusie swoich zamówień/zakupów, wraz z podsumowaniem i możliwością śledzenia statusu realizacji na bieżąco
12. **Panel Administratora** =\>
* Oddzielne widoki dla użytkowników-administratorów, dzięki któremu mieliby specjalny dostęp do aplikacji
13. **Proste zarządzanie stanem magazynowym** =\>
* Administratorzy będą mieli możliwość nadzoru nad produktami/zamówieniami/użytkownikami =\> zarządzanie systemu na poziomie zapewniania usług klientowi
14. **Sekcja oceny produktu** =\>
* Użytkownicy będą mieli możliwość oceny danego produktu w skali 1-5
15. **Sekcja komentarzy pod produktami** =\>
* Każdy klient miałby możliwość dodawania opinii/komentarzy/recenzji do zakupionych przez siebie produktów, co również pozwoliłoby na wyświetlenie średniej oraz łącznej liczby opinii danego przedmiotu
16. **Edycja profilu użytkownika** =\>
* Każdy klient miałby możliwość uzupełnienia swojego profilu dodatkowymi informacjami poza loginem i hasłem. Dodatkowo mógłby podać swoje zainteresowania/hobby, kategorie produktów, które szczególnie by go interesowały,
17. **Personalizacje/rekomendacje** =\>
* Na podstawie profilu klienta otrzymywałby on rekomendacje nowych/ciekawych produktów w postaci wiadomości email
18. **Powiadomienia email** =\> Powiadomienia email po rejestracji oraz zakupie z potwierdzeniem zamówienia
19. **Integracja z kalendarzem** =\>
* Możliwość dodania wydarzeń do osobistego kalendarza (google calendar) w postaci przypomnień o przewidywanej dacie dostawy bądź dostępności obecnie brakującego towaru
20. **Widok "O nas" i "Kontakt"** =\> Informacyjne widoki wraz z formularzami kontaktowymi