Emkan FinanceEmkan Cloud
Cloudinary + Firebase-ready

Fast assets. Instant page data.

51 real product images, the payment proof and the Emkan logo are served from Cloudinary. Firestore is ready for all website text, products, applications, proofs, banks and orders; the SDK listener starts only for the section you open.

✓ Cloudinary upload HTTP 200Local instant syncEnable Email sign-in + publish Firestore rulesNo API secret in browser · 3 products per row

Cloudinary

Unsigned preset only. Product pages are now lightweight CDN links instead of embedded base64 images.

Cloud namehb733hntUpload presetml_defaultProducts80 real imagesPayment proofUploadedAPI secretNot stored in browser
Cloudinary product sample
Responsive deliveryf_auto · q_auto · c_pad · w_320/h_320. Local WebP fallback remains on disk.
Payment proof URL: https://res.cloudinary.com/hb733hnt/image/upload/v1793912493/emkan-store/proofs/payment-proof.png

Firebase activation

The provided web config is public and safe to embed. The current project has no enabled database yet, so the adapter runs in local mode until you create one.

Open admin
Ready. No external write performed.

Current data

Only the opened page's paths are fetched; changed records are pushed one by one.

0applications
0custom banks
0store orders
localactive mode
Open trackOpen store
BroadcastChannel + storage events keep tabs in sync instantly.

What is ready in code

No Firebase SDK is loaded. REST + EventSource keep the pages small and fast.

✓Local instant sync: BroadcastChannel and storage events rerender admin/track/cart immediately in the same browser.
✓Per-page fetch: admin opens applications+banks; track/dashboard with an ID fetches only that application; checkout fetches orders+banks.
✓Diff-only writes: applications/orders are PUT by ID, banks by country; the whole array is not resent.
✓RTDB live: EventSource on only the needed paths gives instant cross-device admin updates.
✓Cloudinary proofs: every file input uploads through the unsigned preset and stores the returned secure URL locally.
!Firestore: REST adapter is included; enable Firestore + auth rules, then paste an ID token. RTDB is recommended for true instant updates.

Console steps & endpoints

Firebase testing returned CONFIGURATION_NOT_FOUND for Anonymous Auth and 404 for Firestore/RTDB. Create a database first.

1) Firebase console → Build → Realtime Database → Create database
2) Copy its URL, paste above, choose "Realtime Database", Save & reload
3) Firestore rules:
{ "rules": { "emkan": { "v1": { ".read": true, ".write": true } } } }

RTDB REST:   https://zeeshan-project-385b3-default-rtdb.firebaseio.com/emkan/v1/applications.json
Firestore:   https://firestore.googleapis.com/v1/projects/zeeshan-project-385b3/databases/(default)/documents/emkan/v1/applications
Anonymous:  https://identitytoolkit.googleapis.com/v1/accounts:signUp?key=AIzaSyCM8AV5QbPnRaOzaEMNMTvgjtbOcizv4RI
Backend root: emkan/v1 · live stream: EventSource on the opened path · local fallback: BroadcastChannel('emkan-sync')
Security: Browser uploads use the unsigned Cloudinary preset ml_default. Admin writes are protected by Firebase Authentication and Firestore rules.

Firestore text & store seed

Publish all website text keys and the 51-product catalog into Firestore after the rules are live. Firestore rules are supplied separately.

Rules supplied separately.

Upload a proof to Cloudinary

This uses the same unsigned endpoint as payment.html and admin.html.

No upload yet. The global adapter also watches portal file inputs automatically.