Wersja PHP : 7.3
Projekt aplikacji bankowej został wykonany w oparciu o framework Laravel w wersji 8.21. Do budowy layoutu wykorzystano framework Tailwind CSS, a sam panel klienta w oparciu o Jetstream i Livewire.
Do budowy panelu administracyjnego wykorzystano otwarto-źródłowego Voyagera.
Użytkownik niezalogowany:
- / — Strona główna
- /login — Logowanie
- /register — Rejestracja Użytkownik zalogowany:
- /dashboard — Panel klienta
- /produkty-bankowe — Strona z produktami bankowymi dostępnymi dla Klienta
- /user/profile — Zarządzanie swoim profilem
Zarządzanie (Panel administratorski):
- /admin — Admin Panel
- /users — Użytkownicy
- /transactions — Przelewy
- /operations — Operacje
- /client-bank-products — Produkty bankowe klientów
- /bank-products — Produkty bankowe
- /bank-products-types — Typy produktów bankowych
- /bank-codes — Kody banków
- /operation-types — Typy operacji
- /voivodeships — Województwa
- oraz pozostałe widoczne w menu pod Administracja
- bank_codes — tabela zawierająca kody banków na potrzeby wyświetlania nazwy banku, do którego klient wysyła przelew.
- bank_products — tabela zawierająca produkty bankowe dostępne w ofercie banku.
- bank_products_types — tabela zawierająca typy ww. produktów bankowych.
- client_bank_products — tabela zawierająca produkty bankowe klientów. Jeden klient może posiadać wiele produktów bankowych.
- operation_statuses — tabela zawierająca statusy operacji.
- operation_types — tabela zawierająca typy operacji.
- operations — tabela zawierające operacje wykonywane na rachunkach przez klientów.
- roles — tabela zawierająca role, jakie mogą zostać przypisane użytkownikom.
- transactions — tabela zawierające dane o wykonywanych przelewach.
- users — tabela zawierająca dane o użytkownikach.
- voivodeships — tabela zawierająca województwa dostępne do wyboru.
Produkty bankowe
Produkty bankowe dodawane są w panelu administracyjnym. Klient ma możliwość aktywacji każdego z tych produktów. Tworzony wtedy jest produkt bankowy klienta w tabeli client_bank_products zawierający wygenerowany numer rachunku iban, saldo balance i relacje do produktu bankowego bank_product_id oraz użytkownika - klienta user_id. Zastosowany mechanizm umożliwia aktywację kilku tych samych produktów bankowych przez klienta.
Operacje
Mechanizm aplikacji został zaprojektowany tak, że każdy przelew to operacja. Operacja może być różnego typu. Wraz z tworzoną operacją, tworzony jest powiązany przelew (relacja belongsTo). Zostało to tak przygotowane, gdyby operacją nie był przelew, a na przykład doładowanie telefonu (obecnie niewspierane).
Każda nowa operacja zawiera typ operacji operation_type_id, informację z którego rachunku jest wykonywana from_bank_account_id, informację na jaki rachunek jest wykonywana to_bank_account_id (jeśli operacja jest między posiadanymi przez klienta rachunkami), powiązany przelew transaction_id, jej status status_id oraz zaplanowana data realizacji scheduled_at.
BankProductsController- kontroler zwracający metodę index(), która zwraca widok strony Produkty bankowe w panelu klienta.
Dashboard:
CreateOperation- kontroler komponentu tworzenia operacji (Kliknięcie przycisku “Nowy przelew” w panelu klienta).Index- kontroler komponentu strony głównej panelu klienta.Operations- kontroler komponentu historii operacji.ShowOperationDetailsButton- kontroler przycisku “Szczegóły” każdej operacji.ShowBankProduct- kontroler komponentu dodawania produktu bankowego przez klienta. Modele (app\Models) Zgodnie ze wzorcem MVC, każda tabela posiada w Laravelu swój Model.
Akcesory (Accessors) - metody zwracające preformatowane atrybuty ClientBankProduct:
getBalanceFrenchNotationAttribute()— zwracająca balance sformatowany jako 0,00 zł.getFormattedIbanAttribute()— zwracająca numer rachunku sformatowany jako 00 0000 0000 0000 0000 0000 0000. Transaction:getFormattedAmountAttribute()— zwracająca amount (kwotę przelewu) sformatowaną jako 0,00 zł.getFormattedSenderIbanAttribute()— zwracająca zwracająca numer rachunku nadawcy sformatowany jako 00 0000 0000 0000 0000 0000 0000.getFormattedRecipientIbanAttribute()— zwracająca zwracająca numer rachunku nadawcy sformatowany jako 00 0000 0000 0000 0000 0000 0000. User:getFullNameAttribute()— zwracająca pełne imię i nazwisko (first_name + last_name)getFullAddressAttribute()— zwracająca pełny adres użytkownika (Ulica 00; 00-000 Miasto) View:- Components - w tym folderze zawarte są pliki komponentów Jetstream.
- Voyager/Widgets - pliki widżetów na głównej stronie panelu administracyjnego.
views/
api- nieistotne dla projektuauth- widoki powiązane z autoryzacją użytkownikówclient-panel- widoki powiązane z panel klienta (jedna podstrona, więc tylko jeden blade)components- widoki komponentów Jetstream uruchamianelayouts- główny layout stronylivewire- widoki komponentów Livewire wywoływane poprzez @livewire(‘...’)profile- widoki składowych edycji profilu w panelu klientavendor- nadpisane pliki poszczególnych funkcjonalności - personalizowane widoki Voyagera i Jetstream.
Projekt został wrzucony w celach edukacyjnych, a także w celu stworzenia portfolio własnych projektów.
Framework Laravel jest otwartoźródłowym oprogramowaniem licencjonowanych na zasadach licencji MIT.
