Admin dashboard
Checking permissions…
System overview
Counts are read from Supabase. Data remains in the configured database; images are stored in Cloudflare R2.
User control
Role updates are checked by a PostgreSQL security-definer function. Public users cannot promote themselves.
| User ID | Name | Phone | Role | Status | Save role |
|---|---|---|---|---|---|
| Loading user records… | |||||
Product management
Published product metadata is stored in Supabase; image objects are stored in R2.
| Product | Category | Price (BDT) | Status | Seller |
|---|---|---|---|---|
| Loading products… | ||||
Orders
| Order ID | Status | Total (BDT) | Created |
|---|---|---|---|
| Loading orders… | |||
Homepage and welcome settings
Edit the JSON values below. They are saved in Supabase and loaded by the storefront; do not paste script or HTML code.
Hero item example: {"title":"Make room for better things","subtitle":"A smarter way to shop","cta":"Explore the collection","link":"market","tone":["#f4eee7","#e2c8ac"]}. Welcome keys: title, text, code, visibility.
Security and storage
- Supabase Row Level Security must remain enabled.
- Only the public anon/publishable key belongs in the browser.
- R2 media is stored through the Cloudflare Pages R2_BUCKET binding; server-side Supabase service-role credentials stay in Cloudflare Pages Secrets.
- Never expose the service-role key or any R2 API credentials in frontend code. This binding-based upload does not need R2 API keys in the website.
- Apply
supabase/schema.sqlin the Supabase SQL editor before using role controls.
Ekannto — Zero To One, One To Infinity. Admin actions require a signed-in, active privileged profile.