Rebrand from Casera/MyCrib to honeyDue

Total rebrand across all Go API source files:
- Go module path: casera-api -> honeydue-api
- All imports updated (130+ files)
- Docker: containers, images, networks renamed
- Email templates: support email, noreply, icon URL
- Domains: casera.app/mycrib.treytartt.com -> honeyDue.treytartt.com
- Bundle IDs: com.tt.casera -> com.tt.honeyDue
- IAP product IDs updated
- Landing page, admin panel, config defaults
- Seeds, CI workflows, Makefile, docs
- Database table names preserved (no migration needed)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Trey t
2026-03-07 06:33:38 -06:00
parent 793e50ce52
commit 4976eafc6c
189 changed files with 831 additions and 831 deletions

View File

@@ -1,7 +1,7 @@
# MyCrib Go Backend — Deep Audit Findings
# HoneyDue Go Backend — Deep Audit Findings
**Date**: 2026-03-01
**Scope**: All non-test `.go` files under `myCribAPI-go/`
**Scope**: All non-test `.go` files under `honeyDueAPI-go/`
**Agents**: 9 parallel audit agents covering security, authorization, data integrity, concurrency, performance, error handling, architecture compliance, API contracts, and cross-cutting logic
---
@@ -42,7 +42,7 @@
### SEC-04 | CRITICAL | Next.js admin password reset to "admin123" on every migration
- **File**: `internal/database/database.go:447-463`
- **What**: Lines 458-463 unconditionally update the admin@mycrib.com password to the bcrypt hash of "admin123" on every migration. The log message on line 463 even says "Updated admin@mycrib.com password to admin123."
- **What**: Lines 458-463 unconditionally update the admin@honeydue.com password to the bcrypt hash of "admin123" on every migration. The log message on line 463 even says "Updated admin@honeydue.com password to admin123."
- **Impact**: The admin API is permanently accessible with hardcoded credentials. Any attacker who discovers the endpoint can access full admin functionality.
### SEC-05 | CRITICAL | SQL injection via SortBy in all admin list endpoints
@@ -236,7 +236,7 @@
### AUTH-06 | CRITICAL | Hardcoded admin credentials reset on every migration
- **File**: `internal/database/database.go:372-382,447-463`
- **What**: Hardcoded admin credentials (`admin@mycrib.com` / `admin123` and GoAdmin password of `admin`) are re-applied on every server restart/migration, overwriting any password changes.
- **What**: Hardcoded admin credentials (`admin@honeydue.com` / `admin123` and GoAdmin password of `admin`) are re-applied on every server restart/migration, overwriting any password changes.
- **Impact**: If these endpoints are accessible in production, any attacker with knowledge of these default credentials can gain full admin access.
### AUTH-07 | BUG | User-controlled category parameter enables storage path manipulation
@@ -350,7 +350,7 @@
### DATA-07 | CRITICAL | Next.js admin password reset on every migration run
- **File**: `internal/database/database.go:458-463`
- **What**: Unconditionally updates admin@mycrib.com password to "admin123" on every migration.
- **What**: Unconditionally updates admin@honeydue.com password to "admin123" on every migration.
- **Impact**: Same persistent backdoor.
### DATA-08 | BUG | GetAllUsers/HasAccess silently wrong when associations not preloaded

View File

