Connor Johnstone 9ab6377d16 Refactor calendar component into modular architecture with view switching
- Split monolithic Calendar component into focused sub-components:
  - CalendarHeader: Navigation buttons and title display
  - MonthView: Monthly calendar grid layout and event rendering
  - WeekView: Weekly calendar view with full-height day containers
- Add ViewMode enum for Month/Week view switching in sidebar dropdown
- Fix event styling by correcting CSS class from "event" to "event-box"
- Implement proper week view layout with full-height day containers
- Maintain all existing functionality: event handling, context menus, localStorage persistence

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-29 10:14:53 -04:00
2025-08-29 08:36:23 -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)
  • 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:

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

Building for Production

trunk build --release

Project Structure

  • src/ - Frontend Yew application
  • backend/ - Axum backend server
  • migrations/ - Database schema migrations
  • dist/ - Built frontend assets
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%