ilhamdev commited on
Commit
8439a3a
Β·
1 Parent(s): 4f85e22

docs: update screenshots with edge-to-edge preview frames and document dual-engine architecture in README

Browse files
README.md CHANGED
@@ -42,10 +42,14 @@ Area unggah drag-and-drop, seleksi model segmentasi, opsi alpha matting, dan ins
42
  - `U2Net Human`: Segmentasi figur manusia ringan untuk kebutuhan cepat.
43
  - **Alpha Matting Tepi Halus:** Opsi erosi piksel tepi dan ambang batas foreground/background untuk helai rambut tipis.
44
  - **Slider Perbandingan Interaktif:** Tuas perbandingan Before/After responsif dengan kendali mouse, sentuhan layar (touch-friendly), dan aksesibilitas keyboard (`input[type="range"]`).
 
 
 
 
45
  - **Keamanan & Anti-Spam:**
46
  - Dilindungi Cloudflare Turnstile tanpa captcha yang mengganggu kenyamanan pengguna.
47
  - Dilengkapi *in-memory sliding window IP rate limiter* (15 req/menit) untuk mencegah bot flood.
48
- - **Privasi Data Penuh:** Berkas gambar hanya diproses sementara di memori GPU terisolasi (ZeroGPU) dan langsung dibuang setelah kanal alpha diekstrak. Tidak ada penyimpanan permanen di server.
49
  - **Halaman Error 404 Kustom:** Tampilan 404 berdesain Neubrutalism yang aman tanpa kebocoran informasi internal server.
50
  - **Telemetri Tanpa Pelacak Pribadi:** Modul telemetri aman yang siap dihubungkan dengan Google Analytics (`gtag`) atau Plausible tanpa merekam berkas gambar atau identitas pengguna.
51
 
@@ -54,14 +58,24 @@ Area unggah drag-and-drop, seleksi model segmentasi, opsi alpha matting, dan ins
54
  ## Arsitektur Sistem
55
 
56
  ```mermaid
57
- flowchart LR
58
  A[Pengguna / Browser] -->|Unggah Gambar + Turnstile| B[Frontend Next.js 14]
59
  B -->|Validasi Ukuran & Rate Limit| C[API Route /api/remove-bg]
60
- C -->|Base64 Payload via SSE| D[Hugging Face Space ZeroGPU]
61
- D -->|Inferensi Model BiRefNet / ISNet| E[Pustaka Python rembg]
62
- E -->|Kanal Alpha Transparan RGBA| D
63
- D -->|Stream Event complete| C
64
- C -->|Data URL PNG 32-bit| B
 
 
 
 
 
 
 
 
 
 
65
  B -->|Pratinjau Checkerboard & Unduh| A
66
  ```
67
 
@@ -71,12 +85,12 @@ flowchart LR
71
 
72
  ```text
73
  rembg/
74
- β”œβ”€β”€ app.py # Entry point backend Gradio & API ZeroGPU
75
  β”œβ”€β”€ requirements.txt # Dependensi Python (rembg, gradio, spaces, pillow)
76
  β”œβ”€β”€ README.md # Dokumentasi proyek & konfigurasi HF Space
77
  β”œβ”€β”€ DESIGN.md # Panduan desain Neubrutalism (warna, border, tipografi)
78
  β”œβ”€β”€ docs/
79
- β”‚ └── screenshots/ # Tangkapan layar dokumentasi
80
  └── frontend/ # Aplikasi web Next.js 14
81
  β”œβ”€β”€ package.json
82
  β”œβ”€β”€ next.config.js
@@ -97,9 +111,12 @@ rembg/
97
  β”‚ β”œβ”€β”€ remove-bg/ # Handler pemrosesan utama + Turnstile
98
  β”‚ └── demo-remove-bg/ # Handler live demo sampel
99
  └── lib/
100
- β”œβ”€β”€ analytics.js # Dispatcher telemetri aman privasi
101
- β”œβ”€β”€ rate-limit.js # Sliding-window rate limiter
102
- └── turnstile.js # Verifikator server-side Cloudflare Turnstile
 
 
 
103
  ```
104
 
105
  ---
@@ -152,6 +169,8 @@ npm test
152
  |---|---|---|
