A monolith project as a mini e-commerce application made with TALL (Tailwind, Alpine, Laravel, Livewire) stack.
- Vincent Franstyo (18221100)
- PHP
- Composer
- PHP Artisan
- Laravel
- TALL Stack
- NodeJS
- Docker
- MySQL
- Docker Compose
- Tymon/JWTAuth
- Make sure you have cloned the API from https://github.com/vincentfranstyo/storagersAPI.git
- Run the API first
- Clone this repository
- Run
composer install
- Run
npm install
- Run
php artisan key:generate
- Create your own database at the database directory, you can manually create it. (e.g. database.mysql)
- Run
php artisan migrate
- Run
php artisan db:seed
- Set all the DB credentials in .env files (e.g. connection, host, port, name, password);
- Run
php artisan jwt:secret
- Run
npm run dev
- Run
php artisan serve
- Enjoy!
- Strategy: digunakan karena dapat mengubah behaviour dari sebuah class tanpa mengubah class itu sendiri
- Singleton: digunakan karena dapat memastikan bahwa sebuah class hanya memiliki satu instance dan menyediakan akses global ke instance tersebut
- Facade: digunakan untuk memepermudah implementasi sistem kompleks menjadi subsistem
- Laravel
- TailwindCSS
- AlpineJS
- Livewire
- JWTAuth
- MySQL
- Docker
- Laravel Sail
- PHP 8
- Blade
POST /api/auth/login
: loginPOST /api/auth/register
: registerPOST /api/auth/logout
: logout
GET /login
: login pageGET /register
: register pageGET /home
: home pageGET /detail/name
: detail pageGET /purchase/name
: purchase pageGET /history
: history page
POST /purchase/name
: purchase product
- Responsive Layout
- SOLID(SRP) : saya sebisa mungkin mengimplementasikan SRP pada project ini, seperti pada
app/Http/Controllers/AuthController.php
danapp/Http/Controllers/PurchaseController.php
dimana saya memisahkan fungsi-fungsi yang berbeda menjadi fungsi yang berbeda-beda sehingga dapat mempermudah untuk mengubah fungsi-fungsi tersebut tanpa mengubah fungsi lainnya - SOLID (OCP): OCP pada project ini diimplementasikan seperti pada
app/Http/Controllers/Controller.php
dimana Controller lainnya extend dari controller ini sehingga open for extension dan close for modification - SOLID (LSP): LSP adalah saat dimana superclass dapat digantikan oleh subclass tanpa mengubah fungsionalitas dari superclass tersebut.
- SOLID (ISP): ISP adalah saat dimana sebuah interface tidak memiliki fungsi yang tidak digunakan oleh implementasi dari interface tersebut. Pada project ini, tidak ada interface yang tidak memiliki fungsi yang tidak digunakan.
- SOLID (DIP): DIP adalah saat dimana sebuah fungsi tidak bergantung pada implementasi dari fungsi tersebut, tetapi bergantung pada interface dari fungsi tersebut.
- DO NOT use
php artisan migrate:fresh
because it will delete all the data in the database - Sorry the docker is not working. I have tried to fix it but it still doesn't work. I will try to fix it again later.