"Food waste is not just about emissions. It's about how much we value our food."
- Tentang Resurva
- Masalah yang Kami Lihat
- Solusi yang Kami Tawarkan
- Cara Kerja
- Fitur Utama
- Contoh Alur Penggunaan
- Dampak yang Ingin Dicapai
- Teknologi
- Instalasi & Menjalankan Secara Lokal
- Struktur Folder
- Demo
- Panduan Penggunaan / User Guide
- FAQ (Frequently Asked Questions)
- Roadmap
- Lisensi & Catatan Proyek
Resurva adalah sebuah ekosistem solusi digital terintegrasi yang dirancang untuk mengatasi salah satu masalah lingkungan dan ketahanan pangan terbesar di dunia: Food Waste (Limbah Makanan). Mengusung arsitektur Modular Monolith, backend Resurva menyediakan API core berkinerja tinggi yang menghubungkan pemilik bisnis kuliner (UMKM hingga retail skala besar) dengan konsumen akhir secara instan, aman, dan efisien.
Melalui backend ini, berbagai data real-time dikelola secara terpusat untuk memberdayakan tiga platform utama:
- resurva_web (Smart Business Platform): Dashboard bagi pengelola bisnis untuk mengelola inventaris, memantau batch kedaluwarsa (FEFO), menganalisis omzet, melakukan audit limbah makanan, dan merumuskan strategi penanggulangan limbah.
- resurva_mobile: Aplikasi pelanggan untuk mencari, memesan, dan membeli makanan surplus yang masih sangat layak konsumsi dengan harga diskon khusus.
- Resurva AI Assistant: Kecerdasan buatan terintegrasi yang bertindak sebagai analis bisnis makro dan mikro, asisten visualisasi data (charts), serta konsultan strategi pemasaran berbasis tren real-time.
Setiap tahunnya, tonan makanan yang masih layak konsumsi berakhir di tempat pembuangan akhir (TPA). Masalah ini dipicu oleh beberapa faktor krusial:
- Lemahnya Pelacakan Kedaluwarsa (Expiry Tracking): Banyak toko makanan dan supermarket kesulitan melacak tanggal kedaluwarsa produk secara spesifik per batch. Akibatnya, barang kedaluwarsa sebelum sempat dipromosikan.
- Kerugian Finansial UMKM: Produk surplus yang tidak terjual langsung dibuang, menciptakan kerugian finansial bersih (lost revenue) bagi pelaku usaha.
-
Pemanasan Global: Limbah makanan yang membusuk menghasilkan gas metana dan emisi karbon dioksida (
$CO_2e$ ) yang mempercepat perubahan iklim. - Kesenjangan Pangan: Sementara makanan dibuang, banyak masyarakat berpenghasilan rendah kesulitan mengakses makanan berkualitas dengan harga terjangkau.
Backend Resurva dikembangkan untuk menjembatani celah operasional tersebut melalui pendekatan berbasis data dan otomatisasi cerdas:
- FEFO-based Inventory Management: Mengelola stok secara ketat berdasarkan batch tanggal kedaluwarsa terdekat.
- Automated Expiry Alerts & Auto-Surplus: Memberikan peringatan dini kepada seller dan otomatis menerbitkan produk sebagai menu surplus diskon ketika mendekati tanggal kedaluwarsa.
- Escrow Wallet System: Mengamankan transaksi pelanggan menggunakan sistem dompet digital dengan rekening bersama (escrow) terintegrasi, di mana dana hanya dilepaskan ke merchant setelah makanan sukses diambil menggunakan kode verifikasi unik.
-
Real-time Carbon Saved Tracker: Mengkalkulasi emisi karbon (
$CO_2e$ ) yang berhasil dihemat setiap kali makanan surplus diselamatkan. - AI Business Intelligence with MCP: Integrasi AI (DeepSeek, OpenAI, Anthropic) dengan protokol Model Context Protocol (MCP) untuk analisis performa toko secara real-time, visualisasi grafik penjualan (Chart.js), dan strategi optimasi stok.
Sistem mengelola siklus hidup produk dari masuknya stok di merchant hingga dibeli oleh konsumen akhir. Alur operasional sistem digambarkan dalam diagram berikut:
sequenceDiagram
autonumber
participant Merchant as Merchant (Web)
participant Backend as Backend FastAPI Core
participant DB as database PostgreSQL
participant Customer as Konsumen (Mobile)
Merchant->>Backend: Daftarkan stok produk beserta detail batch & tanggal kedaluwarsa
Backend->>DB: Simpan data inventaris & buat scheduler alert kedaluwarsa
Note over Backend, DB: Sistem mendeteksi produk yang hampir kedaluwarsa
Backend->>Backend: Picu auto-surplus berdasarkan sisa hari kedaluwarsa
Customer->>Backend: Cari & pesan produk surplus di dekat lokasi mereka
Backend->>DB: Lock stok batch terdekat (FEFO) dengan batas waktu (Cart Reservation)
Customer->>Backend: Lakukan pembayaran instan via wallet
Backend->>DB: Simpan dana transaksi di Escrow Wallet
Backend->>Merchant: Kirim notifikasi pesanan & generate kode pick-up harian (misal: C-2)
Customer->>Merchant: Tunjukkan kode pick-up di outlet fisik
Merchant->>Backend: Input kode pick-up untuk verifikasi
Backend->>DB: Ubah status pesanan jadi COMPLETED, cairkan dana Escrow ke Wallet Merchant
Backend->>DB: Hitung & catat emisi CO2 yang berhasil dihemat (Carbon Log)
Sistem backend ini terbagi menjadi modul-modul independen yang kokoh (Modular Monolith):
-
π Authentication & Authorization (Auth & Users): Registrasi dan login aman menggunakan JWT Access & Refresh Token. Mendukung kontrol akses berbasis peran (RBAC):
customer,seller,owner, danadmin. Menyimpan titik koordinat (latitude & longitude) untuk pencarian outlet terdekat. -
π¦ FEFO Inventory Engine: Pencatatan stok per batch (
inventory_batches) lengkap denganbatch_tagunik dan tracking mutasi stok (inventory_transactions). - π Cart & Reservation Manager: Menghindari overselling makanan surplus yang terbatas dengan menerapkan pemesanan keranjang belanja dengan masa kedaluwarsa kunci stok (cart stock lock timeout).
-
π° Escrow Wallet System: Transaksi digital aman dengan pencatatan ledger transaksi (
wallet_transactions) lengkap dengan sistem penahanan dana (order_escrows) demi perlindungan konsumen. -
π Carbon Tracker Engine: Secara otomatis mengonversi berat makanan yang berhasil diselamatkan ke dalam satuan kilogram karbon dioksida yang dihindari (
$kg\ CO_2e$ ). - π Enterprise Analytics: Agregasi data komprehensif bagi pemilik bisnis multi-cabang (HQ) mencakup omzet, kerugian terhindari, total emisi terselamatkan, dan skor SDG.
- π€ AI Assistant Integration (dengan MCP Tools): Menyediakan endpoint chat pintar yang dapat mendeteksi intent pengguna, memanggil database secara dinamis melalui function calling (MCP), dan merender grafik visualisasi data (Chart.js) interaktif di sisi klien.
- π Audit & Middleware Logging: Middleware log sistem yang mencatat operasi sensitif, kegagalan autentikasi, serta performa response API untuk menjaga akuntabilitas sistem.
Berikut adalah contoh urutan endpoint API utama yang dipanggil saat melakukan siklus transaksi:
- Autentikasi Pengguna:
- POST
/api/v1/auth/register(Registrasi pembeli atau penjual) - POST
/api/v1/auth/login(Mendapatkan Access Token JWT)
- POST
- Pendaftaran Batch Inventaris (Oleh Penjual):
- POST
/api/v1/inventory/(Menambahkan batch stok baru besertaexpired_at)
- POST
- Pemesanan Keranjang (Oleh Pembeli):
- POST
/api/v1/cart/(Memasukkan item ke keranjang dan mengunci stok sementara)
- POST
- Penyelesaian Order & Pembayaran:
- POST
/api/v1/orders/(Membuat order, memicu penahanan dana di Escrow Wallet)
- POST
- Verifikasi & Penyelesaian (Oleh Penjual):
- POST
/api/v1/orders/{order_id}/complete(Memasukkan pick-up code, merilis dana escrow, mencatat emisi karbon terselamatkan)
- POST
- Konsultasi AI (Oleh Penjual/Owner):
- POST
/api/v1/chat/(Bertanya tentang analisis bisnis atau visualisasi grafik tren produk)
- POST
Backend Resurva menargetkan dampak keberlanjutan yang nyata:
- Dampak Lingkungan (SDG 13 - Climate Action): Menekan emisi gas rumah kaca akibat pembusukan limbah pangan organik di TPA.
- Kemandirian & Ketahanan Pangan (SDG 2 - Zero Hunger): Membantu mendistribusikan kelebihan pangan berkualitas kepada masyarakat yang membutuhkan dengan harga terjangkau.
- Produksi & Konsumsi Bertanggung Jawab (SDG 12 - Responsible Consumption & Production): Mengurangi kerugian pangan pada rantai pasok hilir melalui manajemen stok FEFO dan optimasi penjualan.
Aplikasi dikembangkan menggunakan stack teknologi modern berkinerja tinggi:
- Framework Utama: FastAPI (Asynchronous Python Web Framework)
- DBMS: PostgreSQL (Relational Database)
- Database Driver: Asyncpg (Asynchronous PostgreSQL client)
- ORM: SQLAlchemy 2.0 (AsyncIO support)
- Migrasi Database: Alembic
- Validasi Data: Pydantic v2
- Keamanan: PyJWT & Bcrypt
- HTTP Client: HTTPX (Untuk integrasi API AI & web crawling)
- Sistem File/Storage: Local Storage & AWS S3/MinIO Integration
Ikuti langkah-langkah di bawah ini untuk menjalankan backend di server lokal Anda:
git clone https://github.com/Nexa-Code-Studio/resurva_backend.git
cd resurva_backendSalin file .env.example menjadi .env dan sesuaikan nilainya (misalnya kredensial PostgreSQL Anda):
cp .env.example .env# Membuat virtual environment
python -m venv venv
# Aktivasi di Windows (PowerShell/CMD):
.\venv\Scripts\activate
# Aktivasi di Linux/macOS:
source venv/bin/activate
# Menginstal dependensi
pip install -r requirements.txtPastikan layanan PostgreSQL Anda sudah menyala dan database yang ditentukan di file .env telah dibuat.
# Menjalankan migrasi database via Alembic
alembic upgrade head
# Menerapkan pembaruan skema & backfill data otomatis
python scripts/apply_schema_updates.pyUntuk mengisi database dengan data dummy realistis yang lengkap (User, Bisnis, Cabang Toko, Produk, Transaksi, dan Riwayat Order):
python -m app.db.seeders.runuvicorn app.main:app --reload --port 8000Server akan berjalan di: http://localhost:8000
Aplikasi didesain menggunakan pendekatan Modular Monolith yang teratur:
resurva_backend/
βββ app/
β βββ ai/ # Integrasi penyedia LLM (OpenAI, Anthropic, DeepSeek)
β βββ api/ # Router utama dan rute endpoints API v1
β βββ core/ # Konfigurasi aplikasi, enums, middleware, dan setup logging
β βββ db/ # Sesi koneksi database, base class, dan scripts seeders
β βββ mcp/ # Registrasi tool Model Context Protocol untuk AI
β βββ modules/ # Modul-modul bisnis domain-driven
β β βββ analytics/ # Enterprise analytics & forecasting
β β βββ auth/ # Autentikasi JWT & refresh tokens
β β βββ business/ # Entitas perusahaan induk / UMKM Group
β β βββ carbon/ # Log emisi karbon CO2e terselamatkan
β β βββ cart/ # Keranjang & stock lock reservation
β β βββ chat/ # Obrolan asisten AI & tool executor
β β βββ inventory/ # Manajemen batch barang FEFO & alerts
β β βββ orders/ # Pembuatan order & FEFO stock allocator
β β βββ products/ # Data katalog produk, sku, & komposisi bahan
β β βββ reviews/ # Rating dan feedback ulasan pelanggan
β β βββ stores/ # Data cabang outlet fisik toko & titik GPS
β β βββ wallets/ # Saldo dompet, riwayat transaksi, & escrow
β β βββ users/ # Profil pengguna dan role-based metadata
β βββ prompts/ # Kumpulan instruksi prompt AI
β βββ storage/ # Layanan upload file (Lokal / S3 Cloud)
β βββ main.py # Entrypoint utama inisialisasi FastAPI
βββ assets/ # Aset gambar & ilustrasi dokumentasi
βββ docs/ # API specification dan desain dokumen tambahan
βββ migrations/ # File migrasi skema database Alembic
βββ scripts/ # Script mandiri untuk utilitas database & deployment
βββ tests/ # Unit dan integration testing (Pytest)
Backend Resurva telah dideploy secara aktif dan dapat diuji melalui tautan berikut:
- Dokumentasi Swagger UI (API Docs): https://api.resurva.my.id/docs
- Dokumentasi Redoc: https://api.resurva.my.id/redoc
- Status API: https://api.resurva.my.id/
Anda dapat berinteraksi langsung dengan API menggunakan Swagger UI yang tersedia di route /docs.
- Buka https://api.resurva.my.id/docs.
- Lakukan registrasi menggunakan endpoint
/api/v1/auth/registerdengan menyertakan peran (role) yang sesuai:customer: Mencari menu surplus, memesan barang, menggunakan wallet.seller: Mengelola stok toko cabang, memasukkan kode pick-up transaksi.owner: Mengelola data perusahaan induk, melihat visualisasi enterprise analytics lintas cabang.
- Login melalui endpoint
/api/v1/auth/loginuntuk mendapatkan access token. - Klik tombol Authorize di pojok kanan atas Swagger UI, masukkan token dengan format
Bearer <token_anda>, lalu klik Authorize. - Sekarang Anda bebas memanggil seluruh endpoint terproteksi sesuai batas role Anda.
1. Apa itu Resurva Marketplace?
Resurva Marketplace adalah platform mobile berbasis lokasi yang memfasilitasi konsumen untuk membeli makanan surplus atau produk kuliner lezat yang mendekati masa kedaluwarsa dari toko, restoran, dan UMKM terdekat dengan harga yang jauh lebih murah.
2. Siapa saja yang dapat menggunakan aplikasi ini?
Semua kalangan dapat menggunakan aplikasi ini! Konsumen yang ingin mencari makanan berkualitas dengan harga terjangkau dapat menggunakan aplikasi mobile, sedangkan pemilik usaha makanan (toko, restoran, toko roti, dll.) dapat bergabung sebagai merchant menggunakan Smart Business Platform di web.
3. Bagaimana saya bisa tahu produk makanan surplus tersebut masih layak konsumsi?
Setiap produk makanan surplus yang terdaftar di Resurva wajib memenuhi standar kelayakan konsumsi dan kebersihan. Merchant berkewajiban mencantumkan tanggal serta jam kedaluwarsa (expiry batch) yang jelas, dan sistem FEFO kami memantau agar produk tidak dipajang melampaui batas aman.
4. Apakah ada batas minimal pembelian untuk setiap transaksi?
Tidak ada batas minimal pembelian. Anda dapat membeli satu porsi makanan surplus sekalipun untuk diselamatkan dari potensi terbuang.
5. Apa saja metode pembayaran yang didukung di aplikasi Resurva Mobile?
Kami mendukung pembayaran digital instan melalui sistem dompet elektronik (Wallet) bawaan Resurva yang terintegrasi langsung dengan mekanisme keamanan transaksi escrow.
6. Berapa radius maksimal pencarian produk dari lokasi saya berada?
Secara default, aplikasi mencari produk surplus dalam radius terdekat (misalnya hingga 10-15 km) dari titik koordinat GPS yang terdeteksi pada perangkat mobile Anda untuk memastikan makanan dapat diambil dalam kondisi optimal.
7. Bagaimana cara toko kuliner saya bergabung menjadi merchant Resurva?
Anda dapat mendaftar langsung di platform web Resurva, mengisi profil bisnis, mendaftarkan outlet/cabang, dan mengonfigurasikan jenis produk serta aturan auto-surplus untuk mulai menjual produk surplus Anda secara otomatis.
8. Ke mana saya harus melaporkan jika ada masalah dalam transaksi atau produk yang tidak layak?
Anda dapat menggunakan fitur Bantuan atau melaporkan langsung pesanan Anda melalui riwayat transaksi di aplikasi. Tim dukungan kami atau pengelola merchant akan segera memproses pengembalian dana melalui mekanisme refund escrow wallet jika terbukti terdapat ketidaksesuaian produk.
9. Kenapa inventarisasi di Resurva didekati dengan model batch kedaluwarsa?
Produk makanan segar memiliki masa simpan yang dinamis. Dengan mendaftarkan produk per batch kedaluwarsa, backend dapat menerapkan prinsip FEFO (First-Expired-First-Out) saat pembeli melakukan reservasi keranjang, memastikan makanan dengan umur simpan terpendek terjual lebih dahulu untuk meminimalisir potensi terbuang.
10. Bagaimana sistem mengamankan transaksi antara pembeli dan penjual?
Kami mengimplementasikan sistem Escrow Wallet. Dana yang dibayarkan oleh pembeli akan langsung dipindahkan ke rekening escrow sistem dan ditahan sementara. Setelah pembeli menunjukkan kode pick-up fisik dan penjual memvalidasi lewat aplikasi, status order berubah menjadi COMPLETED dan dana akan otomatis ditransfer ke dompet utama penjual. Jika order dibatalkan atau kedaluwarsa sebelum diambil, dana otomatis dikembalikan 100% ke saldo pembeli.
11. Apakah asisten AI dapat memodifikasi atau menghapus data inventaris saya?
Tidak. Untuk alasan keamanan, asisten AI dirancang dengan prinsip read-only. AI hanya dapat memanggil read-only tool untuk mencari produk, membaca grafik performa, dan merumuskan strategi penanggulangan limbah. Segala bentuk perubahan data (seperti pembuatan order, penghapusan produk, atau pencairan saldo) wajib dilakukan secara manual lewat interaksi API standar yang membutuhkan autentikasi pengguna secara langsung.
Berikut rencana pengembangan sistem backend Resurva ke depan:
- Machine Learning Stock Forecasting: Mengintegrasikan algoritma peramalan untuk memprediksi potensi kelebihan stok bahan pangan mentah berdasarkan tren historis sebelum kedaluwarsa.
- Dynamic Auto-Pricing Engine: Penyesuaian diskon otomatis secara dinamis berdasar sisa jam kedaluwarsa produk (semakin mepet, diskon bertambah secara aman).
- Logistics Delivery APIs Integration: Menghubungkan platform dengan API pengiriman instan pihak ketiga (3PL) untuk memfasilitasi pengantaran makanan surplus langsung ke rumah pembeli.
- Exportable PDF/Excel Reports Generator: Ekspor laporan keuangan, audit limbah makanan, dan laporan emisi karbon ke format PDF atau Excel.
Proyek ini dibangun oleh Tim NexaCode dari Politeknik Negeri Malang untuk menghadirkan solusi teknologi yang memberikan dampak sosial-lingkungan berkelanjutan bagi Indonesia.
Sistem ini dikembangkan khusus sebagai bagian dari keikutsertaan kompetisi BytesFest 2026 di Politeknik Negeri Malang oleh Tim NexaCode. Proyek ini bertujuan untuk menciptakan solusi nyata berbasis teknologi bagi kelestarian lingkungan dan ketahanan pangan nasional.
- Lisensi: Proprietary (BytesFest 2026)
- Hak Cipta: Β© 2026 NexaCode. All rights reserved.
- Tautan Repositori Terkait:
