📋 What Was Accomplished Backend Changes: - ✅ Enhanced API Endpoint: Updated GET /api/v1/events to accept optional date query parameter - ✅ Input Validation: Added YYYY-MM-DD format validation to PaginationQueryDto - ✅ Database Filtering: Implemented timezone-aware date filtering in EventsService - ✅ Controller Integration: Updated EventsController to pass date parameter to service Frontend Changes: - ✅ Date Picker Component: Created reusable DatePicker component following project design system - ✅ Gallery UI Enhancement: Integrated date picker into gallery page with clear labeling - ✅ State Management: Implemented reactive date state with automatic re-fetching - ✅ Clear Filter Functionality: Added "Clear Filter" button for easy reset - ✅ Enhanced UX: Improved empty states for filtered vs unfiltered views 🔍 Technical Implementation API Design: GET /api/v1/events?date=2025-08-02&limit=20&cursor=xxx Key Files Modified: - meteor-web-backend/src/events/dto/pagination-query.dto.ts - meteor-web-backend/src/events/events.service.ts - meteor-web-backend/src/events/events.controller.ts - meteor-frontend/src/components/ui/date-picker.tsx (new) - meteor-frontend/src/app/gallery/page.tsx - meteor-frontend/src/hooks/use-events.ts - meteor-frontend/src/services/events.ts ✅ All Acceptance Criteria Met 1. ✅ Backend API Enhancement: Accepts optional date parameter 2. ✅ Date Filtering Logic: Returns events for specific calendar date 3. ✅ Date Picker UI: Clean, accessible interface component 4. ✅ Automatic Re-fetching: Immediate data updates on date selection 5. ✅ Filtered Display: Correctly shows only events for selected date 6. ✅ Clear Filter: One-click reset to view all events 🧪 Quality Assurance - ✅ Backend Build: Successful compilation with no errors - ✅ Frontend Build: Successful Next.js build with no warnings - ✅ Linting: All ESLint checks pass - ✅ Functionality: Feature working as specified 🎉 Epic 2 Complete! With Story 2.9 completion, Epic 2: Commercialization & Core User Experience is now DONE! Epic 2 Achievements: - 🔐 Full-stack device status monitoring - 💳 Robust payment and subscription system - 🛡️ Subscription-based access control - 📊 Enhanced data browsing with detail pages - 📅 Date-based event filtering
24 lines
1.3 KiB
TOML
24 lines
1.3 KiB
TOML
# Meteor Edge Client Application Configuration
|
|
# This file contains configuration for various application modules
|
|
|
|
[camera]
|
|
source = "device" # "device" for camera, or file path for video file
|
|
device_id = 0 # Camera device ID (0 for default)
|
|
fps = 30.0 # Target frames per second
|
|
width = 640 # Frame width in pixels
|
|
height = 480 # Frame height in pixels
|
|
|
|
[storage]
|
|
frame_buffer_size = 200 # Number of frames to keep in circular buffer
|
|
storage_path = "./meteor_events" # Base directory for storing meteor events
|
|
retention_days = 30 # Days to keep event archives before deletion
|
|
video_quality = "medium" # Video quality: "low", "medium", "high"
|
|
cleanup_interval_hours = 24 # Hours between cleanup operations
|
|
|
|
[communication]
|
|
api_base_url = "http://localhost:3000" # Backend API base URL
|
|
retry_attempts = 3 # Number of upload retry attempts
|
|
retry_delay_seconds = 2 # Initial delay between retries in seconds
|
|
max_retry_delay_seconds = 60 # Maximum delay between retries in seconds
|
|
request_timeout_seconds = 300 # Request timeout for uploads in seconds (5 minutes)
|
|
heartbeat_interval_seconds = 300 # Heartbeat interval in seconds (5 minutes) |