Dibuat oleh Rasyadan Faza Safiqur Rahman (18221103)
Note : Proses menjalankan akan memakan waktu cukup lama di windows akibat interaksi I/O antara Windows dan WSL
- Pastikan Docker dan Docker Compose sudah terinstall
docker -v
docker compose version
- Pastikan container Single Service sudah berjalan
- Clone repository ini dengan menjalankan command
git clone https://github.com/rasyadanfz/monolith.git
- Buka folder monolith di terminal
cd monolith
- Jalankan dengan command
`make init`
Jika tidak dapat menjalankan makefile, command tersebut dapat diganti dengan
docker network create app_network
docker compose build --no-cache
docker compose up -d
docker exec -it --user=root monolith-monolith_app-1 chmod -R 777 /var/www/storage
docker exec monolith-monolith_app-1 bash -c "composer install"
docker exec monolith-monolith_app-1 bash -c "php artisan migrate:fresh --seed"
Jika terdapat error ketika menjalankan command pertama, ignore saja error tersebut
- Monolith dapat diakses pada URL http://localhost:8000
[Akun yang sudah ada] :
Username : randomperson
Password : randompersonpassword
-
Factory
Design pattern Factory digunakan untuk membuat data dalam proses seeding. Data user dan data riwayat pembelian diciptakan menggunakan factory masing-masing yang memiliki implementasi masing-masing dan merupakan turunan dari sebuah abstract class Factory.
-
Singleton
Design pattern Singleton digunakan untuk instansiasi Http Client. Hal ini dilakukan agar seluruh fetching data dari API Single Service konsisten dan hanya melalui satu Client saja.
-
Decorator
Design pattern Decorator digunakan untuk menambah fungsionalitas retry pada Http Client sehingga Client dapat mencoba beberapa kali jika gagal dalam mengakses database. Hal ini bertujuan untuk meningkatkan reliabilitas aplikasi seandainya terjadi error dalam pengaksesan database.
Dalam pengembangan Monolith, berikut adalah Technology Stack yang digunakan
- Laravel Framework v10.15.0
- tymon/jwt-auth v2 (Driver JWT yang menghandle JWT Auth)
- Nginx v1.25.1
- MySQL v5.7
- Tailwind CSS v3.3
Berikut adalah endpoint yang dibuat
- GET /
- GET /catalogs
- GET /item/{id}
- GET /purchase/{id}
- POST /purchase
- GET /history
- GET /register
- POST /users
- GET /login
- POST /login
- POST /logout
Berikut adalah cuplikan tampilan responsive pada web
- Mobile
- Dropdown Navbar Mobile
- Desktop
-
Fungsionalitas search pada katalog barang
-
Fungsionalitas sort berdasarkan nama, stok, atau harga pada katalog barang