Zespół pracował w ramach kursu CodersCamp. Aplikację wykonali uczestnicy kursu przy pomocy mentora. Zachęcamy do odwiedzenia profili członków zespołu, w celu zapoznania się z ich portfolio.
Mentor: Hubert Kawałek
Uczestnicy:
Wersja demonstracyjna aplikacji jest dostępna TUTAJ.
Opis REST API aplikacji jest dostępny TUTAJ.
Front-end aplikacji znajduje się tutaj: TUTAJ.
Aplikacja została wykonana wg dostarczonych przez organizatorów CodersCamp wymagań. Szablon projektu dostępny jest TUTAJ.
Celem projektu było napisanie w pełni funkcjonalnego REST API wykorzystując dotychczas nabytą wiedzę z następujących technologi: html, css, javascript, typescript, nodejs, reactjs.
Zespół projektowy zdecydował się na stworzenie aplikacji schroniska dla zwierząt o nazwie Złapki. Aplikacja ma na celu usprawnienie działania schroniska dla zwierząt zarówno od strony osoby chcącej zaadoptować zwierzę jak i od strony pracowników schroniska, którzy zajmują się obsługą wniosków adopcyjnych i stanem zwierząt w schronisku.
- Wyszukiwanie i filtrowanie zwierząt gotowych do adopcji (Każdy użytkownik)
- Wysyłanie formularzy adopcyjnych (Osoba zalogowana do schroniska)
- Obsługa bazy zwierząt (Pracownik schroniska)
- Rozpatrywanie wniosków adopcyjnych (Pracownik schroniska)
Utowrzony został szablon graficzny aplikacji w programie Figma.
- Użytkownik ma możliwość zarejestrować się w systemie, podając imię, nazwisko, hasło, powtórzone hasło, telefon, datę urodzenia i adres e-mail.
- Użytkownik ma możliwość zalogować się w systemie, podając adres e-mail i hasło.
- Użytkownik otrzymuje wiadomość mailową z informacją o założeniu konta i linkiem aktywacyjnym.
- Użytkownik ma możliwość zresetować swoje hasło do konta i ustawienia nowego, używając linka wysłanego na jego adres e-mail.
- Użytkownik ma możliwość zmiany swoich danych.
- Użytkownik ma możliwość wylogowania się.
- Użytkownik ma możliwość usunięcia konta.
- Użytkownik może przeglądać wszystkie zwierzęta znajdujące się w schronisku i czekające na adopcje.
- Użytkownik może ustawić filtry wyszukiwania, które pozwolą mu wybrać zwierzęcie takie jakie poszukje i pasujące do jego stylu życia.
- Użytkownik może zapoznać się ze wszystkimi informacjami na temat wybranego zwierzęcia- szczegółowa karta zwierzecia z przeglądaniem galerii zdjęć.
- Na stronie internetowej można znaleźć informację na temat dokładnego procesu adopcyjnego zwierzęcia.
- Na stronie internetowej można przeczytać informacje na temat schroniska Złapki i zespołu je tworzącego.
- Na stronie internetowej można znaleźć informacje kontaktowe do schroniska, wraz z mapą oznaczającą dokładne położenie schroniska.
- Użytkownik po zalogowaniu sie na konto może złożyć wniosek adopcyjny na jedno wybrane zwierzę.
- Użytkownik może cały czas obserwować na jakim etapie procesu adopcyjnego znajduje się jego wniosek (Stepper)
- Użytkownik może wypełnić formularz adopcyjny, różny dla pasa i kota.
- Użytkownik ma wgląd w wysłany formularz adopcyjny.
- Użytkownik po zaakceptowaniu wniosku przez pracownika schroniska może wybrać datę i godzinę obowiązkowego spotkania w schronisku (musi wybrać datę w przeciągu 2 tygodni od zaakceptowania jego wniosku przez pracownika).
- Użytkonwik przy każdej zmianie statusu wniosku zostaje powiadomiony mailowo.
- Użytkownik zostaje powiadomiony mailowo, jeżeli jego wniosek nie został rozpatrzony pozytywnie lub gdy zwierzę zostało zaadoptowane przez inną osobę.
- Użytkownik po zalogowaniu sie na konto może złożyć wniosek o zostanie wolontariuszem.
- Użytkownik może cały czas obserwować na jakim etapie znajduje się jego wniosek (Stepper)
- Użytkownik może wypełnić formularz o zostanie wolontariuszem.
- Użytkownik ma wgląd w wysłany formularz o zostanie wolontariuszem.
- Pracownik schroniska ma możliwość dodawania zwierząt do bazy zwierząt (razem z załączeniem zdjęć zwierząt).
- Pracownik schroniska ma możliwosć uaktualniania informacji o zwierzęciu.
- Pracownik schroniska ma możliwość usuwania zwierzęcia z bazy zwierząt.
- Pracownik schroniska ma możliwość filtrowania zwierząt w bazie.
- Pracownik schroniska ma wgląd we wszystkie wnioski adopcyjne.
- Pracownik schroniska może filtrować wnioski adopcyjne.
- Pracownik schroniska może przeglądać wnioski adopcyjne przypisane do zwierzęcia.
- Pracownik schroniska ma wgląd w wypełniony formularz adopcyjny, informacje o użytkowniku składającym formularz i o zwierzęciu, na który został złożony wniosek.
- Pracownik schroniska może zaakaceptować albo odrzucić wniosek.
- Pracownik schroniska może potwierdzić zaadoptowanie zwierzęcia.
- Pracownik schroniska ma wgląd we wszystkie wnioski o zostanie wolontariuszem.
- Pracownik schroniska może filtrować o zostanie wolontariuszem.
- Pracownik schroniska ma wgląd w wypełniony formularz wolontariusza i w informacje o użytkowniku składającym formularz.
- Pracownik schroniska może zaakaceptować albo odrzucić wniosek.
W trakcie developmentu wykorzystujemy:
- NodeJS
- Swagger
- Tsoa
- Docker
- Heroku
- TypeORM
- PostgreSQL
- GitHub workflow
- React JS
- React Router
- Restful React
- React Hook Form
- Material UI
Aby uruchomić aplikację na lokalnej maszynie, wykonaj następujące kroki:
- Zainstaluj zależności za pomocą komendy:
npm ci
- Uruchom kontenery z bazą danych oraz narzędziem pgAdmin:
docker-compose up
- Wystartuj serwer developerski
npm run dev
Aplikacja będzie dostępna pod adresem localhost:3000/, natomiast API pod adresem localhost:8000/
Kod produkcyjny aplikacji umieszczamy w katalogu build
.
Aby uruchomić testy aplikacji, wykonaj następujące kroki:
- Zainstaluj zależności za pomocą komendy:
npm ci
(jeśli nie zrobiłeś już tego wcześniej). - Uruchom wszystkie testy, wykonując komendę:
npm run test
.
Dostępne są także testy tylko dla serwera npm run server:test
, dla testów z pokryciem kodu npm run server:test:cov
.
Testy tylko dla aplikacji webowej npm run web:test
, dla testów z pokryciem kodu npm run web:test:cov
.
Kod testów umieszczamy w katalogu test
.
Praca zespołu była organizowana przy użyciu narzędzi dostarczanych przez GitHub. Zadania opisywaliśmy za pomocą GitHub Issues i dzieliśmy czas ich wykonania na tygodnie za pomocą GitHub Projects. Każde z zadań było estymowane przez mentora, dzięki czemu staraliśmy się, aby liczba punktów przypadająca w danym tygodniu na każdą osobę w zespole była podobna.