@@ -1,6 +1,6 @@
# Dokku Deployment Guide for Casera API
# Dokku Deployment Guide for honeyDue API
This guide provides step-by-step instructions for deploying the Casera Go API to a remote server using Dokku.
This guide provides step-by-step instructions for deploying the honeyDue Go API to a remote server using Dokku.
## Table of Contents
@@ -90,7 +90,7 @@ sudo DOKKU_TAG=v0.34.4 bash bootstrap.sh
```bash
# Set your domain (replace with your actual domain)
dokku domains:set-global casera.treytartt.com
dokku domains:set-global honeyDue.treytartt.com
# Add your SSH public key for deployments
# Run this from your LOCAL machine:
@@ -117,13 +117,13 @@ dokku plugin:install https://github.com/dokku/dokku-letsencrypt.git
### 1. Create the Dokku App
```bash
dokku apps:create casera-api
dokku apps:create honeydue-api
```
### 2. Set the Domain
```bash
dokku domains:add casera-api api.casera.treytartt.com
dokku domains:add honeydue-api api.honeyDue.treytartt.com
```
### 3. Configure Buildpack (if needed)
@@ -131,8 +131,8 @@ dokku domains:add casera-api api.casera.treytartt.com
The app uses a Dockerfile, so Dokku will auto-detect it. If you need to force Docker builds:
```bash
dokku builder:set casera-api build-dir .
dokku builder-dockerfile:set casera-api dockerfile-path Dockerfile
dokku builder:set honeydue-api build-dir .
dokku builder-dockerfile:set honeydue-api dockerfile-path Dockerfile
```
---
@@ -143,20 +143,20 @@ dokku builder-dockerfile:set casera-api dockerfile-path Dockerfile
```bash
# Create the database service
dokku postgres:create casera-db
dokku postgres:create honeydue-db
# Link to the app (automatically sets DATABASE_URL)
dokku postgres:link casera-db casera-api
dokku postgres:link honeydue-db honeydue-api
```
### 2. Verify Connection
```bash
# Check the connection info
dokku postgres:info casera-db
dokku postgres:info honeydue-db
# Connect to the database
dokku postgres:connect casera-db
dokku postgres:connect honeydue-db
```
### 3. Set Individual Database Variables
@@ -165,13 +165,13 @@ Dokku sets `DATABASE_URL` automatically, but the app expects individual variable
```bash
# Get the database credentials
dokku postgres:info casera-db
dokku postgres:info honeydue-db
# Set individual variables (replace with actual values from info command)
dokku config:set casera-api \
DB_HOST=dokku-postgres-casera-db \
dokku config:set honeydue-api \
DB_HOST=dokku-postgres-honeydue-db \
DB_PORT=5432 \
POSTGRES_DB=casera_db \
POSTGRES_DB=honeydue_db \
POSTGRES_USER=postgres \
POSTGRES_PASSWORD=1mJPfu6rzG9r6xukcGbUOU5NoCg0jKfa
```
@@ -184,16 +184,16 @@ dokku config:set casera-api \
```bash
# Create the Redis service
dokku redis:create casera-redis
dokku redis:create honeydue-redis
# Link to the app (automatically sets REDIS_URL)
dokku redis:link casera-redis casera-api
dokku redis:link honeydue-redis honeydue-api
```
### 2. Verify Connection
```bash
dokku redis:info casera-redis
dokku redis:info honeydue-redis
```
---
@@ -203,10 +203,10 @@ dokku redis:info casera-redis
### 1. Required Variables
```bash
dokku config:set casera-api \
dokku config:set honeydue-api \
PORT=5000 \
DEBUG=false \
ALLOWED_HOSTS=api.casera.treytartt.com,localhost \
ALLOWED_HOSTS=api.honeyDue.treytartt.com,localhost \
TIMEZONE=UTC \
SECRET_KEY=8553813eda361017a02677ed504abdd331537cfe6f7cc407345f037cc22c75fc
```
@@ -214,20 +214,20 @@ dokku config:set casera-api \
### 2. Email Configuration
```bash
dokku config:set casera-api \
dokku config:set honeydue-api \
EMAIL_HOST=smtp.fastmail.com \
EMAIL_PORT=587 \
EMAIL_USE_TLS=true \
EMAIL_HOST_USER=treytartt@fastmail.com \
EMAIL_HOST_PASSWORD=2t9y4n4t497z5863 \
DEFAULT_FROM_EMAIL="Casera <treytartt@fastmail.com>"
DEFAULT_FROM_EMAIL="honeyDue <treytartt@fastmail.com>"
```
### 3. Apple Sign In (Optional)
```bash
dokku config:set casera-api \
APPLE_CLIENT_ID=com.tt.casera.CaseraDev \
dokku config:set honeydue-api \
APPLE_CLIENT_ID=com.tt.honeyDue.honeyDueDev \
APPLE_TEAM_ID=V3PF3M6B6U
```
@@ -236,11 +236,11 @@ dokku config:set casera-api \
The API uses direct APNs/FCM connections (no external push server needed):
```bash
dokku config:set casera-api \
dokku config:set honeydue-api \
APNS_AUTH_KEY_PATH=/push_certs/AuthKey_R9N3SM2WD5.p8 \
APNS_AUTH_KEY_ID=R9N3SM2WD5 \
APNS_TEAM_ID=V3PF3M6B6U \
APNS_TOPIC=com.tt.casera.CaseraDev \
APNS_TOPIC=com.tt.honeyDue.honeyDueDev \
APNS_PRODUCTION=true \
FCM_SERVER_KEY=your-firebase-server-key
```
@@ -248,14 +248,14 @@ dokku config:set casera-api \
### 5. Admin Panel URL
```bash
dokku config:set casera-api \
NEXT_PUBLIC_API_URL=https://api.casera.treytartt.com
dokku config:set honeydue-api \
NEXT_PUBLIC_API_URL=https://api.honeyDue.treytartt.com
```
### 6. View All Configuration
```bash
dokku config:show casera-api
dokku config:show honeydue-api
```
---
@@ -266,16 +266,16 @@ dokku config:show casera-api
```bash
# Create storage directory on host
mkdir -p /var/lib/dokku/data/storage/casera-api/uploads
mkdir -p /var/lib/dokku/data/storage/honeydue-api/uploads
# Set permissions
chown -R 32767:32767 /var/lib/dokku/data/storage/casera-api
chown -R 32767:32767 /var/lib/dokku/data/storage/honeydue-api
```
### 2. Mount Storage to App
```bash
dokku storage:mount casera-api /var/lib/dokku/data/storage/casera-api/uploads:/app/uploads
dokku storage:mount honeydue-api /var/lib/dokku/data/storage/honeydue-api/uploads:/app/uploads
```
---
@@ -285,8 +285,8 @@ dokku storage:mount casera-api /var/lib/dokku/data/storage/casera-api/uploads:/a
### 1. Add Dokku Remote (Local Machine)
```bash
cd /path/to/myCribAPI-go
git remote add dokku dokku@your-server-ip:casera-api
cd /path/to/honeyDueAPI-go
git remote add dokku dokku@your-server-ip:honeydue-api
```
### 2. Deploy
@@ -301,17 +301,17 @@ git push dokku main
```bash
# On server
dokku logs casera-api -t
dokku logs honeydue-api -t
```
### 4. Verify Deployment
```bash
# Check app status
dokku ps:report casera-api
dokku ps:report honeydue-api
# Check app is running
curl https://api.casera.treytartt.com/api/health/
curl https://api.honeyDue.treytartt.com/api/health/
```
---
@@ -321,13 +321,13 @@ curl https://api.casera.treytartt.com/api/health/
### 1. Set Let's Encrypt Email
```bash
dokku letsencrypt:set casera-api email admin@treytartt.com
dokku letsencrypt:set honeydue-api email admin@treytartt.com
```
### 2. Enable Let's Encrypt
```bash
dokku letsencrypt:enable casera-api
dokku letsencrypt:enable honeydue-api
```
### 3. Set Up Auto-Renewal
@@ -345,7 +345,7 @@ The worker process handles background jobs (task reminders, overdue alerts, dail
### 1. Configure Worker Environment Variables
```bash
dokku config:set casera-api \
dokku config:set honeydue-api \
TASK_REMINDER_HOUR=20 \
TASK_REMINDER_MINUTE=0 \
OVERDUE_REMINDER_HOUR=9 \
@@ -364,17 +364,17 @@ dokku config:set casera-api \
```bash
# Scale to 1 worker
dokku ps:scale casera-api worker=1
dokku ps:scale honeydue-api worker=1
# Verify processes
dokku ps:report casera-api
dokku ps:report honeydue-api
```
### 3. Verify Worker is Running
```bash
# Check worker logs
dokku logs casera-api -p worker
dokku logs honeydue-api -p worker
# Should see:
# "Registered task reminder job"
@@ -391,33 +391,33 @@ dokku logs casera-api -p worker
```bash
# Real-time logs
dokku logs casera-api -t
dokku logs honeydue-api -t
# Last 100 lines
dokku logs casera-api -n 100
dokku logs honeydue-api -n 100
# Worker logs
dokku logs casera-api -p worker
dokku logs honeydue-api -p worker
```
### Database Operations
```bash
# Connect to database
dokku postgres:connect casera-db
dokku postgres:connect honeydue-db
# Export database backup
dokku postgres:export casera-db > backup.sql
dokku postgres:export honeydue-db > backup.sql
# Import database backup
dokku postgres:import casera-db < backup.sql
dokku postgres:import honeydue-db < backup.sql
```
### Run Migrations Manually
```bash
# Enter the app container
dokku enter casera-api web
dokku enter honeydue-api web
# Migrations run automatically on startup, but if needed:
/app/api migrate
@@ -426,24 +426,24 @@ dokku enter casera-api web
### Restart App
```bash
dokku ps:restart casera-api
dokku ps:restart honeydue-api
```
### Scale App
```bash
# Scale web process
dokku ps:scale casera-api web=2 worker=1
dokku ps:scale honeydue-api web=2 worker=1
# View current scale
dokku ps:report casera-api
dokku ps:report honeydue-api
```
### Stop/Start App
```bash
dokku ps:stop casera-api
dokku ps:start casera-api
dokku ps:stop honeydue-api
dokku ps:start honeydue-api
```
---
@@ -453,8 +453,8 @@ dokku ps:start casera-api
### Check App Status
```bash
dokku ps:report casera-api
dokku logs casera-api -n 200
dokku ps:report honeydue-api
dokku logs honeydue-api -n 200
```
### Common Issues
@@ -463,47 +463,47 @@ dokku logs casera-api -n 200
```bash
# Check logs for errors
dokku logs casera-api -n 500
dokku logs honeydue-api -n 500
# Verify environment variables
dokku config:show casera-api
dokku config:show honeydue-api
# Check if ports are available
dokku proxy:ports casera-api
dokku proxy:ports honeydue-api
```
#### 2. Database Connection Failed
```bash
# Verify link
dokku postgres:linked casera-api casera-db
dokku postgres:linked honeydue-api honeydue-db
# Check database is running
dokku postgres:info casera-db
dokku postgres:info honeydue-db
# Re-link if needed
dokku postgres:unlink casera-db casera-api
dokku postgres:link casera-db casera-api
dokku postgres:unlink honeydue-db honeydue-api
dokku postgres:link honeydue-db honeydue-api
```
#### 3. Redis Connection Failed
```bash
# Verify link
dokku redis:linked casera-api casera-redis
dokku redis:linked honeydue-api honeydue-redis
# Check Redis is running
dokku redis:info casera-redis
dokku redis:info honeydue-redis
```
#### 4. Storage/Upload Issues
```bash
# Check mounts
dokku storage:report casera-api
dokku storage:report honeydue-api
# Verify permissions
ls -la /var/lib/dokku/data/storage/casera-api/
ls -la /var/lib/dokku/data/storage/honeydue-api/
```
#### 5. SSL Certificate Issues
@@ -513,7 +513,7 @@ ls -la /var/lib/dokku/data/storage/casera-api/
dokku letsencrypt:list
# Renew manually
dokku letsencrypt:enable casera-api
dokku letsencrypt:enable honeydue-api
```
### View Resource Usage
@@ -523,7 +523,7 @@ dokku letsencrypt:enable casera-api
docker stats
# Disk usage
dokku storage:report casera-api
dokku storage:report honeydue-api
df -h
```
@@ -534,12 +534,12 @@ df -h
| Command | Description |
|---------|-------------|
| `dokku apps:list` | List all apps |
| `dokku logs casera-api -t` | Tail logs |
| `dokku ps:restart casera-api` | Restart app |
| `dokku config:show casera-api` | Show env vars |
| `dokku postgres:connect casera-db` | Connect to DB |
| `dokku enter casera-api web` | Shell into container |
| `dokku ps:scale casera-api web=2` | Scale processes |
| `dokku logs honeydue-api -t` | Tail logs |
| `dokku ps:restart honeydue-api` | Restart app |
| `dokku config:show honeydue-api` | Show env vars |
| `dokku postgres:connect honeydue-db` | Connect to DB |
| `dokku enter honeydue-api web` | Shell into container |
| `dokku ps:scale honeydue-api web=2` | Scale processes |
---

