Backend dan layanan AI/ML inference untuk aplikasi Safe&Recycle, dibangun menggunakan FastAPI. Project ini menyediakan REST API untuk autentikasi, manajemen user, serta layanan backend lainnya, dan sudah mendukung database migration menggunakan Alembic.
- Python 3.10+
- FastAPI
- SQLModel (SQLAlchemy Core)
- Alembic (Database Migration)
- PostgreSQL / MySQL (berdasarkan konfigurasi)
- JWT Authentication
- Uvicorn
backend/
├── app/
│ ├── routers/ # Routing / endpoint API
│ ├── models/ # Model database (SQLModel)
│ ├── schemas/ # Request & response schema
│ ├── services/ # Business logic
│ ├── databases/ # Session & engine database
│ ├── core/ # Utility & helper functions
│ └── main.py
├── alembic/
│ ├── versions/ # File migration
│ └── env.py
├── alembic.ini
├── .env
├── requirements.txt
└── README.md
git clone <repository-url>
cd backendpython -m venv venvAktifkan virtual environment:
Windows
venv\Scripts\activateLinux / MacOS
source venv/bin/activatepip install -r requirements.txt
⚠️ File.envtidak di-commit ke repository (masuk.gitignore).
Project ini menggunakan Alembic untuk mengelola perubahan struktur database.
alembic upgrade headJalankan aplikasi FastAPI dengan Uvicorn:
uvicorn app.main:app --reloadServer akan berjalan di:
http://127.0.0.1:8000
FastAPI menyediakan dokumentasi otomatis:
-
Swagger UI 👉 http://127.0.0.1:8000/docs
-
ReDoc 👉 http://127.0.0.1:8000/redoc
Aplikasi menggunakan JWT Authentication:
- Access Token → untuk mengakses endpoint terproteksi
- Refresh Token → untuk memperbarui access token
- Token yang logout akan direvoke (blacklist)
Header yang wajib disertakan:
Authorization: Bearer <access_token>
Testing dapat dilakukan menggunakan:
- Postman
- Insomnia
- Swagger UI
Pastikan:
- Database aktif
.envsudah benar- Token JWT valid
- Semua timestamp menggunakan UTC
- Struktur project mengikuti pola separation of concerns
- Database schema dikelola sepenuhnya melalui migration
- Siap untuk deployment (production-ready)
Jika terjadi error database:
- Pastikan database sudah berjalan
- Cek
DATABASE_URLdi.env - Pastikan migration sudah dijalankan (
alembic upgrade head)