Commit graph

8 commits

Author SHA1 Message Date
dlawler489
42f0587cf6 Add JWT local auth with protected API routes
- User model with bcrypt password hashing
- Register, login, logout, and /me endpoints
- authenticate middleware applied to all API routes
- JWT_SECRET configurable via environment variable

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 08:11:54 +10:00
dlawler489
87e4147e8c Wire up MongoDB and implement all CRUD route handlers
- Enable MongoDB connection in server
- Add Customer and Expense models
- Implement full CRUD for products, orders, customers, expenses
- Implement analytics dashboard with revenue, sales chart, top products/customers
- Add MongoDB service to docker-compose.deploy.yml with persistent volume

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 08:08:08 +10:00
dlawler489
0ebcc26425 Add traefik.docker.network label to fix multi-network routing
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 06:45:27 +10:00
dlawler489
81ed03ec16 Add Traefik labels to nginx for etsy.plexultra.com routing
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 23:04:55 +10:00
dlawler489
1ef51b1e37 Fix nginx serving blank page by baking client into its own image
The runtime cp from etsy-tracker to a shared volume silently failed
because the nodejs user lacked write permissions on the root-owned volume.
Now a dedicated nginx-frontend Docker stage is built and pushed to GHCR
with the React client baked in, eliminating the volume-sharing approach.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 21:29:07 +10:00
dlawler489
d45addad2f Fix deployment: Use local build by default and remove obsolete version
🔧 Deployment Fixes:
- Change default compose file to docker-compose.deploy-local.yml
- Remove obsolete 'version' attribute from compose files
- Ensures deployment works immediately without GitHub Container Registry

 Ready to Deploy:
- Use docker-compose.deploy-local.yml (builds locally)
- No more 'version is obsolete' warnings
- No dependency on GitHub Container Registry access

This makes deployment work out-of-the-box while GHCR image access is resolved.
2026-04-21 10:41:01 +10:00
dlawler489
9d12f321be Fix YAML syntax error in deployment compose file
🔧 Fix Docker Compose YAML Issue:
- Remove duplicate 'command' key that was causing parse error
- Keep the cleaner command with better logging
- Ensures proper YAML structure for container interfaces

 Now Ready for Deployment:
- Valid YAML syntax for Portainer/Docker Desktop
- Single command block for container startup
- Clear logging for troubleshooting

This fixes the 'mapping key command already defined' error.
2026-04-21 09:23:56 +10:00
dlawler489
5db29f7a26 Update deployment compose file for container interfaces
🔧 Container Interface Deployment Fix:
- Use nginx.deploy.conf for deployment-specific nginx config
- Add command to copy client files to shared volume
- Improve startup logging and error handling
- Ensure client files are available to nginx container

 Deployment Ready:
- Works with Portainer, Docker Desktop, and similar interfaces
- Copies React build files from API container to nginx volume
- Proper container startup sequence and health checks
- Clear logging for troubleshooting startup issues

This fixes the missing client files issue when deploying from container management interfaces.
2026-04-21 09:20:38 +10:00