Skip to main content

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

  1. Dashboard:
    Provides an admin dashboard for creating, reading, updating, and deleting organizations, projects, and schedule tasks.

  2. REST API:
    Exposes RESTful API endpoints that allow external applications to query scheduled notifications.

  3. Authentication:
    Built with better-auth providing secure user authentication and authorization.

  4. 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