153
  | `NEXT_PUBLIC_SITE_URL` | Domain kanonikal untuk sitemap dan SEO | `https://rembg.vercel.app` |
154
  | `NEXT_PUBLIC_HF_SPACE_URL` | Alamat backend Hugging Face ZeroGPU | `https://ilhamdev-rembg.hf.space` |
 
 
155
  | `NEXT_PUBLIC_TURNSTILE_SITE_KEY` | Site Key Cloudflare Turnstile | Disediakan Cloudflare |
156
  | `TURNSTILE_SECRET_KEY` | Secret Key Cloudflare Turnstile | Disediakan Cloudflare |
157
  | `NEXT_PUBLIC_GSC_VERIFICATION` | Token verifikasi Google Search Console (opsional) | `google-site-verification-...` |
 
42
  - `U2Net Human`: Segmentasi figur manusia ringan untuk kebutuhan cepat.
43
  - **Alpha Matting Tepi Halus:** Opsi erosi piksel tepi dan ambang batas foreground/background untuk helai rambut tipis.
44
  - **Slider Perbandingan Interaktif:** Tuas perbandingan Before/After responsif dengan kendali mouse, sentuhan layar (touch-friendly), dan aksesibilitas keyboard (`input[type="range"]`).
45
+ - **Ketahanan Kuota & Arsitektur Dual-Engine:**
46
+ - **ZeroGPU + CPU Fallback:** Inferensi primer dipercepat oleh ZeroGPU (`remove_bg`). Jika kuota GPU limit atau antre, sistem otomatis melakukan failover ke worker CPU (`remove_bg_cpu`) tanpa interupsi.
47
+ - **Multi-Token Rotation (`HF_TOKENS`):** Mendukung load-balancing kuota antar beberapa token akun Hugging Face secara acak.
48
+ - **Rotasi & Forwarding IP Publik:** Melindungi server dari limit IP anonim terpusat dengan meneruskan IP pengunjung asli serta menyediakan generator IP publik acak untuk lingkungan internal.
49
  - **Keamanan & Anti-Spam:**
50
  - Dilindungi Cloudflare Turnstile tanpa captcha yang mengganggu kenyamanan pengguna.
51
  - Dilengkapi *in-memory sliding window IP rate limiter* (15 req/menit) untuk mencegah bot flood.
52
+ - **Privasi Data Penuh:** Berkas gambar hanya diproses sementara di memori GPU/CPU terisolasi dan langsung dibuang setelah kanal alpha diekstrak. Tidak ada penyimpanan permanen di server.
53
  - **Halaman Error 404 Kustom:** Tampilan 404 berdesain Neubrutalism yang aman tanpa kebocoran informasi internal server.
54
  - **Telemetri Tanpa Pelacak Pribadi:** Modul telemetri aman yang siap dihubungkan dengan Google Analytics (`gtag`) atau Plausible tanpa merekam berkas gambar atau identitas pengguna.
55
 
 
58
  ## Arsitektur Sistem
59
 
60
  ```mermaid
61
+ flowchart TD
62
  A[Pengguna / Browser] -->|Unggah Gambar + Turnstile| B[Frontend Next.js 14]
63
  B -->|Validasi Ukuran & Rate Limit| C[API Route /api/remove-bg]
64
+ C -->|Rotasi Token & IP Forwarding| D[Client hf-inference.js]
65
+
66
+ subgraph Hugging Face Space [ilhamdev-rembg.hf.space]
67
+ E[Endpoint ZeroGPU /remove_bg]
68
+ F[Endpoint CPU Fallback /remove_bg_cpu]
69
+ G[Pustaka Python rembg BiRefNet / ISNet]
70
+ end
71
+
72
+ D -->|Coba Primer: Akselerasi GPU| E
73
+ E -->|Injeksi Tensor GPU| G
74
+ E -.->|Jika ZeroGPU Quota Limit| F
75
+ F -->|Eksekusi Worker CPU| G
76
+ G -->|Ekstrak Alpha RGBA 32-bit| D
77
+ D -->|Stream Data URL PNG| C
78
+ C -->|Response JSON| B
79
  B -->|Pratinjau Checkerboard & Unduh| A
80
  ```
81
 
 
85
 
