Connor Johnstone 78f1db7203 Refactor handlers.rs into modular structure for better maintainability
- Split 1921-line handlers.rs into focused modules:
  - handlers/auth.rs: Authentication handlers (login, verify_token, get_user_info)
  - handlers/calendar.rs: Calendar management (create_calendar, delete_calendar)
  - handlers/events.rs: Event operations (CRUD operations, fetch events)
  - handlers/series.rs: Event series operations (recurring events management)
- Main handlers.rs now serves as clean re-export module
- All tests passing (14 integration + 7 unit + 3 doc tests)
- Maintains backward compatibility with existing API routes
- Improves code organization and separation of concerns

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-30 13:35:13 -04:00

Calendar App

A full-stack calendar application built with Rust, featuring a Yew frontend and Axum backend with CalDAV integration.

Features

  • Interactive calendar interface
  • Event creation and management
  • CalDAV server integration
  • User authentication with JWT
  • iCal format support
  • Weekly recurrence patterns
  • Responsive web design

Architecture

  • Frontend: Yew (Rust WebAssembly)
  • Backend: Axum (Rust async web framework)
  • Shared Models: RFC 5545-compliant VEvent structures
  • Protocol: CalDAV for calendar synchronization
  • Database: SQLite (via migrations)
  • Build Tool: Trunk for frontend bundling

Getting Started

Prerequisites

  • Rust (latest stable version)
  • Trunk (cargo install trunk)

Development

  1. Start the backend server:

    cd backend
    cargo run
    
  2. Start the frontend development server:

    cd frontend
    trunk serve
    
  3. Open your browser to http://localhost:8080

Building for Production

cd frontend
trunk build --release

Project Structure

This is a Cargo workspace with the following structure:

  • frontend/ - Yew frontend application
    • src/ - Frontend source code
    • index.html - HTML template
    • styles.css - CSS styles
    • Trunk.toml - Trunk build configuration
  • backend/ - Axum backend server
  • calendar-models/ - Shared RFC 5545 VEvent models
  • migrations/ - Database schema migrations
Description
A self-hostable calendar front-end for caldav servers
Readme 124 MiB
Languages
Rust 76.9%
CSS 22.4%
JavaScript 0.4%
Dockerfile 0.2%
HTML 0.1%