Commit Graph

111 Commits

Author SHA1 Message Date
Connor Johnstone
b7b351416d Fix all compile warnings in frontend and backend
Removed unused imports, fields, methods, and structs that were generating warnings during compilation.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-28 16:33:07 -04:00
Connor Johnstone
42091492d5 Make backend API URL configurable via environment variables
Updated frontend to use BACKEND_API_URL environment variable at compile time with fallback to localhost. Added configuration to Trunk.toml and .env.example for development.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-28 16:26:48 -04:00
Connor Johnstone
25bf194d19 Implement complete full-stack authentication system
- Restructure project with separate frontend/backend architecture
- Create dedicated backend with Axum, SQLite, JWT authentication
- Implement real API endpoints for register/login/verify
- Update frontend to use HTTP requests instead of mock auth
- Add bcrypt password hashing and secure token generation
- Separate Cargo.toml files for frontend and backend builds
- Fix Trunk compilation by isolating WASM-incompatible dependencies
- Create demo user in database for easy testing
- Both servers running: frontend (8081), backend (3000)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-28 16:15:37 -04:00
Connor Johnstone
08c333dcba Update dependencies and UI for WASM compatibility
- Simplify Cargo.toml dependencies for frontend-only build
- Add comprehensive CSS styling with responsive design
- Update app routing and main module structure
- Fix WASM getrandom compatibility with js feature

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-28 15:56:41 -04:00
Connor Johnstone
181e0c58c1 Implement frontend authentication system with login/registration
- Add comprehensive authentication module with mock service
- Create login and registration components with form validation
- Implement protected routing with yew-router
- Add responsive UI styling with gradient design
- Enable JWT token persistence via localStorage
- Support demo credentials (demo/password) and flexible auth for development

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-28 15:56:18 -04:00
Connor Johnstone
ad176dd423 Implement comprehensive CalDAV calendar event parsing
Features:
- Complete CalendarEvent struct with all iCal properties
- EventStatus and EventClass enums for proper typing
- CalDAVClient for server communication with:
  - fetch_events() method using CalDAV REPORT queries
  - discover_calendars() with intelligent path discovery
  - Full iCal parsing using ical crate
  - DateTime parsing with multiple format support
  - XML response parsing with regex

Integration tests:
- Real server event fetching with calendar discovery
- iCal parsing validation with sample data
- DateTime parsing tests (UTC, local, date-only)
- Successful connection to configured calendar path

Dependencies added:
- regex crate for XML parsing
- Enhanced calendar module structure

Test results: ✓ All 7 tests pass
- Successfully connects to /calendars/test/ path
- Fetches 0 events (empty calendar, connection confirmed)
- No more 404 errors with improved discovery logic

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-28 15:30:47 -04:00
Connor Johnstone
786f078e45 Enable CalDAV integration tests by default
- Remove #[ignore] attributes from CalDAV tests
- Update documentation to reflect tests run with `cargo test`
- Tests now validate CalDAV connectivity on every test run
- Ensures continuous integration of server authentication
- All 3 tests pass: unit test + 2 integration tests

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-28 15:20:24 -04:00
Connor Johnstone
103c380098 Add CalDAV integration tests with Baikal server
- Updated base64 usage to new API (BASE64_STANDARD.encode)
- Added tokio dev dependency for async testing
- Created comprehensive integration tests:
  - test_baikal_auth: Tests authentication with OPTIONS request
  - test_propfind_calendars: Tests calendar discovery with PROPFIND
- Tests validate:
  - HTTP Basic Auth with .env credentials
  - DAV server capabilities detection
  - CalDAV PROPFIND XML responses
  - 207 Multi-Status handling
- Both tests pass successfully against Baikal server
- Tests marked as #[ignore] for CI/network isolation

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-28 15:18:43 -04:00
Connor Johnstone
01411f76c4 Add CalDAV dependencies and secure configuration
- Added comprehensive CalDAV/calendar dependencies:
  - reqwest for HTTP requests
  - ical for calendar parsing
  - chrono for date/time handling
  - serde for serialization
  - anyhow/thiserror for error handling
  - uuid for event generation
- Implemented secure config management:
  - dotenvy for environment variable loading
  - base64 for Basic Auth encoding
  - .env.example template for development
  - .gitignore updated to exclude secret files
- Created config.rs module with extensive documentation:
  - CalDAVConfig struct for server credentials
  - Environment-based configuration loading
  - HTTP Basic Auth helper methods
  - Comprehensive error handling
  - Full rustdoc documentation with examples

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-28 15:13:36 -04:00
Connor Johnstone
0f4b505acd Add Docker support with Alpine Linux
- Multi-stage Dockerfile with rust:alpine and nginx:alpine
- Optimized for small container size (~20MB)
- Includes SPA routing support and gzip compression
- Health check for container monitoring
- .dockerignore to optimize build context

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-28 14:53:25 -04:00
Connor Johnstone
a507ab07be Initial commit: Basic Yew frontend template
- Set up Cargo.toml with Yew dependencies
- Created main.rs entry point
- Added basic App component with counter functionality
- Included HTML template with styling
- Added Trunk.toml for build configuration
- Added .gitignore to exclude build artifacts

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-28 14:36:34 -04:00