View File

@@ -1,6 +1,6 @@
# Go To Prod Plan
This document is a phased production-readiness plan for the Casera Go API repo.
This document is a phased production-readiness plan for the honeyDue Go API repo.
Execute phases in order. Do not skip exit criteria.
## How To Use This Plan
@@ -15,12 +15,12 @@ Goal: eliminate known repo/config drift before hardening.
### Tasks
1. Fix stale admin build/run targets in [`Makefile`](/Users/treyt/Desktop/code/MyCribAPI_GO/Makefile) that reference `cmd/admin` (non-existent).
2. Align worker env vars in [`docker-compose.yml`](/Users/treyt/Desktop/code/MyCribAPI_GO/docker-compose.yml) with Go config:
1. Fix stale admin build/run targets in [`Makefile`](/Users/treyt/Desktop/code/HoneyDueAPI_GO/Makefile) that reference `cmd/admin` (non-existent).
2. Align worker env vars in [`docker-compose.yml`](/Users/treyt/Desktop/code/HoneyDueAPI_GO/docker-compose.yml) with Go config:
- use `TASK_REMINDER_HOUR`
- use `OVERDUE_REMINDER_HOUR`
- use `DAILY_DIGEST_HOUR`
3. Align supported locales in [`internal/i18n/i18n.go`](/Users/treyt/Desktop/code/MyCribAPI_GO/internal/i18n/i18n.go) with translation files in [`internal/i18n/translations`](/Users/treyt/Desktop/code/MyCribAPI_GO/internal/i18n/translations).
3. Align supported locales in [`internal/i18n/i18n.go`](/Users/treyt/Desktop/code/HoneyDueAPI_GO/internal/i18n/i18n.go) with translation files in [`internal/i18n/translations`](/Users/treyt/Desktop/code/HoneyDueAPI_GO/internal/i18n/translations).
4. Remove any committed secrets/keys from repo and history; rotate immediately.
### Validation
@@ -42,7 +42,7 @@ Goal: block regressions by policy.
### Tasks
1. Update [`/.github/workflows/backend-ci.yml`](/Users/treyt/Desktop/code/MyCribAPI_GO/.github/workflows/backend-ci.yml) with required jobs:
1. Update [`/.github/workflows/backend-ci.yml`](/Users/treyt/Desktop/code/HoneyDueAPI_GO/.github/workflows/backend-ci.yml) with required jobs:
- `lint` (`go vet ./...`, `gofmt -l .`)
- `test` (`go test -race -count=1 ./...`)
- `contract` (`go test -v -run "TestRouteSpecContract|TestKMPSpecContract" ./internal/integration/`)
@@ -72,7 +72,7 @@ Goal: guarantee deploy safety for API behavior and schema changes.
### Tasks
1. Keep OpenAPI as source of truth in [`docs/openapi.yaml`](/Users/treyt/Desktop/code/MyCribAPI_GO/docs/openapi.yaml).
1. Keep OpenAPI as source of truth in [`docs/openapi.yaml`](/Users/treyt/Desktop/code/HoneyDueAPI_GO/docs/openapi.yaml).
2. Require route/schema updates in same PR as handler changes.
3. Add migration checks in CI:
- migrate up on clean DB
@@ -166,7 +166,7 @@ Goal: make production behavior measurable and actionable.
- queue depth/retry spikes
- DB latency
4. Add dead-letter queue review and replay procedure.
5. Document incident runbooks in [`docs/`](/Users/treyt/Desktop/code/MyCribAPI_GO/docs):
5. Document incident runbooks in [`docs/`](/Users/treyt/Desktop/code/HoneyDueAPI_GO/docs):
- DB outage
- Redis outage
- push provider outage

