Commit graph

21 commits

Author SHA1 Message Date
fullsizemalt
4894679357 Fix PDF and branding routes to use /api prefix
- Add /api prefix to PDF and branding route registration in server.ts
- Remove /api prefix from individual route definitions
- Fixes routing issue where PDF endpoints were not accessible through nginx

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-08 19:13:35 -08:00
fullsizemalt
4bdbfc82ca Add tinypdf-plus integration with PDF generation and branding
Backend changes:
- Add tinypdf-plus dependency for TTF/OTF font support
- Create PDF service with text, certificate, and label generation
- Add PDF API endpoints (/api/pdf/*)
- Add branding service for custom fonts and styling
- Add branding API endpoints (/api/branding/*)
- Add font registration endpoint for custom fonts

Frontend changes:
- Add PDF library with download utilities
- Add PDFDownloadButton component for reusable PDF downloads
- Add branding API client for managing branding configs
- Update ReportsPage with PDF generation tab

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-08 12:07:35 -08:00
fullsizemalt
7386b5c6c5 fix(backend): Remove duplicate OPTIONS handler to resolve Startup Crash 2026-01-08 01:52:52 -08:00
fullsizemalt
f97e8ea1d0 fix(backend): Add manual OPTIONS handler for legacy clients
Some checks are pending
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
2026-01-06 23:53:32 -08:00
fullsizemalt
ed7b78be32 fix(backend): Enable permissive CORS to resolve WebView issues
Some checks are pending
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
2026-01-06 23:45:44 -08:00
fullsizemalt
c74f37783f fix(backend): Add localhost origins for Capacitor CORS
Some checks are pending
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
2026-01-06 23:14:35 -08:00
fullsizemalt
0723c93908 feat(backend): Add CORS support for Capacitor app
Some checks are pending
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
2026-01-06 23:08:15 -08:00
fullsizemalt
57c70b91db feat(android): Add Capacitor for Android APK build
Some checks are pending
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
- Add Capacitor core, CLI, and Android platform
- Install plugins: camera, push-notifications, splash-screen, status-bar
- Configure capacitor.config.ts with app ID run.runfoo.veridian
- Update vite.config.ts with base: './' for Capacitor compatibility
- Update api.ts and SessionTimeoutWarning.tsx to detect Capacitor and use production API URL
- Generate Android project structure with Gradle build files
2026-01-06 21:56:28 -08:00
fullsizemalt
5c86b98628 feat: Pulse sensor integration with real-time WebSocket alerts
Some checks are pending
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
2026-01-05 20:09:39 -08:00
fullsizemalt
b520ffc578 fix: remove duplicate accessZoneRoutes registration
Some checks are pending
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
2026-01-01 23:27:18 -08:00
fullsizemalt
133bf9ea3a feat(layout): lifecycle actions (harvest/destroy) + neutral styling
Some checks are pending
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
2026-01-01 22:40:02 -08:00
fullsizemalt
f91fbc2237 feat: add Reseed Demo Plants button to DevTools (realistic plant layout)
Some checks are pending
Deploy to Production / deploy (push) Waiting to run
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
2025-12-18 12:00:22 -08:00
fullsizemalt
558e0ac1e2 feat: Full Spec Kit compliance implementation
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
Photo Management (per specs/photo-management.md):
- Sharp integration for 3-size compression (thumb/medium/full)
- WebP output with 80-90% quality
- Client-side compression with browser-image-compression
- PhotoUpload component with camera/drag-drop support
- Upload API with bulk support and stats endpoint

Testing:
- Backend: Jest tests for all major API endpoints
- Frontend: Vitest tests for utilities and API clients
- CI: Updated Forgejo workflow for test execution

Specs (100% coverage):
- visitor-management.md (Phase 8)
- messaging.md (Phase 9)
- audit-and-documents.md (Phase 10)
- accessibility-i18n.md (Phase 11)
- hardware-integration.md (Phase 12)
- advanced-features.md (Phase 13)

Documentation:
- OpenAPI 3.0 spec (docs/openapi.yaml)
- All endpoints documented with schemas
2025-12-11 09:53:32 -08:00
fullsizemalt
32fd739ccf feat: Complete Phases 8-13 implementation
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
Phase 8: Visitor Management
- Visitor/VisitorLog/AccessZone models
- Check-in/out with badge generation
- Zone occupancy tracking
- Kiosk and management pages

Phase 9: Messaging & Communication
- Announcements with priority levels
- Acknowledgement tracking
- Shift notes for team handoffs
- AnnouncementBanner component

Phase 10: Compliance & Audit Trail
- Immutable AuditLog model
- Document versioning and approval workflow
- Acknowledgement tracking for SOPs
- CSV export for audit logs

Phase 11: Accessibility & i18n
- WCAG 2.1 AA compliance utilities
- react-i18next with EN/ES translations
- User preferences context (theme, font size, etc)
- High contrast and reduced motion support

Phase 12: Hardware Integration
- QR code generation for batches/plants/visitors
- Printable label system
- Visitor badge printing

Phase 13: Advanced Features
- Environmental monitoring (sensors, readings, alerts)
- Financial tracking (transactions, P&L reports)
- AI/ML insights (yield predictions, anomaly detection)
2025-12-11 00:26:25 -08:00
fullsizemalt
e240ec7911 feat(phase2): Implement Phase 2 - Plant Touch Points & IPM
Added PlantTouchPoint and IPMSchedule models. Implemented touch-points and IPM controllers/routes. Updated frontend with Dashboard feed and IPM widgets.
2025-12-09 21:22:47 -08:00
fullsizemalt
22574359ba feat: Shopping List Backend API Complete
📦 Supply Items Backend (Phase 3A)

 Controller (supplies.controller.ts):
- getSupplyItems() - List all items
- getShoppingList() - Items below threshold
- getSupplyItem() - Single item detail
- createSupplyItem() - Add new item
- updateSupplyItem() - Edit item
- deleteSupplyItem() - Remove item
- markAsOrdered() - Track last ordered date
- adjustQuantity() - Add/subtract stock

 Routes (supplies.routes.ts):
- GET /api/supplies
- GET /api/supplies/shopping-list
- GET /api/supplies/:id
- POST /api/supplies
- PATCH /api/supplies/:id
- DELETE /api/supplies/:id
- POST /api/supplies/:id/order
- POST /api/supplies/:id/adjust

 Server Integration:
- Registered supplies routes

Next: Frontend UI + Migration
2025-12-09 15:11:41 -08:00
fullsizemalt
e538227458 feat: Daily Walkthrough Backend API Complete
 Backend API Implementation (Phase 1.5)

📁 Files Created:
- backend/src/controllers/walkthrough.controller.ts
- backend/src/routes/walkthrough.routes.ts

🔌 API Endpoints:
- POST   /api/walkthroughs - Start new walkthrough
- GET    /api/walkthroughs - List walkthroughs (with filters)
- GET    /api/walkthroughs/:id - Get walkthrough detail
- POST   /api/walkthroughs/:id/complete - Mark complete
- POST   /api/walkthroughs/:id/reservoir-checks - Add reservoir check
- POST   /api/walkthroughs/:id/irrigation-checks - Add irrigation check
- POST   /api/walkthroughs/:id/plant-health-checks - Add plant health check

 Features:
- Full CRUD for walkthroughs
- Nested check creation
- User authentication required
- Query filters (status, date range, user)
- Includes related data (user, all checks)
- Error handling
- TypeScript types

🔐 Security:
- Requires authentication (userId from JWT)
- User attribution on creation
- Proper error responses

📊 Response Format:
- Includes user details (name, email, role)
- Includes all checks (reservoir, irrigation, plant health)
- Ordered by date (desc)

⏭️ Next: Frontend UI (4-5 hours)

Build:  Successful
2025-12-09 14:10:14 -08:00
fullsizemalt
5890732667 fix: Align health check path with Nginx proxy 2025-12-09 11:56:04 -08:00
fullsizemalt
d06bf0defa fix: Switch to @fastify/jwt for proper types
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
2025-12-09 10:57:54 -08:00
fullsizemalt
6b724386ba feat: Phase 1 Complete (Backend + Frontend)
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
2025-12-09 09:24:00 -08:00
fullsizemalt
9c5ffec28d fix: Add missing project files for backend/frontend build
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
2025-12-09 00:23:28 -08:00