86
  ```text
87
  rembg/
88
+ β”œβ”€β”€ app.py # Entry point backend Gradio, API ZeroGPU & CPU Fallback
89
  β”œβ”€β”€ requirements.txt # Dependensi Python (rembg, gradio, spaces, pillow)
90
  β”œβ”€β”€ README.md # Dokumentasi proyek & konfigurasi HF Space
91
  β”œβ”€β”€ DESIGN.md # Panduan desain Neubrutalism (warna, border, tipografi)
92
  β”œβ”€β”€ docs/
93
+ β”‚ └── screenshots/ # Tangkapan layar dokumentasi (hero, slider, workspace)
94
  └── frontend/ # Aplikasi web Next.js 14
95
  β”œβ”€β”€ package.json
96
  β”œβ”€β”€ next.config.js
 
111
  β”‚ β”œβ”€β”€ remove-bg/ # Handler pemrosesan utama + Turnstile
112
  β”‚ └── demo-remove-bg/ # Handler live demo sampel
113
  └── lib/
114
+ β”œβ”€β”€ analytics.js # Dispatcher telemetri aman privasi
115
+ β”œβ”€β”€ demo-data.js # Data URI gambar referensi 512x512 ter-embed
116
+ β”œβ”€β”€ hf-inference.js # Klien Hugging Face, token rotation, IP forwarding, failover CPU
117
+ β”œβ”€β”€ hf-inference.test.js# Pengujian unit modul inferensi
118
+ β”œβ”€β”€ rate-limit.js # Sliding-window rate limiter
119
+ └── turnstile.js # Verifikator server-side Cloudflare Turnstile
120
  ```
121
 
122
  ---
 
169
  |---|---|---|
170
  | `NEXT_PUBLIC_SITE_URL` | Domain kanonikal untuk sitemap dan SEO | `https://rembg.vercel.app` |
171
  | `NEXT_PUBLIC_HF_SPACE_URL` | Alamat backend Hugging Face ZeroGPU | `https://ilhamdev-rembg.hf.space` |
172
+ | `HF_TOKEN` | Token akun Hugging Face untuk alokasi kuota ZeroGPU resmi | `hf_xxxxxxxxxxxxxxxxxxxxxxxx` |
173
+ | `HF_TOKENS` | Multi-token dipisah koma untuk round-robin/random quota distribution | `hf_token1,hf_token2` |
174
  | `NEXT_PUBLIC_TURNSTILE_SITE_KEY` | Site Key Cloudflare Turnstile | Disediakan Cloudflare |
175
  | `TURNSTILE_SECRET_KEY` | Secret Key Cloudflare Turnstile | Disediakan Cloudflare |
176
  | `NEXT_PUBLIC_GSC_VERIFICATION` | Token verifikasi Google Search Console (opsional) | `google-site-verification-...` |
docs/screenshots/before-after-slider.png CHANGED

Git LFS Details

  • SHA256: 35ac66335b2961b3f0e48214ee9033ff4961da85620b5511e7141050a618a89f
  • Pointer size: 131 Bytes
  • Size of remote file: 303 kB

Git LFS Details

  • SHA256: a4d90603fcc08ceb9e04480937b376122c21aca3e8b32646cc835921f4615f0a
  • Pointer size: 131 Bytes
  • Size of remote file: 337 kB
docs/screenshots/hero-preview.png CHANGED

Git LFS Details

  • SHA256: 33fac1bf3303134dcf17bb6366874c7ec76baba948c568748ffefc30fe84a23c
  • Pointer size: 131 Bytes
  • Size of remote file: 136 kB

Git LFS Details

  • SHA256: 1b4427e3ad5b94034ddee5f65f4d7ccf6dc493106cd99086996eefb69de72e28
  • Pointer size: 131 Bytes
  • Size of remote file: 285 kB
docs/screenshots/main-workspace.png CHANGED

Git LFS Details

  • SHA256: a89c7d560dd4ffc65ff64df22be6a4a464bd23b5ac352bdfd6ab748bbaf273f3
  • Pointer size: 130 Bytes
  • Size of remote file: 77.5 kB

Git LFS Details

  • SHA256: 6c977eecdeae1ac97b564c064ccdd67717b8252e9432287d7c1067a5442e598a
  • Pointer size: 130 Bytes
  • Size of remote file: 94.6 kB