- Add Docker configuration (Dockerfile, docker-compose.yml)
- Add Nginx and Supervisor configuration
- Add deployment documentation (DEPLOYMENT.md)
- Complete Phase 3 data migration (63 entries, 63 docs, 28 subs)
- Add responsive PDF viewer component
- Fix date format to American (MM/DD/YYYY)
- Update typography to match v1.0
- Add admin dashboard with full CRUD operations
- Configure PostgreSQL with secure password
- Connect to caddy_network for reverse proxy
- Ready for production deployment
Authentication System Complete (50% of Phase 2):
- Created Admin AuthController with login/logout
- Created AdminAuth middleware for session-based auth
- Registered middleware in bootstrap/app.php
- Configured all admin routes with protection
- Created 4 admin controller files (Dashboard, DocketEntry, Document, Subscriber)
Session-based authentication:
- Stores admin_id and admin_username in session
- Middleware checks for admin_id presence
- Separate from Laravel Breeze User auth
- Uses AdminUser model with auto-hashing passwords
Routes configured:
- Public: GET/POST /admin/login
- Protected: /admin/dashboard, /admin/docket-entries (CRUD), /admin/documents, /admin/subscribers
Remaining work (50%):
- Implement controller logic (7 methods for DocketEntry, etc.)
- Create 9 Vue admin pages (Login, Dashboard, CRUD forms)
- Create AdminSeeder for default admin user
- Configure file storage for PDF uploads
- Test all admin features
See cline_docs/phase2_progress.md for detailed next steps
- Created SubscriptionController with subscribe/unsubscribe endpoints
- Added subscription API routes (POST /api/subscribe, GET /api/unsubscribe/{token})
- Updated Vue Home component with working subscription form
- Created DocumentController with download endpoint
- Added document download route (GET /api/documents/{id}/download)
- Updated Vue component to link PDF buttons to download route
- Created DocketSeeder with 5 sample docket entries and documents
- Seeded database with test data for development
Features working:
- Email subscription with validation and duplicate checking
- Subscription reactivation for previously unsubscribed emails
- Document download functionality (ready for actual PDFs)
- Sample data for testing UI
Next: Admin dashboard for CRUD operations
- Updated activeContext.md with migration details and new deployment server
- Updated techContext.md with upgraded packages (React 19, Next.js 16, Tailwind 4, Express 5, Prisma 7)
- Added production server information (10.4.0.205) and deployment process
- Documented Caddy IP address configuration fix
- All data migrated: 158MB PDFs, 47MB database, Redis cache
- Website fully operational at https://mad-lawsuit.org
- Changed pull_policy from 'build' to 'missing' for frontend and backend
- Added explicit image names (mad-lawsuit-frontend:latest, mad-lawsuit-backend:latest)
- This prevents unnecessary rebuilds on server when restarting containers
- Images will only rebuild when explicitly requested or when missing
- Changed backend port from 809 to 901 (9xx range for backends)
- Updated docker-compose.yml to expose backend on port 901
- Created new Caddyfile with files.mad-lawsuit.org subdomain
- Simplified mad-lawsuit.org to only proxy to frontend (port 806)
- Updated frontend API proxy to use https://files.mad-lawsuit.org
- Updated backend CORS to allow both mad-lawsuit.org and files.mad-lawsuit.org
- This fixes PDF download reliability issues by providing direct backend access
- Remove automatic email sending when new docket entries are created
- Email notifications are now manual-only via green mail button
- Gives admin full control over when subscribers are notified
- Per user request to prevent unwanted automatic emails
- Remove duplicate email configuration sections
- Use correct Gmail smuggler settings (port 2525)
- Set proper SMTP credentials for system@deafgain.org
- Use system@deafgain.org as FROM_EMAIL (not docket-site)
- This should fix manual email notifications not being sent
- Add /api/notifications/send/:docketEntryId endpoint for manual email sending
- Add green 'Send notification' button (mail icon) to each docket entry in admin dashboard
- Implement BCC email functionality for manual notifications
- Add loading states and user feedback for notification sending
- Allow admins to manually trigger email notifications after uploading documents
- Recovered from git reflog commit 1e24aa18
- Added optional bcc parameter to EmailOptions interface
- Updated sendEmail method to support BCC recipients
- Modified notifySubscribersOfNewEntry to use single BCC email instead of individual emails
- Improved logging to show BCC recipient count
- More efficient email delivery for multiple subscribers
- Added comprehensive .gitignore file with .DS_Store and common ignores
- Updated backend/.env SMTP_PORT from 587 to 2525 for Gmail smuggler
- Updated Memory Bank documentation with Gmail smuggler implementation
- Removed smtp-relay-container directory (moved outside project)
- Removed unused useState import that was causing build failures
- Fixed Docker deployment issue where pnpm build was failing with exit code 1
- All TypeScript checks now pass successfully
- Added title, summary, and notes fields to FormData for upload
- Uses filename (without .pdf) as document title
- Resolves 'title is required' validation error
- Completes PDF upload functionality fix
- Added support for multiple PDF MIME types (application/x-pdf, etc.)
- Added fallback to file extension validation (.pdf)
- Added detailed logging for debugging upload issues
- Resolves 'Only PDF files are allowed' error for valid PDFs
- Frontend now connects to both app-network and caddy_network
- Resolves network isolation preventing API calls to backend
- Fixes document upload functionality by enabling frontend→backend communication
- Updated README with live website status and admin credentials
- Memory bank updated with complete resolution of admin login issues
- Documented successful deployment at https://mad-lawsuit.org
- Added current admin credentials: eliza / AXEoZWk2AMAD0naw
- Changed from process.env API_URL to /api/auth/login
- Fixes network error by using Next.js API rewrites
- Login now properly routes through frontend proxy to backend