cleanup-and-test #1

Merged
Joyce merged 7 commits from cleanup-and-test into main 2026-01-23 20:44:14 +00:00
Owner

This PR adds meeting scheduling functionality with email and Zulip notifications, plus production deployment configuration.

New Features

  • Meeting Scheduling Endpoint (POST /api/schedule) - Schedule meetings with participants
  • Email Invites - Sends ICS calendar invites via SMTP to all participants
  • Zulip Notifications - Posts to Zulip stream with @mentions for users matched by email
  • Background Calendar Sync - APScheduler job syncs ICS calendars every 15 minutes
  • 2-Hour Lead Time Validation - Prevents scheduling meetings too soon
    Improvements
  • ICS URL now optional - Participants can be added without a calendar link
  • Zulip time formatting - Uses time:ISO for timezone-aware display
  • Heatmap shows past/soon slots - Grays out slots that can't be scheduled

Production Deployment

  • docker-compose.prod.yml - Production-ready compose with env vars
  • frontend/Dockerfile.prod - Nginx serving built static assets
  • Removed hardcoded credentials, uses environment variables
This PR adds meeting scheduling functionality with email and Zulip notifications, plus production deployment configuration. New Features - Meeting Scheduling Endpoint (POST /api/schedule) - Schedule meetings with participants - Email Invites - Sends ICS calendar invites via SMTP to all participants - Zulip Notifications - Posts to Zulip stream with @mentions for users matched by email - Background Calendar Sync - APScheduler job syncs ICS calendars every 15 minutes - 2-Hour Lead Time Validation - Prevents scheduling meetings too soon Improvements - ICS URL now optional - Participants can be added without a calendar link - Zulip time formatting - Uses <time:ISO> for timezone-aware display - Heatmap shows past/soon slots - Grays out slots that can't be scheduled Production Deployment - docker-compose.prod.yml - Production-ready compose with env vars - frontend/Dockerfile.prod - Nginx serving built static assets - Removed hardcoded credentials, uses environment variables
Joyce added 3 commits 2026-01-21 20:01:47 +00:00
- Add email service for sending meeting invites with ICS attachments
- Add scheduler for background calendar sync jobs
- Add Zulip service for meeting notifications
- Make ics_url optional for participants
- Add /api/schedule endpoint with 2-hour lead time validation
- Update frontend to support scheduling flow

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add docker-compose.prod.yml with env var support
- Add frontend/Dockerfile.prod with nginx for static serving
- Fix Zulip notification to run in thread pool (avoid blocking)
- Use Zulip time format for timezone-aware display
- Add Zulip @mentions for users matched by email

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Switch frontend from nginx to caddy for consistency with Coolify
- Make VITE_API_URL optional, auto-derive from window.location.origin/api
- Simplifies deployment by not requiring build-time API URL

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Joyce added 2 commits 2026-01-21 20:25:20 +00:00
- Switch frontend from nginx to caddy for consistency with Coolify
- Make VITE_API_URL optional, auto-derive from window.location.origin/api
- Remove hardcoded port mappings, let Coolify/Traefik handle routing
- Simplifies deployment configuration

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- docker-compose.yml → production (Coolify default)
- docker-compose.dev.yml → local development

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Joyce added 1 commit 2026-01-21 21:36:47 +00:00
Joyce added 1 commit 2026-01-21 22:25:02 +00:00
Joyce merged commit daa0afaa25 into main 2026-01-23 20:44:14 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: monadical/common-availability#1