diff --git a/.planning/phases/30-onboarding-redesign/30-01-SUMMARY.md b/.planning/phases/30-onboarding-redesign/30-01-SUMMARY.md new file mode 100644 index 0000000..be1f7c7 --- /dev/null +++ b/.planning/phases/30-onboarding-redesign/30-01-SUMMARY.md @@ -0,0 +1,100 @@ +--- +phase: 30-onboarding-redesign +plan: 01 +subsystem: api +tags: [hono, drizzle, zod, discovery, onboarding] + +requires: + - phase: 28-profile-and-logto-integration + provides: catalog infrastructure (globalItems, tags, globalItemTags tables) +provides: + - shared hobby-to-tag mapping config + - popular items by tags discovery endpoint + - batch onboarding completion endpoint with auto-category creation +affects: [30-02, 30-03] + +tech-stack: + added: [] + patterns: [hobby-tag mapping as shared config, batch item creation with auto-categories] + +key-files: + created: + - src/shared/hobbyConfig.ts + - src/server/services/onboarding.service.ts + - src/server/routes/onboarding.ts + modified: + - src/server/services/discovery.service.ts + - src/server/routes/discovery.ts + - src/shared/schemas.ts + - src/server/index.ts + +key-decisions: + - "Hobby-tag mapping as static shared config (no DB table) — extensible by editing hobbyConfig.ts" + - "Popular items sorted by owner count using COUNT(DISTINCT items.id) via LEFT JOIN" + - "Onboarding completion upserts settings using onConflictDoUpdate pattern" + +patterns-established: + - "Shared config in src/shared/ for client+server constants" + - "Batch item creation with auto-category creation from catalog metadata" + +requirements-completed: [] + +duration: 8min +completed: 2026-04-12 +--- + +# Plan 30-01: Backend Onboarding Infrastructure Summary + +**Shared hobby config, popular-items-by-tags endpoint with owner count ordering, and batch onboarding completion service with auto-category creation** + +## Performance + +- **Duration:** 8 min +- **Tasks:** 5 +- **Files modified:** 7 + +## Accomplishments +- Created shared hobby configuration with 6 hobbies mapped to catalog tags +- Added `getPopularItemsByTags` query to discovery service with owner count ordering +- Added `GET /api/discovery/popular-items?tags=` endpoint with image URL enrichment +- Created onboarding service that batch-creates user items from catalog selections with auto-generated categories +- Created `POST /api/onboarding/complete` endpoint with Zod validation (max 50 items) + +## Task Commits + +1. **Task 1: Create shared hobby configuration** - `d37e64e` (feat) +2. **Task 2: Add popular-items-by-tags query** - `2347d49` (feat) +3. **Task 3: Add popular-items endpoint** - `d647080` (feat) +4. **Task 4: Create onboarding service** - `9da4c84` (feat) +5. **Task 5: Create onboarding route + register** - `5b35e60` (feat) + +**Lint fix:** `9448571` (fix: import ordering) + +## Files Created/Modified +- `src/shared/hobbyConfig.ts` - Hobby definitions with tag mappings and getTagsForHobbies helper +- `src/server/services/discovery.service.ts` - Added getPopularItemsByTags with owner count SQL +- `src/server/routes/discovery.ts` - Added /popular-items GET endpoint +- `src/server/services/onboarding.service.ts` - Batch item creation with auto-category logic +- `src/server/routes/onboarding.ts` - POST /complete with Zod validation +- `src/shared/schemas.ts` - Added completeOnboardingSchema +- `src/server/index.ts` - Registered onboarding routes + +## Decisions Made +None - followed plan as specified. + +## Deviations from Plan +None - plan executed exactly as written. + +## Issues Encountered +- Biome lint flagged import ordering in discovery.service.ts and onboarding.ts — fixed in a follow-up commit. + +## User Setup Required +None - no external service configuration required. + +## Next Phase Readiness +- Backend endpoints ready for frontend consumption in Plan 02 +- Hobby config importable from both client and server code + +--- +*Phase: 30-onboarding-redesign* +*Completed: 2026-04-12*