BookWise adalah API backend untuk sistem peminjaman buku digital yang menerapkan prinsip Domain-Driven Design (DDD). Sistem ini mengelola proses peminjaman buku dari request hingga pengembalian dengan workflow yang terstruktur melibatkan dua role: Peminjam (borrower) dan Pengguna (admin/librarian).
Loan Management Context - Mengelola proses peminjaman buku dari request hingga pengembalian.
- Aggregate Root:
Loan- Entity utama yang mengatur lifecycle peminjaman - Value Objects:
BookId,UserId,DueDate,LoanStatus - Domain Service:
LoanPolicyService- Menghitung due date berdasarkan policy bisnis - Repository:
LoanRepository- Interface untuk persistensi data
- Python 3.10 atau lebih baru
- pip (Python package manager)
# Clone repository
git clone https://github.com/larashtm/TST-BookWise.git
cd TST-BookWise
# Buat virtual environment
python -m venv .venv
# Aktifkan virtual environment
# Windows:
.venv\Scripts\activate
# Linux/Mac:
source .venv/bin/activate
# Install dependencies
pip install -r requirements.txtuvicorn main:app --reloadAplikasi akan berjalan di: http://127.0.0.1:8000
Setelah aplikasi berjalan, buka browser:
- Swagger UI: http://127.0.0.1:8000/docs
- ReDoc: http://127.0.0.1:8000/redoc
Peminjam:
- Username:
peminjam1 - Password:
pinjam123
Pengguna (Admin):
- Username:
pengguna1 - Password:
pengguna123
| Method | Endpoint | Deskripsi | Role |
|---|---|---|---|
| POST | /auth/login |
Login dan dapatkan token | Public |
| POST | /auth/refresh |
Refresh access token | Public |
| POST | /auth/logout |
Logout (revoke refresh token) | Public |
| GET | /auth/me |
Get user info | Authenticated |
| Method | Endpoint | Deskripsi | Role |
|---|---|---|---|
| POST | /loans |
Buat request peminjaman | Peminjam |
| GET | /loans/my |
List peminjaman saya | Peminjam |
| GET | /loans/all |
List semua peminjaman | Pengguna |
| GET | /loans/{id} |
Detail peminjaman | Peminjam/Pengguna |
| POST | /loans/{id}/verify |
Verifikasi request | Pengguna |
| POST | /loans/{id}/approve |
Setujui peminjaman | Pengguna |
| POST | /loans/{id}/return |
Inisiasi pengembalian | Peminjam |
| POST | /loans/{id}/finalize-return |
Finalisasi pengembalian | Pengguna |
| POST | /loans/{id}/extend |
Perpanjang peminjaman | Peminjam |
| Method | Endpoint | Deskripsi |
|---|---|---|
| GET | / |
Root endpoint |
| GET | /health |
Health check |
TST-BookWise/
├── api/ # API routers yang menangani HTTP requests dan responses
├── auth/ # Module autentikasi lengkap dengan JWT token management, user database, dan role-based access control dependencies
├── domain/ # Core business logic aplikasi. Berisi entities, value objects, domain services, dan repository interfaces
├── infrastructure/ # Infrastructure Layer
├── schemas/ # Pydantic Schemas untuk API
├── tests/ # Unit & Integration Tests
| Activity Peminjam | Activity Pengguna |
|---|---|
![]() |
![]() |
Diagram aktivitas BookWise disusun berdasarkan peran (role) dalam sistem, yaitu peminjam dan pengguna.


