659ab9b71a
feat: implement security report generation backend (task 21)
...
- Add report-schedules DB schema table
- Create reports tRPC router with getReports, generateReport, getReport,
deleteReport, getScheduledReports, updateSchedule procedures
- Create reports service with async report generation lifecycle
- Create report generator (compileData, renderHTML, generatePDF, uploadPDF)
- Add HTML templates for monthly-plus, annual-premium, weekly-digest
- Add Valibot schemas for input validation
- Wire router into root.ts and update DB schema exports/relations
- Install puppeteer for HTML-to-PDF conversion
- Write unit tests for router (11 tests) and service (12 tests)
2026-05-25 17:08:43 -04:00
5154990acd
feat(notifications): implement notification router with email, push, SMS support
...
- Add notification router (sendEmail, sendPush, sendSMS, device mgmt, prefs)
- Create provider clients: Resend, Firebase Admin (FCM), Twilio
- Add notification_preferences table to Drizzle schema
- Create branded email templates (welcome, alert, password reset, family invite, billing)
- Implement notification service with error handling and E.164 validation
- Wire router into app root
- Write unit tests with mocked providers (25 tests passing)
- Add resend, firebase-admin, twilio dependencies
2026-05-25 16:13:02 -04:00
28c33a930d
feat: implement user & family group management tRPC router
...
- Add user router with me/update/delete procedures (protected)
- Add family router with listMembers/invite/remove/updateRole procedures
- Create user service layer (getUserById, updateUser, deleteUser)
- Create family service layer (getFamilyGroup, inviteMember, removeMember, updateMemberRole, transferOwnership)
- Add Valibot input schemas for all procedures
- Add invitations table with status tracking and expiration
- Add deletedAt column to users table (soft-delete)
- Wire user router into app root router
- Write unit tests for service functions and tRPC procedures
- Update schema tests for new table/columns
2026-05-25 15:57:33 -04:00
bc20aeaeb6
feat: migrate full Prisma schema to Drizzle ORM (29 tables, 28 enums, 25 relations)
...
- Install drizzle-orm, drizzle-kit, pg, @types/pg in web/
- Create split schema directory with domain files:
- auth (users, accounts, sessions, deviceTokens)
- subscription (familyGroups, familyGroupMembers, subscriptions)
- darkwatch (watchlistItems, exposures)
- alerts
- voiceprint (voiceEnrollments, voiceAnalyses, analysisJobs, analysisResults)
- spamshield (spamFeedback, spamRules)
- audit (auditLogs, kpiSnapshots)
- correlation (normalizedAlerts, correlationGroups)
- reports (securityReports)
- marketing (waitlistEntries, blogPosts)
- hometitle (propertyWatchlistItems, propertySnapshots, propertyChanges)
- removebrokers (infoBrokers, removalRequests, brokerListings)
- Define all 28 PostgreSQL enums via pgEnum()
- Define all indexes, unique constraints, and foreign keys
- Define all 25 relation definitions via relations() helper
- Update drizzle.config.ts for PostgreSQL dialect
- Update db/index.ts for node-postgres connection
- Replace old placeholder schema.ts with barrel re-export
- Add 38 comprehensive schema tests
2026-05-25 15:35:10 -04:00