feat: add email, scheduler, and Zulip integration services

- 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>
This commit is contained in:
Joyce
2026-01-21 13:52:02 -05:00
parent d585cf8613
commit 26311c867a
17 changed files with 403 additions and 59 deletions

View File

@@ -25,16 +25,16 @@ export const ParticipantManager = ({
const handleSubmit = (e: React.FormEvent) => {
e.preventDefault();
if (!name.trim() || !email.trim() || !icsLink.trim()) {
if (!name.trim() || !email.trim()) {
toast({
title: "Missing fields",
description: "Please fill in all fields",
description: "Please fill in name and email",
variant: "destructive",
});
return;
}
onAddParticipant({ name: name.trim(), email: email.trim(), icsLink: icsLink.trim() });
onAddParticipant({ name: name.trim(), email: email.trim(), icsLink: icsLink.trim() || '' });
setName('');
setEmail('');
setIcsLink('');
@@ -89,7 +89,7 @@ export const ParticipantManager = ({
</div>
<div className="space-y-2">
<Label htmlFor="icsLink">Calendar ICS Link</Label>
<Label htmlFor="icsLink">Calendar ICS Link (optional)</Label>
<Input
id="icsLink"
placeholder="https://calendar.google.com/..."