View File

@@ -1,8 +1,8 @@
# Full Localization Plan for Casera
# Full Localization Plan for honeyDue
## Overview
Complete localization of the Casera property management app across three codebases:
Complete localization of the honeyDue property management app across three codebases:
- **Go API** - Server-side localization of errors, emails, push notifications, lookup data
- **KMM/Android** - Compose Multiplatform string resources
- **iOS** - Apple String Catalogs (.xcstrings)
@@ -28,7 +28,7 @@ go get github.com/nicksnyder/go-i18n/v2
### 1.2 Directory Structure
```
myCribAPI-go/
honeyDueAPI-go/
├── internal/
│ └── i18n/
│ ├── i18n.go # Core setup, bundle, T() helper
@@ -139,7 +139,7 @@ Use Compose Multiplatform Resources (already in build.gradle.kts via `compose.co
### 2.2 Directory Structure
```
MyCribKMM/composeApp/src/commonMain/
HoneyDueKMM/composeApp/src/commonMain/
└── composeResources/
├── values/
│ └── strings.xml # English (base)
@@ -195,8 +195,8 @@ MyCribKMM/composeApp/src/commonMain/
### 2.4 Usage in Compose
```kotlin
import casera.composeapp.generated.resources.Res
import casera.composeapp.generated.resources.*
import honeydue.composeapp.generated.resources.Res
import honeydue.composeapp.generated.resources.*
import org.jetbrains.compose.resources.stringResource
@Composable

View File

