Commit graph

84 commits

Author SHA1 Message Date
94fe847c22 Update README with comprehensive project documentation 2025-12-18 09:55:19 -07:00
0187c2d822 Fix subscribers page - use items() instead of through() for pagination 2025-12-18 09:46:06 -07:00
9ad058339a Add mobile detection - open PDFs in new tab on screens < 768px 2025-12-18 08:56:36 -07:00
7d792fe635 Simplify PDF viewer to match v1.0 - remove wrapper div for mobile scrolling 2025-12-18 08:48:53 -07:00
0273caca03 Fix mobile PDF viewer scrolling - wrap iframe in scrollable container 2025-12-18 08:36:42 -07:00
73b0e7ae9e Fix mobile/tablet PDF viewer - enable viewing in all orientations with scrolling 2025-12-18 08:32:59 -07:00
7b409eba81 Match v1 background colors exactly (#6E6362 and rgba(57,64,83,0.95)) 2025-12-17 22:06:47 -07:00
d2d60f6e8b Add TrustProxies middleware to fix HTTPS detection behind Caddy 2025-12-17 22:00:12 -07:00
7258b35dda Fix AdminSeeder to use correct bcrypt hash format 2025-12-17 21:53:00 -07:00
047f81b73f Add ASSET_URL to fix mixed content issues 2025-12-17 21:50:13 -07:00
1b63d00560 Remove password mutator that was causing double-hashing 2025-12-17 21:38:46 -07:00
539df42dc5 Remove test route, set APP_DEBUG=false, fix storage volume mount to preserve permissions 2025-12-17 21:27:48 -07:00
a3c1ffd3b3 Add simple test route to debug 500 errors 2025-12-17 21:21:50 -07:00
f2183392e2 Change APP_ENV back to production (keep DEBUG=true) 2025-12-17 21:19:59 -07:00
ed43ef5622 Enable debug mode: Change APP_ENV to local for better error visibility 2025-12-17 21:14:16 -07:00
d36aa2a47d Change SESSION_DOMAIN to null for IP-based access 2025-12-17 21:07:59 -07:00
d104bf5471 Fix AdminSeeder to insert password hash directly without model mutator 2025-12-17 21:02:56 -07:00
f203bb03eb Fix DatabaseSeeder to call specific seeders instead of using factories 2025-12-17 20:55:57 -07:00
5d9997d3a6 Update AdminSeeder to use Eliza's credentials from v1.0 2025-12-17 20:52:04 -07:00
9772e4cb83 Fix .dockerignore to include .env file in Docker build 2025-12-17 20:45:39 -07:00
9492a3b08f Add .env file to repository for deployment 2025-12-17 20:38:07 -07:00
d7517442d6 Fix PHP-FPM command in supervisord
- Change php-fpm8.3 to php-fpm (Alpine uses generic command)
- Fixes 502 Bad Gateway error
2025-12-17 20:16:31 -07:00
55a5165d20 Fix V1DataMigrationSeeder for PostgreSQL
- Remove PRAGMA statements (SQLite-specific)
- PostgreSQL handles foreign keys automatically
2025-12-17 20:04:47 -07:00
1b8679965e Fix Dockerfile: Create supervisor log directory
- Add mkdir -p /var/log/supervisor before starting supervisor
- Fixes container restart loop
2025-12-17 19:55:52 -07:00
790fe8a48a Fix TypeScript errors in Home.vue
- Add type assertions for event.target in mouseover/mouseout handlers
- Fixes vue-tsc compilation errors during Docker build
2025-12-17 19:50:28 -07:00
7583712730 Fix Dockerfile: Use npm install instead of npm ci
- package-lock.json not in repo (.gitignore)
- npm ci requires existing lock file
- npm install will generate it during build
2025-12-17 19:45:08 -07:00
90550d34b7 Fix Dockerfile: Remove composer.lock dependency
- composer.lock is in .gitignore
- Let composer generate it during build
- Allows Docker build to succeed without local dependencies
2025-12-17 19:41:50 -07:00
b7125cf2b7 Phase 4: Production deployment configuration
- 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
2025-12-17 19:12:32 -07:00
844dcf3b73 Phase 2 partial: Admin authentication foundation
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
2025-12-17 15:58:32 -07:00
06a620406c Phase 1: Email subscription and document download features
- 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
2025-12-17 15:51:47 -07:00
80657cc209 v2.0: Laravel + Inertia + Vue foundation complete
- Replaced Next.js + Express + React stack with Laravel + Inertia + Vue
- Created database migrations for docket_entries, documents, subscriptions, admin_users
- Built Eloquent models with relationships (DocketEntry, Document, Subscription, AdminUser)
- Implemented HomeController with Inertia.js integration
- Created Vue home page component matching v1.0 design exactly
- Installed Laravel Breeze for authentication scaffolding
- Configured Vite 7 for Vue 3 + TypeScript compilation
- Updated .gitignore for Laravel project structure
- Tested locally - website rendering correctly with empty database
- All v1.0 Next.js/Express files removed, replaced with Laravel structure

Technology Stack:
- Backend: Laravel 12.43.1, PHP 8.3.28, Eloquent ORM
- Frontend: Vue 3, TypeScript, Inertia.js, Tailwind CSS 3.x
- Build: Vite 7.x, Composer 2.9.2
- Database: SQLite (dev), PostgreSQL (production)

Next steps: Email subscription API, document downloads, admin dashboard
2025-12-17 15:44:26 -07:00
4e7c4252f8 Final v1.0 commit before v2.0 Laravel migration 2025-12-17 15:06:43 -07:00
7fa831bff7 Update memory bank: Production server migration to 10.4.0.205 complete
- 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
2025-12-14 18:37:51 -07:00
2194f55d68 Fix Express 5 404 handler: Use middleware pattern instead of route
Express 5 doesn't support wildcard routes with app.all('*').
Changed to standard middleware pattern: app.use((req, res) => {...})
2025-12-14 16:46:13 -07:00
f3c808952d Fix Express 5 breaking change: Replace app.use('*') with app.all('*')
Express 5 no longer supports wildcard '*' in app.use() for 404 handlers.
Changed to app.all('*') which is the correct Express 5 pattern.
2025-12-14 16:44:49 -07:00
6c9faf7df0 Upgrade packages: React 19, Next.js 16, Prisma 7, Express 5
- Frontend: React 18→19, Next.js 15→16, major package updates
- Backend: Prisma 5→7 with adapter pattern, Express 4→5
- Added Prisma 7 config (prisma.config.ts) and PostgreSQL adapter
- Updated Next.js config for Turbopack compatibility
- All builds passing successfully
2025-12-14 16:40:28 -07:00
1d37b1fdae Fix Docker Compose to use cached images instead of rebuilding
- 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
2025-12-06 10:18:50 -06:00
ba654296e9 Fix API proxy path - maintain /api/ prefix for backend calls 2025-11-14 10:40:46 -06:00
a2595246cc Implement dedicated backend subdomain files.mad-lawsuit.org
- 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
2025-11-14 10:34:30 -06:00
13d219db03 Expose backend on port 809 for direct Caddy routing to fix PDF download 2025-11-10 00:12:39 -06:00
eb7983f0ba Fix: Use specific container name to avoid DNS conflict with other backend containers 2025-11-07 16:44:07 -06:00
4abdf9c367 Fix PDF download: Handle binary file responses in API proxy 2025-10-28 08:16:14 -06:00
d5037b35a9 Fix TypeScript error: params must be Promise in Next.js 15 2025-10-28 08:08:57 -06:00
cecfcfb620 Add Next.js API route proxy to handle client-side API requests to backend 2025-10-28 08:01:22 -06:00
6df5bd193a Fix CORS configuration: Add frontend:806 to allowed origins and set FRONTEND_URL 2025-10-28 07:55:30 -06:00
a3104df159 Update memory bank now. 2025-10-01 21:37:41 -06:00
dfbbe32efb Clean out install files. 2025-10-01 21:29:37 -06:00
f962327ae3 Update pnpm-lock.yaml after moving prisma to production dependencies 2025-10-01 21:18:40 -06:00
b59ae90c2d Fix Prisma dependencies: Move prisma CLI to production deps and regenerate after prune 2025-10-01 21:18:07 -06:00
cf071cc478 Fix Prisma prune: Use --config.ignore-scripts=false to preserve Prisma client 2025-10-01 21:15:16 -06:00