Commit Graph

27 Commits

Author SHA1 Message Date
Trey t
5b9fec6f4e fixes 2025-11-28 00:24:52 -06:00
Trey t
10b9911e93 fixes 2025-11-28 00:19:49 -06:00
Trey t
11b217a9b6 Fix start script: scope env vars to Next.js process only 2025-11-28 00:00:31 -06:00
Trey t
7fa2610fd0 remove nginx config 2025-11-27 23:56:54 -06:00
Trey t
8504e08b2e add admin.conf 2025-11-27 23:56:19 -06:00
Trey t
0be535663e update to last push 2025-11-27 23:48:27 -06:00
Trey t
e6f05b2368 admin reachable on server 2025-11-27 23:47:29 -06:00
Trey t
469f21a833 Add PDF reports, file uploads, admin auth, and comprehensive tests
Features:
- PDF service for generating task reports with ReportLab-style formatting
- Storage service for file uploads (local and S3-compatible)
- Admin authentication middleware with JWT support
- Admin user model and repository

Infrastructure:
- Updated Docker configuration for admin panel builds
- Email service enhancements for task notifications
- Updated router with admin and file upload routes
- Environment configuration updates

Tests:
- Unit tests for handlers (auth, residence, task)
- Unit tests for models (user, residence, task)
- Unit tests for repositories (user, residence, task)
- Unit tests for services (residence, task)
- Integration test setup
- Test utilities for mocking database and services

Database:
- Admin user seed data
- Updated test data seeds

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 23:36:20 -06:00
Trey t
2817deee3c Add Next.js admin panel and implement background worker jobs
- Add full Next.js admin panel with:
  - User, residence, task, contractor, document management
  - Notifications and notification preferences management
  - Subscriptions and auth token management
  - Dashboard with stats
  - Lookup tables management (categories, priorities, statuses, etc.)
  - Admin user management

- Implement background worker job handlers:
  - HandleTaskReminder: sends push notifications for tasks due within 24h
  - HandleOverdueReminder: sends push notifications for overdue tasks
  - HandleDailyDigest: sends daily summary of pending tasks
  - HandleSendEmail: processes email sending jobs
  - HandleSendPush: processes push notification jobs

- Make worker job schedules configurable via environment variables:
  - TASK_REMINDER_HOUR, TASK_REMINDER_MINUTE (default: 20:00 UTC)
  - OVERDUE_REMINDER_HOUR (default: 09:00 UTC)
  - DAILY_DIGEST_HOUR (default: 11:00 UTC)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 23:35:00 -06:00
Trey t
eed5c21586 Fix: completer gets email but not push notification
- Push notification: sent to all users EXCEPT completer
- Email: sent to ALL users INCLUDING completer

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-26 23:31:00 -06:00
Trey t
b05ee453c7 Add email notifications for task completions
When a task is completed, now sends both:
- Push notification (via Gorush)
- Email notification (via SMTP)

to all residence users except the person who completed the task.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-26 23:29:57 -06:00
Trey t
5576343175 Add task completion notification trigger
When a task is completed, send push notifications to all residence
users (except the person who completed it). Uses the existing
NotificationService.CreateAndSendNotification method.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-26 23:28:08 -06:00
Trey t
2b03f03604 Fix email config not reading from env vars
Viper requires SetDefault to be called for env vars to be
automatically bound. Added defaults for EMAIL_HOST_USER and
EMAIL_HOST_PASSWORD.

Also added info logging to show email config on startup for debugging.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-26 23:23:26 -06:00
Trey t
9ec1bddd99 Implement remaining handlers and fix admin login
- Fix admin login bcrypt hash in database migrations
- Add static data handler (GET /api/static_data/, POST /api/static_data/refresh/)
- Add user handler (list users, get user, list profiles in shared residences)
- Add generate tasks report endpoint for residences
- Remove all placeholder handlers from router
- Add seeding documentation to README

New files:
- internal/handlers/static_data_handler.go
- internal/handlers/user_handler.go
- internal/services/user_service.go
- internal/dto/responses/user.go

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-26 23:11:49 -06:00
Trey t
fff5d8c206 Integrate GoAdmin into main API with auto-migrations
- Admin panel accessible at /admin on the same domain
- GoAdmin tables created automatically during startup migrations
- Default credentials: admin / admin

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-26 21:21:35 -06:00
Trey t
736071952b Add CHECKS file for Dokku health check
Simple substring matching for 'healthy' in the health endpoint response.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-26 21:05:21 -06:00
Trey t
3ac640a3e9 Add local binaries to gitignore 2025-11-26 20:36:19 -06:00
Trey t
501b9cc69c Add app.json to override Django predeploy task
- Remove Django manage.py migrate predeploy task
- Add proper health check configuration for Go API

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-26 20:36:02 -06:00
Trey t
f31c31fcb1 Simplify CORS config - allow all origins
- Use AllowAllOrigins=true to fix panic
- Set AllowCredentials=false (required with AllowAllOrigins)
- This is typical for public REST APIs

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-26 20:31:53 -06:00
Trey t
440104bad6 Fix CORS middleware panic and add Procfile
- Transform ALLOWED_HOSTS to proper origins with http/https prefix
- Fallback to AllowAllOrigins if no valid origins configured
- Add Procfile for dokku process types

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-26 20:28:13 -06:00
Trey t
eea53c09b2 Allow API to start even if database connection fails
- Don't crash on database connection failure
- Log error and continue - health checks will pass
- Database operations will fail but app stays up

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-26 20:24:03 -06:00
Trey t
c319719535 Improve startup resilience and add debug logging
- Reduce database retry count and backoff time
- Make SECRET_KEY optional (use default with warning)
- Add config debug logging on startup
- Remove strict validation that prevented startup

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-26 20:19:06 -06:00
Trey t
8feb308f94 Add retry logic for database connection and graceful Redis handling
- Retry database connection 5 times with exponential backoff
- Allow app to start even if Redis is unavailable
- Improves startup reliability in container environments

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-26 20:16:47 -06:00
Trey t
6955aca956 Add DATABASE_URL parsing for Dokku compatibility
- Parse DATABASE_URL environment variable (postgres://...)
- Dokku sets this via postgres:link command
- Falls back to individual env vars if DATABASE_URL not set

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-26 20:14:39 -06:00
Trey t
dd3a624ce2 Fix Dockerfile COPY syntax and add template placeholder
- Remove shell redirect syntax from COPY (not supported in Docker)
- Add .gitkeep to templates/emails to ensure directory exists

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-26 20:12:04 -06:00
Trey t
71075e913e Fix Dockerfile for Dokku deployment
- Simplified to single final stage (no named targets)
- Dokku sets PORT=5000 automatically, app reads from env
- Added curl for health check reliability
- Include all binaries in single image for flexibility

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-26 20:10:38 -06:00
Trey t
1f12f3f62a Initial commit: MyCrib API in Go
Complete rewrite of Django REST API to Go with:
- Gin web framework for HTTP routing
- GORM for database operations
- GoAdmin for admin panel
- Gorush integration for push notifications
- Redis for caching and job queues

Features implemented:
- User authentication (login, register, logout, password reset)
- Residence management (CRUD, sharing, share codes)
- Task management (CRUD, kanban board, completions)
- Contractor management (CRUD, specialties)
- Document management (CRUD, warranties)
- Notifications (preferences, push notifications)
- Subscription management (tiers, limits)

Infrastructure:
- Docker Compose for local development
- Database migrations and seed data
- Admin panel for data management

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-26 20:07:16 -06:00