Monolith

Daftar Isi

Nama & NIM

Dibuat oleh Rasyadan Faza Safiqur Rahman (18221103)

Cara Menjalankan

Note : Proses menjalankan akan memakan waktu cukup lama di windows akibat interaksi I/O antara Windows dan WSL

  1. Pastikan Docker dan Docker Compose sudah terinstall
docker -v
docker compose version
  1. Pastikan container Single Service sudah berjalan
  2. Clone repository ini dengan menjalankan command
git clone https://github.com/rasyadanfz/monolith.git
  1. Buka folder monolith di terminal
cd monolith
  1. 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

  1. Monolith dapat diakses pada URL http://localhost:8000

[Akun yang sudah ada] :

Username : randomperson

Password : randompersonpassword

Design Pattern

  1. 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.

  2. 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.

  3. 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.

Tech Stack

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

Endpoint

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

Bonus

Responsive Layout

Berikut adalah cuplikan tampilan responsive pada web

  • Mobile

Mobile

  • Dropdown Navbar Mobile

Navbar

  • Desktop

Desktop

Fitur Tambahan

  • Fungsionalitas search pada katalog barang

    Search

  • Fungsionalitas sort berdasarkan nama, stok, atau harga pada katalog barang

    Sort

Lighthouse

  • Homepage

    Homepage

  • Register

    Register

  • Login

    Login

  • Katalog Barang

    katalog

  • Detail Barang

    Detail

  • Beli Barang

    Beli

  • Riwayat Pembelian

    Riwayat