Rebrand from Casera/MyCrib to honeyDue

Total rebrand across Web project:
- Package name: casera-web -> honeydue-web
- Cookie: casera-token -> honeydue-token
- Theme store: casera-theme -> honeydue-theme
- File sharing: .casera -> .honeydue, component/function renames
- casera-file-handler.tsx -> honeydue-file-handler.tsx
- All UI text, metadata, OG tags updated
- Domains: casera.treytartt.com -> honeyDue.treytartt.com
- Demo data emails updated
- All documentation updated

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Trey t
2026-03-07 06:33:59 -06:00
parent 4b8c10d768
commit e2172c20f2
57 changed files with 192 additions and 192 deletions
+5 -5
View File
@@ -1,8 +1,8 @@
# Casera Web App — Build Plan Overview
# honeyDue Web App — Build Plan Overview
## What We're Building
Full parity web app for Casera: **46 screens**, **104 API operations**, **4 domains** (Residences, Tasks, Contractors, Documents), plus auth, onboarding, subscriptions, settings, and a **sandboxed demo mode** with mock data.
Full parity web app for honeyDue: **46 screens**, **104 API operations**, **4 domains** (Residences, Tasks, Contractors, Documents), plus auth, onboarding, subscriptions, settings, and a **sandboxed demo mode** with mock data.
## Tech Stack
@@ -33,7 +33,7 @@ Full parity web app for Casera: **46 screens**, **104 API operations**, **4 doma
## Project Structure
```
myCribAPI-Web/
honeyDueAPI-Web/
├── src/
│ ├── app/ # Next.js App Router
│ │ ├── (marketing)/ # Public pages (landing, pricing)
@@ -86,7 +86,7 @@ myCribAPI-Web/
|---|---|
| Push notifications | Not needed (no push API for web in scope) |
| Widgets | Not applicable |
| .casera file import/export | File download (export) + drag-and-drop or file picker (import) |
| .honeydue file import/export | File download (export) + drag-and-drop or file picker (import) |
| Apple/Google Sign In | OAuth redirect flow (same backend endpoints) |
| StoreKit subscription | Stripe Checkout or link to App Store (TBD) |
| Camera capture | File upload input (no camera API needed) |
@@ -112,4 +112,4 @@ myCribAPI-Web/
| Demo mode data isolation | No backend calls, purely client-side, session-scoped store, no persistence |
| API compatibility | 100% same endpoints, same token format (`Token <hex>`), same request/response shapes |
| Mobile feature gaps | Push notifications and widgets explicitly excluded. Everything else covered. |
| Deployment independence | Separate Dokku app, own domain (e.g., `app.casera.treytartt.com`), no coupling to Go API deployment |
| Deployment independence | Separate Dokku app, own domain (e.g., `app.honeydue.treytartt.com`), no coupling to Go API deployment |
+7 -7
View File
@@ -18,8 +18,8 @@ Scaffold the project, wire up auth, build the app shell, and establish the desig
## 1. Project Scaffold
```bash
npx create-next-app@latest myCribAPI-Web --typescript --tailwind --eslint --app --src-dir
cd myCribAPI-Web
npx create-next-app@latest honeyDueAPI-Web --typescript --tailwind --eslint --app --src-dir
cd honeyDueAPI-Web
npx shadcn@latest init
```
@@ -33,9 +33,9 @@ npm install -D vitest @playwright/test
## 2. TypeScript Types
Generate TypeScript types matching the Go API DTOs. Source from:
- `myCribAPI-go/internal/dto/requests/` — request shapes
- `myCribAPI-go/internal/dto/responses/` — response shapes
- `myCribAPI-go/internal/models/` — entity shapes
- `honeyDueAPI-go/internal/dto/requests/` — request shapes
- `honeyDueAPI-go/internal/dto/responses/` — response shapes
- `honeyDueAPI-go/internal/models/` — entity shapes
Key types to define in `src/lib/types/`:
@@ -73,7 +73,7 @@ api/
```typescript
// src/lib/api/client.ts
const API_BASE_URL = process.env.NEXT_PUBLIC_API_URL || 'https://mycrib.treytartt.com/api';
const API_BASE_URL = process.env.NEXT_PUBLIC_API_URL || 'https://honeyDue.treytartt.com/api';
async function apiFetch<T>(
path: string,
@@ -225,7 +225,7 @@ Match the mobile app's theme system:
| Desert | TBD | TBD |
| Mint | TBD | TBD |
Theme values sourced from `MyCribKMM/composeApp/src/commonMain/.../ui/theme/ThemeColors.kt`.
Theme values sourced from `HoneyDueKMM/composeApp/src/commonMain/.../ui/theme/ThemeColors.kt`.
### Spacing
+11 -11
View File
@@ -4,8 +4,8 @@ Build sharing, subscriptions, notifications, profile, onboarding, and summary me
## Checklist
- [ ] Residence sharing: generate/display share code, join residence, manage users, .casera file export/import
- [ ] Contractor sharing: .casera file export/import
- [ ] Residence sharing: generate/display share code, join residence, manage users, .honeydue file export/import
- [ ] Contractor sharing: .honeydue file export/import
- [ ] Subscription: status display, feature comparison, upgrade prompt, usage tracking
- [ ] Notification preferences: toggle + time picker per notification type
- [ ] Profile: edit name/email, change password, delete account
@@ -22,7 +22,7 @@ Build sharing, subscriptions, notifications, profile, onboarding, and summary me
| Route | Screen | Description |
|-------|--------|-------------|
| `/app/residences/[id]/share` | Share Residence | Generate/display share code, manage users |
| `/app/residences/join` | Join Residence | Enter share code or import .casera file |
| `/app/residences/join` | Join Residence | Enter share code or import .honeydue file |
### Share Code Flow
@@ -35,15 +35,15 @@ Owner opens Share screen
Invitee opens Join screen
→ Enter share code manually, OR
→ Upload .casera file (drag-and-drop zone)
→ Upload .honeydue file (drag-and-drop zone)
→ POST /api/residences/join/ { code: "ABC123" }
→ On success: redirect to residence detail
```
### .casera File Handling
### .honeydue File Handling
**Export** (owner):
- Button on residence detail: "Export as .casera"
- Button on residence detail: "Export as .honeydue"
- Generates JSON file with `{ type: "residence", code: "ABC123", ... }`
- Browser downloads the file
@@ -73,7 +73,7 @@ Invitee opens Join screen
## 2. Contractor Sharing
### .casera File Export/Import
### .honeydue File Export/Import
**Export**:
- Button on contractor detail: "Share Contractor"
@@ -82,7 +82,7 @@ Invitee opens Join screen
**Import**:
- Button on contractor list: "Import Contractor"
- File picker or drag-and-drop for .casera file
- File picker or drag-and-drop for .honeydue file
- Read JSON, show confirmation dialog, create contractor
- `POST /api/contractors/import/`
@@ -123,7 +123,7 @@ Check tier limits before allowing creation:
### Upgrade Path (Phase 1)
Web users are directed to the mobile app for purchases:
- "Download Casera on the App Store to upgrade"
- "Download honeyDue on the App Store to upgrade"
- Link to App Store listing
### Upgrade Path (Future — Phase 2)
@@ -215,7 +215,7 @@ Add Stripe Checkout for web-only subscription purchases. Requires backend work t
```
Step 1: Welcome
→ "Welcome to Casera! Let's set up your first property."
→ "Welcome to honeyDue! Let's set up your first property."
Step 2: Choose Path
→ "Create a new residence" OR "Join an existing residence"
@@ -300,7 +300,7 @@ Data sources:
At the end of Phase 3, you should have:
1. Residence sharing with code generation, join flow, and user management
2. Contractor sharing via .casera files
2. Contractor sharing via .honeydue files
3. Subscription status with tier limits and upgrade prompts
4. Notification preferences with toggles
5. Profile editing (name, email, password, delete account)
+2 -2
View File
@@ -261,7 +261,7 @@ Persistent banner at the top of the demo app:
```
┌─────────────────────────────────────────────────────────────────┐
│ 🎯 You're exploring Casera in demo mode. [Sign Up Free] │
│ 🎯 You're exploring honeyDue in demo mode. [Sign Up Free] │
│ Changes aren't saved. Create an account to get started! │
└─────────────────────────────────────────────────────────────────┘
```
@@ -282,7 +282,7 @@ Before entering the demo, show a brief preview page:
```
┌─────────────────────────────────────────────────────┐
│ │
│ 🏠 Try Casera — No Account Needed │
│ 🏠 Try honeyDue — No Account Needed │
│ │
│ Manage your home maintenance, track tasks, │
│ organize contractors, and store documents. │
+11 -11
View File
@@ -162,7 +162,7 @@ const nextConfig = {
output: 'standalone', // Required for Docker
images: {
remotePatterns: [
{ protocol: 'https', hostname: 'mycrib.treytartt.com' }, // API media
{ protocol: 'https', hostname: 'honeyDue.treytartt.com' }, // API media
],
},
};
@@ -171,14 +171,14 @@ const nextConfig = {
### Dokku Deployment
```bash
# On mycribDev server
dokku apps:create casera-web
dokku domains:add casera-web app.casera.treytartt.com
dokku config:set casera-web NEXT_PUBLIC_API_URL=https://mycrib.treytartt.com/api
dokku letsencrypt:enable casera-web
# On honeyDueDev server
dokku apps:create honeydue-web
dokku domains:add honeydue-web app.honeyDue.treytartt.com
dokku config:set honeydue-web NEXT_PUBLIC_API_URL=https://honeyDue.treytartt.com/api
dokku letsencrypt:enable honeydue-web
# Deploy
git remote add dokku-web dokku@mycribDev:casera-web
git remote add dokku-web dokku@honeyDueDev:honeydue-web
git push dokku-web main
```
@@ -316,17 +316,17 @@ Marketing and demo pages need proper meta tags:
```typescript
// src/app/(marketing)/page.tsx
export const metadata: Metadata = {
title: 'Casera — Home Maintenance Made Simple',
title: 'honeyDue — Home Maintenance Made Simple',
description: 'Track tasks, organize contractors, store documents. Manage your home maintenance in one place.',
openGraph: {
title: 'Casera — Home Maintenance Made Simple',
title: 'honeyDue — Home Maintenance Made Simple',
description: 'Track tasks, organize contractors, store documents.',
images: ['/og-image.png'],
type: 'website',
},
twitter: {
card: 'summary_large_image',
title: 'Casera',
title: 'honeyDue',
description: 'Home Maintenance Made Simple',
images: ['/og-image.png'],
},
@@ -391,7 +391,7 @@ Track same events as mobile app for consistent analytics.
At the end of Phase 5, you should have:
1. Fully responsive web app (mobile, tablet, desktop)
2. Consistent loading, empty, and error states everywhere
3. Deployed on Dokku at `app.casera.treytartt.com`
3. Deployed on Dokku at `app.honeyDue.treytartt.com`
4. E2E tests covering auth, CRUD, demo mode, and responsive viewports
5. Optimized bundle with code splitting and image optimization
6. SEO-ready marketing and demo pages
+7 -7
View File
@@ -56,7 +56,7 @@ Task 6: Integration + Verification (sequential — cross-domain wiring)
### Step 1: Install missing shadcn components and @dnd-kit
```bash
cd myCribAPI-Web
cd honeyDueAPI-Web
npx shadcn@latest add dialog select textarea tabs skeleton tooltip popover calendar
npm install @dnd-kit/core @dnd-kit/sortable @dnd-kit/utilities date-fns
```
@@ -688,7 +688,7 @@ export * from './use-documents';
### Step 14: Verify build
```bash
cd myCribAPI-Web && npm run build
cd honeyDueAPI-Web && npm run build
```
Expected: Build succeeds with no type errors.
@@ -1253,7 +1253,7 @@ export default function EditResidencePage({
### Step 9: Verify build
```bash
cd myCribAPI-Web && npm run build
cd honeyDueAPI-Web && npm run build
```
Expected: Build succeeds. All 4 residence routes render.
@@ -2198,7 +2198,7 @@ export default function TaskDetailPage({
### Step 11: Verify build
```bash
cd myCribAPI-Web && npm run build
cd honeyDueAPI-Web && npm run build
```
### Step 12: Commit
@@ -2282,7 +2282,7 @@ Follow the same patterns as Residences (Task 2). Key differences:
### Step 9: Verify build
```bash
cd myCribAPI-Web && npm run build
cd honeyDueAPI-Web && npm run build
```
### Step 10: Commit
@@ -2363,7 +2363,7 @@ Key differences from other domains:
### Step 9: Verify build
```bash
cd myCribAPI-Web && npm run build
cd honeyDueAPI-Web && npm run build
```
### Step 10: Commit
@@ -2442,7 +2442,7 @@ export default function DashboardPage() {
### Step 2: Full build verification
```bash
cd myCribAPI-Web && npm run build
cd honeyDueAPI-Web && npm run build
```
Expected: Build succeeds. All routes compile. No type errors.
+23 -23
View File
@@ -42,7 +42,7 @@ Task 7: Integration + Verification (sequential — cross-feature wiring)
### Step 1: Install Recharts
```bash
cd /Users/treyt/Desktop/code/MyCrib/myCribAPI-Web
cd /Users/treyt/Desktop/code/HoneyDue/honeyDueAPI-Web
npm install recharts
```
@@ -282,7 +282,7 @@ export * from './use-subscription';
### Step 9: Verify build
```bash
cd /Users/treyt/Desktop/code/MyCrib/myCribAPI-Web && npm run build
cd /Users/treyt/Desktop/code/HoneyDue/honeyDueAPI-Web && npm run build
```
### Step 10: Commit
@@ -302,7 +302,7 @@ git add -A && git commit -m "feat: add Phase 3 foundation — notification hooks
- Create: `src/app/app/residences/join/page.tsx`
- Create: `src/components/sharing/share-code-display.tsx`
- Create: `src/components/sharing/user-management.tsx`
- Create: `src/components/sharing/casera-file-handler.tsx`
- Create: `src/components/sharing/honeydue-file-handler.tsx`
- Create: `src/lib/hooks/use-sharing.ts`
- Modify: `src/app/app/residences/[id]/page.tsx` (add Share button)
- Modify: `src/app/app/contractors/[id]/page.tsx` (add Share/Export button)
@@ -320,11 +320,11 @@ git add -A && git commit -m "feat: add Phase 3 foundation — notification hooks
- Each user row: name, email, role badge (Owner/Member)
- Owner can click "Remove" → ConfirmDialog → `residencesApi.removeResidenceUser(residenceId, userId)`
### .casera File Handler
### .honeydue File Handler
**casera-file-handler.tsx** — Reusable component for both residence and contractor sharing:
- **Export mode**: Takes data object, generates JSON `{ type: "residence"|"contractor", ... }`, triggers browser download as `.casera` file
- **Import mode**: FileUpload drop zone accepting `.casera` files, reads JSON, validates type, calls callback with parsed data
**honeydue-file-handler.tsx** — Reusable component for both residence and contractor sharing:
- **Export mode**: Takes data object, generates JSON `{ type: "residence"|"contractor", ... }`, triggers browser download as `.honeydue` file
- **Import mode**: FileUpload drop zone accepting `.honeydue` files, reads JSON, validates type, calls callback with parsed data
- Uses `URL.createObjectURL` + anchor click for download
- Uses `FileReader.readAsText` for import
@@ -332,19 +332,19 @@ git add -A && git commit -m "feat: add Phase 3 foundation — notification hooks
**Residence Share page** (`/app/residences/[id]/share`):
- ShareCodeDisplay for generating/displaying share codes
- .casera export button → downloads file with share code embedded
- .honeydue export button → downloads file with share code embedded
- UserManagement table
- Only accessible to residence owner
**Residence Join page** (`/app/residences/join`):
- Text input for manual code entry
- .casera file import drop zone
- .honeydue file import drop zone
- On submit: calls `residencesApi.joinWithCode()` → redirect to residence detail
### Contractor Sharing
On contractor detail page, add "Share" button → generates .casera file with contractor data for download.
On contractor list page, add "Import" button → opens import dialog → reads .casera file → creates contractor via API.
On contractor detail page, add "Share" button → generates .honeydue file with contractor data for download.
On contractor list page, add "Import" button → opens import dialog → reads .honeydue file → creates contractor via API.
### Query hooks
@@ -405,13 +405,13 @@ export function useJoinResidence() {
### Verify build
```bash
cd /Users/treyt/Desktop/code/MyCrib/myCribAPI-Web && npm run build
cd /Users/treyt/Desktop/code/HoneyDue/honeyDueAPI-Web && npm run build
```
### Commit
```bash
git add -A && git commit -m "feat: add residence sharing (share code, join, user management) and contractor .casera export/import"
git add -A && git commit -m "feat: add residence sharing (share code, join, user management) and contractor .honeydue export/import"
```
---
@@ -489,7 +489,7 @@ export async function deleteAccount(): Promise<MessageResponse> {
### Verify build
```bash
cd /Users/treyt/Desktop/code/MyCrib/myCribAPI-Web && npm run build
cd /Users/treyt/Desktop/code/HoneyDue/honeyDueAPI-Web && npm run build
```
### Commit
@@ -560,7 +560,7 @@ npx shadcn@latest add switch
### Verify build
```bash
cd /Users/treyt/Desktop/code/MyCrib/myCribAPI-Web && npm run build
cd /Users/treyt/Desktop/code/HoneyDue/honeyDueAPI-Web && npm run build
```
### Commit
@@ -623,11 +623,11 @@ export const useOnboardingStore = create<OnboardingState>()((set) => ({
- Clean, centered layout (no sidebar or app shell)
- Progress indicator (step dots or progress bar)
- Casera logo at top
- honeyDue logo at top
### Steps
**Step 0: Welcome** — "Welcome to Casera!" message, illustration, "Get Started" button
**Step 0: Welcome** — "Welcome to honeyDue!" message, illustration, "Get Started" button
**Step 1: Choose Path** — Two cards: "Create a new residence" (House icon) and "Join an existing residence" (Users icon). Clicking sets path and advances.
@@ -637,7 +637,7 @@ export const useOnboardingStore = create<OnboardingState>()((set) => ({
- **Step 4a: Complete** — "You're all set!" Redirect to `/app/residences/${id}`
**Path B — Join:**
- **Step 2b: Join Residence** — Code input (6-char) or .casera file import. On submit: joins via API, advances.
- **Step 2b: Join Residence** — Code input (6-char) or .honeydue file import. On submit: joins via API, advances.
- **Step 3b: Complete** — "Welcome to the residence!" Redirect to residence detail.
### Onboarding trigger
@@ -649,7 +649,7 @@ For now, just mark `localStorage.setItem('onboarding_complete', 'true')` after c
### Verify build
```bash
cd /Users/treyt/Desktop/code/MyCrib/myCribAPI-Web && npm run build
cd /Users/treyt/Desktop/code/HoneyDue/honeyDueAPI-Web && npm run build
```
### Commit
@@ -714,7 +714,7 @@ On residence detail page (`src/app/app/residences/[id]/page.tsx`), add a "Downlo
### Verify build
```bash
cd /Users/treyt/Desktop/code/MyCrib/myCribAPI-Web && npm run build
cd /Users/treyt/Desktop/code/HoneyDue/honeyDueAPI-Web && npm run build
```
### Commit
@@ -732,7 +732,7 @@ git add -A && git commit -m "feat: add enhanced dashboard with charts and task r
### Step 1: Full build verification
```bash
cd /Users/treyt/Desktop/code/MyCrib/myCribAPI-Web && npm run build
cd /Users/treyt/Desktop/code/HoneyDue/honeyDueAPI-Web && npm run build
```
### Step 2: Route verification
@@ -766,8 +766,8 @@ git add -A && git commit -m "feat: complete Phase 3 — advanced features integr
At the end of Phase 3, verify:
- [ ] **Residence sharing**: generate share code, copy, join with code, manage users (list/remove)
- [ ] **Contractor sharing**: .casera file export from detail, import on list page
- [ ] **.casera files**: download as JSON, import via drag-and-drop
- [ ] **Contractor sharing**: .honeydue file export from detail, import on list page
- [ ] **.honeydue files**: download as JSON, import via drag-and-drop
- [ ] **Subscription**: status display with usage bars, feature comparison table, upgrade CTA
- [ ] **Feature gating**: upgrade prompt dialog available for tier limit enforcement
- [ ] **Notification preferences**: toggle switches per notification type, saves immediately