15```
16โโโ backend/
17โ โโโ database/
18โ โ โโโ migrations.ts # Database schema setup
19โ โ โโโ queries.ts # Database query functions
20โ โโโ routes/
21โ โ โโโ votes.ts # Voting API endpoints
37- **Backend**: Hono (TypeScript API framework)
38- **Frontend**: React with TypeScript
39- **Database**: SQLite
40- **Styling**: TailwindCSS
41- **Real-time**: Server-Sent Events (SSE)
1import type { EmailTemplate, NotificationType } from "../../shared/types.ts";
2import { getTemplateByName, createTemplate } from "../database/queries.ts";
3import { EmailService } from "./emailService.ts";
4
1import { Hono } from "https://esm.sh/hono@3.11.7";
2import { runMigrations } from "./database/migrations.ts";
3import { TemplateService } from "./services/templateService.ts";
4
17});
18
19// Initialize database and default templates on startup
20let initialized = false;
21async function initialize() {
23 console.log('Initializing email notification app...');
24
25 // Run database migrations
26 await runMigrations();
27
1import { Hono } from "https://esm.sh/hono@3.11.7";
2import type { ApiResponse, FormSubmission, NotificationRequest } from "../../shared/types.ts";
3import { getTemplateByName, createRecipient } from "../database/queries.ts";
4import { EmailService } from "../services/emailService.ts";
5import { RecipientService } from "../services/recipientService.ts";
1import { Hono } from "https://esm.sh/hono@3.11.7";
2import type { ApiResponse, WebhookPayload, NotificationRequest } from "../../shared/types.ts";
3import { getTemplateByName } from "../database/queries.ts";
4import { EmailService } from "../services/emailService.ts";
5import { RecipientService } from "../services/recipientService.ts";
3import {
4 getTemplateByName
5} from "../database/queries.ts";
6import {
7 getNotificationHistory,
8 getNotificationStats
9} from "../database/queries.ts";
10import { EmailService } from "../services/emailService.ts";
11import { RecipientService } from "../services/recipientService.ts";
1import { Hono } from "https://esm.sh/hono@3.11.7";
2import { readFile } from "https://esm.town/v/std/utils@85-main/index.ts";
3import { runMigrations } from "./database/migrations.ts";
4import auth from "./routes/auth.ts";
5import plants from "./routes/plants.ts";
14});
15
16// Initialize database on startup
17await runMigrations();
18
7 updateTemplate,
8 deleteTemplate
9} from "../database/queries.ts";
10import { TemplateService } from "../services/templateService.ts";
11
9 deleteSession,
10 updateUser
11} from "../database/queries.ts";
12
13const auth = new Hono();
7 updateRecipient,
8 deleteRecipient
9} from "../database/queries.ts";
10import { RecipientService } from "../services/recipientService.ts";
11