Project Structure
Next.js Application
The main application source code is located in the src directory and follows the Next.js App Router structure.
Key Features
-
Dashboard:
Provides an admin dashboard for creating, reading, updating, and deleting organizations, projects, and schedule tasks. -
REST API:
Exposes RESTful API endpoints that allow external applications to query scheduled notifications. -
Authentication:
Built withbetter-authproviding secure user authentication and authorization. -
Database:
Uses Drizzle ORM with Cloudflare D1 (SQLite) for data persistence.
Directory Structure
src/
├── app/ # Next.js App Router pages
│ ├── (home)/ # Marketing pages (landing, about)
│ ├── api/ # API endpoints
│ ├── auth/ # Authentication pages
│ ├── dashboard/ # Dashboard pages
├── components/ # Reusable React components
│ ├── ui/ # Base UI components (shadcn/ui)
│ ├── layout/ # Layout components
│ └── landing/ # Landing page components
├── modules/ # Feature modules
│ ├── auth/ # Authentication module
│ ├── project/ # Project management
│ └── schedule-task/ # Schedule task management
├── db/ # Database configuration
│ ├── schema.ts # Database schema exports
│ └── migrations/ # Database migrations
├── lib/ # Utility libraries
│ └── email/ # Email service integration
└── hooks/ # Custom React hooks
SDK Project
The SDK code is located in the sdk/js-sdk directory.
The JavaScript SDK provides a simple way for developers to integrate scheduled notification functionality into their websites with just a few lines of code.
SDK Features
- Easy Integration: Just include the SDK and call
ScheduleHost.init() - Customizable Display: Configure notification appearance and behavior
- Local Storage: Automatically manages notification dismissal state
- Lightweight: Minimal dependencies and small bundle size
Technology Stack
Frontend
- Next.js 15 - React framework with App Router
- React 19 - UI library
- Tailwind CSS v4 - Utility-first CSS framework
- Radix UI - Accessible component primitives
- Lucide React - Icon library
Backend
- Cloudflare Workers - Serverless runtime
- Drizzle ORM - TypeScript ORM
- Cloudflare D1 - SQLite database
- better-auth - Authentication library
Development Tools
- TypeScript - Type safety
- ESLint - Code linting
- Prettier - Code formatting (via formatter)
- Husky - Git hooks