Last updated: 2026-07-12
Confidential — Share Securely with Client
This page contains credentials and infrastructure identifiers. Do not share via unencrypted email.
Live URLs
| Service | URL |
|---|---|
| Public Site + Admin Portal | bernies.sonandigital.com |
| Worker API (internal) | bernies-api.sonandigital.com |
Admin Login
| Field | Value |
|---|---|
| URL | Public site → Admin Login (bottom of page) |
| Default password | Admin@2026 — change immediately after first login |
| Password requirements | 8+ chars · uppercase · number · symbol |
Infrastructure
| Resource | Value |
|---|---|
| Cloudflare Account | sonantechai |
| D1 Database name | lawncare_db |
| D1 Database ID | f029e545-6c71-4762-8776-fd4f930264df |
| Worker environment | bernies (in wrangler.toml) |
| Pages project name | lawncare-portal |
| GitHub repository | sonantechai/lawncare-portal |
| VITE_API_URL (Pages env var) | https://bernies-api.sonandigital.com |
| JWT_SECRET | Set as Worker secret — retrieve from Cloudflare Dashboard → Workers → Secrets |
Client-Facing Access
| Item | Detail |
|---|---|
| Admin URL | bernies.sonandigital.com → Admin Login |
| First-time login password | Admin@2026 |
| Action after first login | Change password immediately · Update business name, phone, email, address in Settings · Add service types · Upload logo |
Secret Management
The JWT_SECRET is stored as a Cloudflare Worker secret (not in code or wrangler.toml). To rotate it: npx wrangler secret put JWT_SECRET --env bernies. After rotating the secret, all existing admin sessions become invalid — the admin will need to log in again. Admin password hashes are stored in the D1 admin_users table using PBKDF2-SHA256.