@@ -1,10 +1,10 @@
# Push Notifications Architecture
This document describes how push notifications work in the Casera API.
This document describes how push notifications work in the honeyDue API.
## Overview
The Casera API sends push notifications directly to Apple Push Notification service (APNs) and Firebase Cloud Messaging (FCM) without any intermediate push server. This approach:
The honeyDue API sends push notifications directly to Apple Push Notification service (APNs) and Firebase Cloud Messaging (FCM) without any intermediate push server. This approach:
- Reduces infrastructure complexity (no Gorush or other push server needed)
- Provides direct control over notification payloads
@@ -14,7 +14,7 @@ The Casera API sends push notifications directly to Apple Push Notification serv
```
┌─────────────────────────────────────────────────────────────────────────┐
Casera API │
honeyDue API │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌─────────────────────┐ ┌───────────────────┐ │
@@ -153,7 +153,7 @@ let taskCategory = UNNotificationCategory(
| `APNS_AUTH_KEY_PATH` | For iOS | Path to .p8 key file |
| `APNS_AUTH_KEY_ID` | For iOS | Key ID from Apple Developer |
| `APNS_TEAM_ID` | For iOS | Team ID from Apple Developer |
| `APNS_TOPIC` | For iOS | Bundle ID (e.g., `com.tt.casera.CaseraDev`) |
| `APNS_TOPIC` | For iOS | Bundle ID (e.g., `com.tt.honeyDue.honeyDueDev`) |
| `APNS_PRODUCTION` | No | `true` for production, `false` for sandbox |
| `APNS_USE_SANDBOX` | No | Deprecated, use `APNS_PRODUCTION` |
| `FCM_SERVER_KEY` | For Android | Firebase Cloud Messaging server key |
@@ -168,7 +168,7 @@ volumes:
- ./push_certs:/certs:ro
# Dokku
dokku storage:mount casera-api /path/to/push_certs:/certs
dokku storage:mount honeydue-api /path/to/push_certs:/certs
```
## Data Flow
@@ -263,7 +263,7 @@ log.Info().
docker-compose logs -f worker
# Dokku
dokku logs casera-api -p worker
dokku logs honeydue-api -p worker
```
### Test Push Manually

View File

@@ -192,7 +192,7 @@ suspend fun fetchMedia(mediaUrl: String): ByteArray {
## Files to Modify
### Go API (myCribAPI-go)
### Go API (honeyDueAPI-go)
| File | Change |
|------|--------|
@@ -203,7 +203,7 @@ suspend fun fetchMedia(mediaUrl: String): ByteArray {
| `/internal/services/document_service.go` | Update to generate proxy URLs |
| `/internal/services/task_service.go` | Update to generate proxy URLs for completions |
### iOS (MyCribKMM/iosApp)
### iOS (HoneyDueKMM/iosApp)
| File | Change |
|------|--------|

View File

@@ -48,7 +48,7 @@ To enable server-side receipt validation:
1. Go to [App Store Connect > Users and Access > Keys](https://appstoreconnect.apple.com/access/api)
2. Click **Generate API Key**
3. Give it a name (e.g., "Casera IAP Server")
3. Give it a name (e.g., "honeyDue IAP Server")
4. Select **App Manager** role (minimum required for IAP)
5. Download the `.p8` file - **you can only download it once!**
6. Note the **Key ID** and **Issuer ID**
@@ -80,15 +80,15 @@ Google uses Cloud Pub/Sub to deliver subscription notifications. Setup requires
2. Select your project (or create one)
3. Navigate to **Pub/Sub** > **Topics**
4. Click **Create Topic**
5. Name it (e.g., `casera-subscriptions`)
6. Note the full topic name: `projects/your-project-id/topics/casera-subscriptions`
5. Name it (e.g., `honeydue-subscriptions`)
6. Note the full topic name: `projects/your-project-id/topics/honeydue-subscriptions`
### 2. Create a Push Subscription
1. In the Pub/Sub Topics list, click on your topic
2. Click **Create Subscription**
3. Configure:
- **Subscription ID**: `casera-subscription-webhook`
- **Subscription ID**: `honeydue-subscription-webhook`
- **Delivery type**: Push
- **Endpoint URL**: `https://your-domain.com/api/subscription/webhook/google/`
- **Acknowledgment deadline**: 60 seconds
@@ -100,7 +100,7 @@ Google uses Cloud Pub/Sub to deliver subscription notifications. Setup requires
2. Select your app
3. Navigate to **Monetization** > **Monetization setup**
4. Under **Real-time developer notifications**:
- Enter your topic name: `projects/your-project-id/topics/casera-subscriptions`
- Enter your topic name: `projects/your-project-id/topics/honeydue-subscriptions`
5. Click **Save**
6. Click **Send test notification** to verify the connection
@@ -108,7 +108,7 @@ Google uses Cloud Pub/Sub to deliver subscription notifications. Setup requires
1. Go to [Google Cloud Console > IAM & Admin > Service Accounts](https://console.cloud.google.com/iam-admin/serviceaccounts)
2. Click **Create Service Account**
3. Name it (e.g., `casera-iap-validator`)
3. Name it (e.g., `honeydue-iap-validator`)
4. Grant roles:
- `Pub/Sub Subscriber` (for webhook handling)
5. Click **Done**

View File

@@ -1,6 +1,6 @@
# Task Kanban Categorization
This document explains how tasks are categorized into kanban columns in the Casera application.
This document explains how tasks are categorized into kanban columns in the honeyDue application.
> Note: The categorization chain still computes `cancelled_tasks`, but the kanban board response
> intentionally hides cancelled/archived tasks and returns only 5 visible columns.
@@ -245,7 +245,7 @@ Each column has associated metadata for UI rendering:
### Basic Categorization
```go
import "github.com/treytartt/casera-api/internal/task/categorization"
import "github.com/treytartt/honeydue-api/internal/task/categorization"
task := &models.Task{
DueDate: time.Now().AddDate(0, 0, 15), // 15 days from now

View File

@@ -1,6 +1,6 @@
# Task Kanban Board Categorization Logic
This document describes how tasks are categorized into kanban columns for display in the Casera mobile app.
This document describes how tasks are categorized into kanban columns for display in the honeyDue mobile app.
> Important: The board intentionally returns **5 visible columns**. Cancelled and archived tasks are
> hidden from board responses (though task-level `kanban_column` may still be `cancelled_tasks`).

View File

@@ -22,7 +22,7 @@ internal/task/
Pure Go functions that define task logic. These are the **canonical definitions** for all task states.
```go
import "github.com/treytartt/casera-api/internal/task/predicates"
import "github.com/treytartt/honeydue-api/internal/task/predicates"
// State checks
predicates.IsCompleted(task) // NextDueDate == nil && len(Completions) > 0
@@ -43,7 +43,7 @@ predicates.IsUpcoming(task, now, days) // Everything else
GORM scope functions that produce the same results as predicates, but execute at the database level. Use these when counting or filtering large datasets without loading all records into memory.
```go
import "github.com/treytartt/casera-api/internal/task/scopes"
import "github.com/treytartt/honeydue-api/internal/task/scopes"
// State scopes
db.Scopes(scopes.ScopeActive) // is_cancelled = false AND is_archived = false
@@ -69,7 +69,7 @@ db.Scopes(scopes.ScopeKanbanOrder) // Due date ASC, priority DESC, cr
Determines which kanban column a task belongs to. Uses predicates internally.
```go
import "github.com/treytartt/casera-api/internal/task/categorization"
import "github.com/treytartt/honeydue-api/internal/task/categorization"
// Single task
column := categorization.CategorizeTask(task, 30)
@@ -85,7 +85,7 @@ columns := categorization.CategorizeTasksIntoColumns(tasks, 30)
For most use cases, import the main task package which re-exports everything:
```go
import "github.com/treytartt/casera-api/internal/task"
import "github.com/treytartt/honeydue-api/internal/task"
// Use predicates
if task.IsCompleted(t) { ... }
@@ -344,7 +344,7 @@ predicates.IsInProgress(task) // Checks task.InProgress boolean
For most files, use the convenience re-exports:
```go
import "github.com/treytartt/casera-api/internal/task"
import "github.com/treytartt/honeydue-api/internal/task"
// Then use:
task.IsCompleted(t)
@@ -355,8 +355,8 @@ task.CategorizeTask(t, 30)
For files that only need predicates or only need scopes:
```go
import "github.com/treytartt/casera-api/internal/task/predicates"
import "github.com/treytartt/casera-api/internal/task/scopes"
import "github.com/treytartt/honeydue-api/internal/task/predicates"
import "github.com/treytartt/honeydue-api/internal/task/scopes"
```
## Related Documentation

View File

@@ -2,7 +2,7 @@
*Last Updated: December 2024*
This document provides a comprehensive comparison of home management apps similar to Casera/MyCrib.
This document provides a comprehensive comparison of home management apps similar to honeyDue/HoneyDue.
---
@@ -10,7 +10,7 @@ This document provides a comprehensive comparison of home management apps simila
| App | Task Scheduling | Multi-Property | Document Storage | Contractors | Warranty Tracking | Pricing |
|-----|----------------|----------------|------------------|-------------|-------------------|---------|
| **Casera (MyCrib)** | Recurring + Kanban | Yes | Yes | Yes | Yes | TBD |
| **honeyDue** | Recurring + Kanban | Yes | Yes | Yes | Yes | TBD |
| **HomeZada** | Yes | Yes (Deluxe) | Yes | No | Yes | Free / $59-99/yr |
| **Centriq** | Reminders only | Yes | Yes (Manuals) | No | Yes + Recalls | Free / $18-100/yr |
| **Homer** | Yes | Yes | Yes | Contacts only | Yes | Free / Premium |
@@ -187,9 +187,9 @@ This document provides a comprehensive comparison of home management apps simila
## Competitive Positioning
### Where Casera Differentiates
### Where honeyDue Differentiates
Based on competitor analysis, Casera has unique advantages:
Based on competitor analysis, honeyDue has unique advantages:
1. **Contractor Management** - Most competitors lack this entirely
2. **Kanban Task View** - Unique visual organization (overdue, due soon, upcoming, completed)
@@ -197,9 +197,9 @@ Based on competitor analysis, Casera has unique advantages:
4. **Combined Approach** - Tasks + Documents + Contractors + Warranties in one app
5. **Recurring Task Intelligence** - Smart next-due-date calculation for recurring maintenance
### Competitor Gaps Casera Fills
### Competitor Gaps honeyDue Fills
| Gap | Competitors Missing It | Casera Solution |
| Gap | Competitors Missing It | honeyDue Solution |
|-----|------------------------|-----------------|
| Contractor database | All except Homer (contacts only) | Full contractor profiles with specialties |
| Kanban visualization | All | Visual task board with columns |
@@ -229,12 +229,12 @@ Based on market analysis:
### Competitive Price Points
| Competitor | Annual Price | Casera Comparison |
| Competitor | Annual Price | honeyDue Comparison |
|------------|--------------|-------------------|
| Tody | $6 | Casera offers much more (not just cleaning) |
| Sweepy | $15-17 | Casera offers full home management |
| Centriq | $18-100 | Casera has better task management |
| HomeZada | $59-149 | Casera adds contractors, better UX |
| Tody | $6 | honeyDue offers much more (not just cleaning) |
| Sweepy | $15-17 | honeyDue offers full home management |
| Centriq | $18-100 | honeyDue has better task management |
| HomeZada | $59-149 | honeyDue adds contractors, better UX |
---

View File

@@ -11,28 +11,28 @@
---
# Casera Launches to Help Homeowners Take Control of Home Maintenance
# honeyDue Launches to Help Homeowners Take Control of Home Maintenance
*New mobile app brings task management, document storage, and contractor organization to homeowners tired of forgotten maintenance and lost warranties*
---
**[CITY, STATE] — [DATE]** — Casera, a new home maintenance management app, launched today on iOS and Android, offering homeowners a simple yet powerful way to organize every aspect of home upkeep. The app combines recurring task scheduling, document storage, contractor management, and household collaboration in one intuitive platform.
**[CITY, STATE] — [DATE]** — honeyDue, a new home maintenance management app, launched today on iOS and Android, offering homeowners a simple yet powerful way to organize every aspect of home upkeep. The app combines recurring task scheduling, document storage, contractor management, and household collaboration in one intuitive platform.
"Homeownership comes with a hidden job: maintenance manager," said [Founder Name], founder of Casera. "Most people cobble together sticky notes, spreadsheet reminders, and hope. We built Casera because there had to be a better way."
"Homeownership comes with a hidden job: maintenance manager," said [Founder Name], founder of honeyDue. "Most people cobble together sticky notes, spreadsheet reminders, and hope. We built honeyDue because there had to be a better way."
### The Problem Casera Solves
### The Problem honeyDue Solves
The average single-family home requires maintenance on over 40 different systems and components, from HVAC filters to roof inspections. According to HomeAdvisor, homeowners spend an average of $3,192 annually on emergency repairs — many of which could be prevented with regular maintenance.
Yet most homeowners lack any organized system to track these tasks. Warranties get lost in email. Contractor contact information lives in scattered text threads. Important maintenance gets forgotten until something breaks.
### How Casera Works
### How honeyDue Works
Casera provides homeowners with four core capabilities:
honeyDue provides homeowners with four core capabilities:
**Smart Task Scheduling**
Users can create one-time or recurring maintenance tasks with customizable frequencies — from daily to annually. The app's kanban-style board shows tasks organized by urgency: overdue, due soon, upcoming, and completed. When a recurring task is completed, Casera automatically schedules the next occurrence.
Users can create one-time or recurring maintenance tasks with customizable frequencies — from daily to annually. The app's kanban-style board shows tasks organized by urgency: overdue, due soon, upcoming, and completed. When a recurring task is completed, honeyDue automatically schedules the next occurrence.
**Document Storage**
Warranties, manuals, receipts, and home documents can be uploaded and organized by room or category. When an appliance needs service, the warranty information is instantly accessible.
@@ -51,13 +51,13 @@ The home services market is projected to reach $1.2 trillion by 2026, driven by
### Pricing and Availability
Casera is available now as a free download on the [App Store](link) and [Google Play](link). The free tier includes core functionality for one property. Premium tiers offering multiple properties, unlimited document storage, and priority support are available starting at $[X]/month.
honeyDue is available now as a free download on the [App Store](link) and [Google Play](link). The free tier includes core functionality for one property. Premium tiers offering multiple properties, unlimited document storage, and priority support are available starting at $[X]/month.
### About Casera
### About honeyDue
Casera is a home maintenance management platform designed to help homeowners stay ahead of maintenance, protect their investment, and reduce the stress of property upkeep. Founded in [YEAR], Casera is headquartered in [CITY, STATE].
honeyDue is a home maintenance management platform designed to help homeowners stay ahead of maintenance, protect their investment, and reduce the stress of property upkeep. Founded in [YEAR], honeyDue is headquartered in [CITY, STATE].
For more information, visit [www.casera.app](https://www.casera.app) or follow @CaseraApp on [Twitter](link) and [Instagram](link).
For more information, visit [www.honeyDue.treytartt.com](https://www.honeyDue.treytartt.com) or follow @honeyDueApp on [Twitter](link) and [Instagram](link).
---
@@ -76,7 +76,7 @@ High-resolution logos, app screenshots, and founder headshots are available at:
| **Price** | Free with premium tiers |
| **Headquarters** | [CITY, STATE] |
| **Website** | [URL] |
| **Social** | @CaseraApp |
| **Social** | @honeyDueApp |
---
@@ -94,7 +94,7 @@ High-resolution logos, app screenshots, and founder headshots are available at:
Hi [Name],
Quick pitch: Casera is a new app that helps homeowners track recurring maintenance, store warranties, and organize contractor info — all in one place.
Quick pitch: honeyDue is a new app that helps homeowners track recurring maintenance, store warranties, and organize contractor info — all in one place.
**The hook:** The average homeowner spends $3,000+/year on emergency repairs. Most are preventable with basic maintenance. But there's been no good system to track it all — until now.
@@ -115,7 +115,7 @@ Best,
## Tweet-Length Announcement
```
📱 Casera just launched — the home maintenance app for homeowners who are tired of forgetting filter changes and losing warranties.
📱 honeyDue just launched — the home maintenance app for homeowners who are tired of forgetting filter changes and losing warranties.
Free on iOS + Android.
@@ -129,10 +129,10 @@ Your home runs better when you do. 🏠
*Choose the one that fits your story best:*
**Problem-focused:**
> "I built Casera after my AC died because I forgot a $150 tune-up. That $4,000 lesson convinced me there had to be a better way to manage home maintenance."
> "I built honeyDue after my AC died because I forgot a $150 tune-up. That $4,000 lesson convinced me there had to be a better way to manage home maintenance."
**Vision-focused:**
> "We believe your home deserves the same organizational tools as your work calendar. Casera brings that professionalism to home management."
> "We believe your home deserves the same organizational tools as your work calendar. honeyDue brings that professionalism to home management."
**Market-focused:**
> "Smart home technology has focused on automation and convenience. We're focused on something simpler: helping people remember to take care of their biggest investment."
@@ -168,21 +168,21 @@ Journalists can approach this story from multiple angles:
1. What's the most commonly forgotten home maintenance task?
2. How much can preventive maintenance actually save homeowners?
3. Why hasn't this problem been solved before?
4. How is Casera different from calendar reminders?
4. How is honeyDue different from calendar reminders?
5. What's the most surprising thing you've learned from users?
---
## Boilerplate
**About Casera (50 words)**
Casera is a home maintenance management app that helps homeowners track recurring tasks, store important documents, organize contractor information, and collaborate with household members. Available on iOS and Android, Casera brings clarity and organization to the often-overwhelming job of home upkeep.
**About honeyDue (50 words)**
honeyDue is a home maintenance management app that helps homeowners track recurring tasks, store important documents, organize contractor information, and collaborate with household members. Available on iOS and Android, honeyDue brings clarity and organization to the often-overwhelming job of home upkeep.
**About Casera (25 words)**
Casera is a home maintenance app that helps homeowners track tasks, store warranties, and organize contractor info — all in one place.
**About honeyDue (25 words)**
honeyDue is a home maintenance app that helps homeowners track tasks, store warranties, and organize contractor info — all in one place.
**About Casera (10 words)**
Casera: The organized way to manage home maintenance.
**About honeyDue (10 words)**
honeyDue: The organized way to manage home maintenance.
---
@@ -195,6 +195,6 @@ Casera: The organized way to manage home maintenance.
**General Information:**
Website: [URL]
Email: hello@casera.app
Twitter: @CaseraApp
Instagram: @CaseraApp
Email: hello@honeyDue.treytartt.com
Twitter: @honeyDueApp
Instagram: @honeyDueApp

View File

@@ -1,6 +1,6 @@
# Casera Social Media Kit
# honeyDue Social Media Kit
*Ready-to-use posts for launching and promoting Casera*
*Ready-to-use posts for launching and promoting honeyDue*
---
@@ -23,7 +23,7 @@
**Post 1 - Main Launch**
```
Introducing Casera 🏠
Introducing honeyDue 🏠
The home maintenance app that actually makes sense.
@@ -41,7 +41,7 @@ Download free → [link]
```
That "I should really check the HVAC filter" thought you have every 3 months?
Casera remembers it for you.
honeyDue remembers it for you.
Set it once. Get reminded forever.
@@ -56,7 +56,7 @@ POV: You need a plumber at 9pm
❌ Googling "plumber near me" again
❌ Hoping you saved that business card
✅ Opening Casera and finding Mike the Plumber instantly
✅ Opening honeyDue and finding Mike the Plumber instantly
Your contractor rolodex, always in your pocket.
```
@@ -73,7 +73,7 @@ Your contractor rolodex, always in your pocket.
These aren't one-time tasks. They come back.
Casera knows that. Set the frequency once, and we'll remind you every time it's due.
honeyDue knows that. Set the frequency once, and we'll remind you every time it's due.
Smart home maintenance → [link]
```
@@ -87,7 +87,7 @@ Finally, a way to actually SEE your home maintenance:
🟢 Upcoming — you're ahead of the game
✅ Completed — feel that satisfaction
Casera's kanban view. Simple. Visual. Effective.
honeyDue's kanban view. Simple. Visual. Effective.
```
**Document Storage**
@@ -97,7 +97,7 @@ Where's the warranty for your fridge?
A) Filing cabinet somewhere
B) Email from 3 years ago
C) No idea
D) Casera — because you uploaded it when you bought it
D) honeyDue — because you uploaded it when you bought it
Be option D.
```
@@ -109,7 +109,7 @@ Be option D.
Sound familiar?
Casera lets you share your home with family members. Everyone sees what needs doing. No more crossed wires.
honeyDue lets you share your home with family members. Everyone sees what needs doing. No more crossed wires.
(pun intended)
```
@@ -152,7 +152,7 @@ Reply with:
5/ Smoke detector batteries — Every 6 months. Life-saving.
Save this. Or better yet, add them all to Casera and never think about it again.
Save this. Or better yet, add them all to honeyDue and never think about it again.
```
---
@@ -163,7 +163,7 @@ Save this. Or better yet, add them all to Casera and never think about it again.
**Slide 1:**
```
MEET CASERA
MEET HONEYDUE
The home maintenance app you didn't know you needed
(but definitely do)
@@ -187,7 +187,7 @@ Sound familiar?
```
THE SOLUTION
Casera organizes everything:
honeyDue organizes everything:
📋 Tasks — recurring reminders that actually recur
📄 Documents — warranties, manuals, receipts
@@ -219,7 +219,7 @@ GET STARTED FREE
Your home works hard for you.
Let's return the favor.
Download Casera
Download honeyDue
Link in bio 🏠
```
@@ -232,7 +232,7 @@ Link in bio 🏠
Caption:
Sunday morning coffee hits different when you're not mentally running through everything you forgot to maintain.
Casera handles the remembering.
honeyDue handles the remembering.
You handle the relaxing.
#homeowner #homeownership #adulting #homemaintenance #organizedhome #homeownertips #firsttimehomebuyer
@@ -247,7 +247,7 @@ Most could be prevented with regular maintenance.
The unsexy truth: Boring scheduled tasks save exciting amounts of money.
Casera makes the boring part automatic.
honeyDue makes the boring part automatic.
#homeownerhacks #homemaintenance #savemoney #preventivemaintenance #homecare
```
@@ -261,7 +261,7 @@ Then the AC died in July because I forgot the spring tune-up.
$4,200 lesson learned.
Now I use Casera."
Now I use honeyDue."
— Every homeowner, eventually
@@ -281,7 +281,7 @@ Hook: "Nobody told me homes need THIS much maintenance"
Content:
- Quick cuts of common maintenance tasks
- Text overlays with frequency
- End with Casera app demo
- End with honeyDue app demo
Audio: Trending sound
```
@@ -303,7 +303,7 @@ Audio: Satisfying/success sound
```
Weekly recurring content:
- One maintenance tip per week
- Swipe up to add task to Casera
- Swipe up to add task to honeyDue
- Build habit + community
```
@@ -314,7 +314,7 @@ Weekly recurring content:
### Launch Announcement
```
I'm excited to share something I've been working on: Casera.
I'm excited to share something I've been working on: honeyDue.
It started with a simple frustration. As a homeowner, I was juggling:
• Sticky notes for maintenance reminders
@@ -324,7 +324,7 @@ It started with a simple frustration. As a homeowner, I was juggling:
There had to be a better way.
Casera is that better way.
honeyDue is that better way.
It's a home maintenance app that brings everything together:
→ Recurring task reminders (that actually recur)
@@ -361,7 +361,7 @@ It's not about automation. It's about organization.
The homes that last aren't the most automated. They're the most maintained.
That's why we built Casera — not another smart device, but a smart system for the maintenance that actually matters.
That's why we built honeyDue — not another smart device, but a smart system for the maintenance that actually matters.
Sometimes the most valuable technology is the simplest.
@@ -371,7 +371,7 @@ Sometimes the most valuable technology is the simplest.
### Feature Announcement Template
```
New in Casera: [FEATURE NAME]
New in honeyDue: [FEATURE NAME]
The problem: [One sentence describing pain point]
@@ -388,7 +388,7 @@ Update your app to try it today.
What feature should we build next?
#productupdate #casera #hometech
#productupdate #honeydue #hometech
```
---
@@ -397,7 +397,7 @@ What feature should we build next?
### Primary Hashtags (use on every post)
```
#Casera #HomeMaintenance #HomeOwner #HomeManagement
#honeyDue #HomeMaintenance #HomeOwner #HomeManagement
```
### Secondary Hashtags (rotate based on content)
@@ -435,12 +435,12 @@ Winter: #WinterHome #HeatingSystem
### Positive Feedback
```
Thanks so much! 🏠 We're glad Casera is helping you stay on top of things. Let us know if there's anything we can do better!
Thanks so much! 🏠 We're glad honeyDue is helping you stay on top of things. Let us know if there's anything we can do better!
```
### Feature Request
```
Love this idea! We're adding it to our list. Thanks for helping us make Casera better! 🙏
Love this idea! We're adding it to our list. Thanks for helping us make honeyDue better! 🙏
```
### Support Issue
@@ -450,5 +450,5 @@ Sorry you're running into trouble! DM us the details and we'll get it sorted out
### Competitor Mention
```
Great question! We focus on [specific differentiator]. Happy to share more about how Casera might fit your needs — DM us anytime!
Great question! We focus on [specific differentiator]. Happy to share more about how honeyDue might fit your needs — DM us anytime!
```

View File

@@ -1,8 +1,8 @@
openapi: 3.0.3
info:
title: Casera (MyCrib) API
title: honeyDue API
description: |
REST API for the Casera property management platform.
REST API for the honeyDue property management platform.
Consumed by iOS (SwiftUI) and Android (Compose) mobile clients via Kotlin Multiplatform.
## Authentication
@@ -24,10 +24,10 @@ info:
All errors follow a consistent JSON shape. Validation errors include a `details` map.
version: 2.0.0
contact:
name: Casera Team
name: honeyDue Team
servers:
- url: https://mycrib.treytartt.com/api
- url: https://honeyDue.treytartt.com/api
description: Production
- url: http://127.0.0.1:8000/api
description: Local development (iOS simulator)
@@ -813,7 +813,7 @@ paths:
post:
tags: [Residences]
operationId: generateSharePackage
summary: Generate a share package (.casera file metadata)
summary: Generate a share package (.honeydue file metadata)
security:
- tokenAuth: []
parameters: