Proyek ini adalah aplikasi berbasis microservices yang terdiri dari beberapa komponen:
- Auth Service: Layanan untuk autentikasi dan otorisasi pengguna.
- Item Service: Layanan untuk mengelola item, termasuk operasi CRUD untuk admin dan akses tampilan untuk pengguna biasa.
- API Gateway: Pusat untuk mengelola rute dan middleware, serta mengarahkan permintaan ke layanan yang sesuai.
- auth-service: Layanan untuk autentikasi dan otorisasi.
- item-service: Layanan untuk mengelola item dengan operasi CRUD.
- api-gateway: Gerbang masuk untuk API yang mengarahkan permintaan ke layanan yang tepat dan mengelola otorisasi.
- migration-service: Layanan untuk menjalankan migrasi basis data menggunakan Prisma.
- redis: Cache untuk validasi token.
Pastikan Anda memiliki perangkat lunak berikut yang terinstal di sistem Anda:
- Docker
-
Clone Repositori
git clone <URL_REPOSITORI> cd <NAMA_REPOSITORI>
-
Menjalankan Proyek
Gunakan Docker Compose untuk membangun dan menjalankan semua layanan:
docker-compose up --build
Ini akan membangun image Docker untuk setiap layanan, menjalankan container, dan mengatur jaringan yang diperlukan.
-
auth-service/: Layanan autentikasi.
main.go
: Kode utama untuk layanan autentikasi.utils/
: Utilitas seperti JWT token generator.model/
: Model database untuk pengguna.handler/
: Handler untuk rute autentikasi.
-
item-service/: Layanan item.
main.py
: Kode utama untuk layanan item menggunakan FastAPI.model.py
: Model database untuk item.routes/
: Rute untuk operasi item.
-
api-gateway/: Gerbang masuk API.
server.js
: Kode utama untuk API Gateway.routes/
: Rute untuk autentikasi dan item.middleware/
: Middleware untuk otorisasi.
-
Frontend/: Frontend aplikasi,
main.js
: Kode utama untuk frontend.components/
: Komponen Vue.js untuk aplikasi.router/
: Rute Vue Router untuk navigasi.axios/
: Konfigurasi Axios untuk permintaan HTTP.
Dokumentasi API dapat diakses melalui file Postman JSON yang disediakan. Import file ini ke Postman untuk melihat semua rute yang tersedia dan spesifikasi permintaan serta responsnya.
- Autentikasi: Gunakan endpoint
/auth/login
untuk mendapatkan token JWT. - Item CRUD (Admin):
- GET
/items/admin
untuk melihat semua item. - POST
/items/admin
untuk membuat item. - PUT
/items/admin/:id
untuk memperbarui item. - DELETE
/items/admin/:id
untuk menghapus item.
- GET
- Item Show (Pengguna Biasa):
- GET
/items/show
untuk melihat semua item. - GET
/items/show/:id
untuk melihat item berdasarkan ID.
- GET
Untuk menguji aplikasi, Anda dapat menggunakan Postman atau alat lain untuk mengirim permintaan ke endpoint API yang tersedia. Pastikan Anda telah menjalankan semua layanan dengan benar dan memiliki token JWT yang valid untuk autentikasi.
- Masalah Koneksi Database: Pastikan PostgreSQL berjalan dan variabel
DATABASE_URL
diatur dengan benar. - Masalah Koneksi Redis: Pastikan Redis berjalan dan variabel
REDIS_HOST
diatur dengan benar. - Masalah Autentikasi: Periksa bahwa token JWT yang digunakan valid dan tidak kedaluwarsa.
- Admin:
- Email: admin
- Password: adminpassword
- Pengguna Biasa:
- Email: user1
- Password: user1password