Haekal01 commited on
Commit
734487f
Β·
verified Β·
1 Parent(s): c469279

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +111 -4
README.md CHANGED
@@ -1,11 +1,118 @@
1
  ---
2
- title: Freshly Api
3
- emoji: πŸƒ
4
- colorFrom: gray
5
  colorTo: pink
6
  sdk: docker
7
  pinned: false
8
  license: mit
9
  ---
10
 
11
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
+ title: Freshly Universal API
3
+ colorFrom: green
 
4
  colorTo: pink
5
  sdk: docker
6
  pinned: false
7
  license: mit
8
  ---
9
 
10
+ # FRESHLY Universal API
11
+
12
+ Selamat datang di repositori backend resmi **FRESHLY API**!
13
+
14
+ API ini dibangun menggunakan **FastAPI** dan ditenagai oleh model Deep Learning kustom (arsitektur *CNN dengan Spatial Attention*) yang dilatih dari nol (*Training from Scratch*). API ini berfungsi sebagai otak utama aplikasi FRESHLY untuk mengklasifikasikan jenis buah/sayur beserta tingkat kematangannya guna mengurangi *food waste*.
15
+
16
+ ## 🧠 Spesifikasi Arsitektur Model
17
+ Berbeda dengan API pada umumnya yang menggunakan *Pre-trained Model* (Transfer Learning), model AI FRESHLY dibangun 100% dari awal. Keunggulan utama model kami terletak pada penggunaan **Spatial Attention Layer** buatan sendiri.
18
+
19
+ Fitur ini memungkinkan "mata" AI kami untuk berfokus pada titik-titik krusial pada gambar (seperti bercak hitam pembusukan atau transisi warna mentah ke matang), mengabaikan *background* yang tidak penting, dan menghasilkan akurasi prediksi yang sangat tinggi.
20
+
21
+ ## πŸ› οΈ Tech Stack & Teknologi
22
+ * **Framework Backend:** FastAPI, Uvicorn
23
+ * **Machine Learning:** TensorFlow, Keras
24
+ * **Arsitektur Utama:** Custom CNN Cascade System
25
+ * **Deployment:** Docker, Hugging Face Spaces
26
+
27
+ ## πŸ“š Dokumentasi Interaktif & Uji Coba (Swagger UI)
28
+
29
+ Bagi tim Frontend atau penguji yang ingin langsung mencoba mengunggah gambar ke AI tanpa perlu menulis kode, silakan akses halaman Swagger UI kami di bawah ini:
30
+
31
+ πŸ‘‰ **[Buka Halaman Uji Coba API Interaktif (/docs)](https://freshlyteam-freshly-api.hf.space/docs)** ---
32
+
33
+ ## πŸš€ Daftar Endpoint
34
+
35
+ ### 1. Health Check
36
+ Endpoint ini digunakan untuk memastikan server dalam keadaan aktif (cocok dihubungkan dengan *UptimeRobot* untuk mencegah *cold start*).
37
+ * **URL:** `/health`
38
+ * **Method:** `GET`
39
+ * **Response:** JSON berisi status server.
40
+
41
+ ### 2. Predict Freshness (Main AI)
42
+ Endpoint utama untuk mendeteksi tingkat kematangan buah/sayur. Untuk menjaga akurasi tertinggi, API ini membutuhkan jenis buah yang dipilih oleh pengguna sebagai parameter.
43
+ * **URL:** `/predict`
44
+ * **Method:** `POST`
45
+ * **Body:** `multipart/form-data`
46
+ * `fruit_type` (String): Tulis salah satu dari kelas yang didukung (contoh: banana, mango, chili).
47
+ * `file` (File): File gambar buah/sayur.
48
+ * **Response Contoh:**
49
+ ```json
50
+ {
51
+ "status": "success",
52
+ "data": {
53
+ "detected_fruit": "banana",
54
+ "condition": "ripe",
55
+ "condition_confidence": 98.5
56
+ }
57
+ }
58
+
59
+ ## πŸ’» Panduan Integrasi (Untuk Tim Frontend)
60
+
61
+ Berikut adalah contoh implementasi pemanggilan API `/predict` menggunakan **JavaScript (Fetch API)** di sisi *client*:
62
+
63
+ ```javascript
64
+ // 1. Ambil elemen dari HTML
65
+ const fileInput = document.getElementById('imageInput');
66
+ const file = fileInput.files[0];
67
+ const selectedFruit = "banana"; // Sesuai pilihan user di UI (dropdown/icon)
68
+
69
+ // 2. Siapkan form data
70
+ const formData = new FormData();
71
+ formData.append("fruit_type", selectedFruit); // Wajib dikirimkan!
72
+ formData.append("file", file);
73
+
74
+ // 3. Panggil API Freshly
75
+ fetch("https://freshlyteam-freshly-api.hf.space/predict", {
76
+ method: "POST",
77
+ body: formData
78
+ })
79
+ .then(response => response.json())
80
+ .then(result => {
81
+ console.log("Status:", result.status);
82
+ console.log("Kondisi Buah:", result.data.condition);
83
+ })
84
+ .catch(error => {
85
+ console.error("Terjadi kesalahan:", error);
86
+ });
87
+ ```
88
+ ***(Catatan: Ganti URL freshlyteam-freshly-api.hf.space dengan URL Direct Space kalian jika ada perubahan).***
89
+
90
+ ## 🍎 Parameter `fruit_type` yang Valid
91
+
92
+ Sangat penting bagi tim Frontend atau Penguji untuk mengirimkan **`fruit_type`** dengan ejaan huruf kecil yang tepat. **Saat ini, model kami mendukung 6 kelas berikut:**
93
+
94
+ * **`banana` (Pisang)**
95
+ * **`mango` (Mangga)**
96
+ * **`orange` (Jeruk)**
97
+ * **`chili` (Cabai)**
98
+ * **`paprika` (Paprika)**
99
+ * **`tomato` (Tomat)**
100
+
101
+ *Sistem akan mengembalikan error 400 (Bad Request) atau 422 (Validation Error) jika memasukkan jenis buah selain daftar di atas.*
102
+
103
+ ## βš™οΈ Cara Menjalankan Server di Local (Local Development)
104
+
105
+ Jika tim Frontend ingin menguji API ini secara offline di komputer masing-masing:
106
+ ```bash
107
+ # 1. Clone repository
108
+ git clone https://huggingface.co/spaces/freshlyTeam/freshly-api
109
+
110
+ # 2. Install library yang dibutuhkan
111
+ pip install -r requirements.txt
112
+
113
+ # 3. Jalankan server lokal
114
+ uvicorn main:app --reload
115
+ ```
116
+ *Server akan berjalan di `http://127.0.0.0:8000`. Akses `http://127.0.0.0:8000/docs` untuk Swagger UI lokal.*
117
+
118
+ **Developed with πŸ”₯πŸ’ͺ by Tim AI FRESHLY - Coding Camp powered by DBS Foundation 2026**