Complete life management system for tasks, events, notes, projects, and custom collections.
Flexibility without chaos - Plannerinator adopts a hybrid multi-model approach:
- Rigid core entities (tasks, events, notes, projects) with specific, type-safe fields
- Universal linking system to connect any entity to any other
- JSONB metadata for custom fields without sacrificing performance
- Dynamic collections for custom lists (books, services, research, etc.)
Things to do, with or without deadlines, assignable to projects, linkable to notes/events.
Core fields: title, description, due date, duration, status, priority, subtasks
Time-based events, viewable in calendar or list format.
Core fields: title, description, start/end time, location, all-day flag, calendar type
Notes, documents, research, knowledge base with markdown support.
Core fields: title, content (markdown), type (note/document/research/idea)
Logical containers to organize tasks, events, and notes.
Core fields: name, description, status, dates, color, icon
Custom lists with user-definable schemas (e.g., freelance services, books, clients).
Schema editor: Visual builder for defining custom fields per collection
- Linking System: Connect any entity to any other (task β project, task β note, etc.)
- Tags: Flexible organization with colored tags
- Comments: Discussion threads on any entity
- Search: Full-text search across all content
- Activity Log: Complete change history (future)
- Sharing: Collaborate with other users (future)
- Next.js 15 - App Router, Server Components, Server Actions
- React 19 - Latest React features
- TypeScript - Strict mode for full type safety
- Tailwind CSS 4 - Utility-first styling
- shadcn/ui - Beautiful, accessible components
- Drizzle ORM - TypeScript-first ORM with edge support
- Neon PostgreSQL - Serverless Postgres
- Better Auth - Modern authentication with RBAC
- Cloudflare Workers - Edge deployment
- OpenNext - Next.js adapter for Cloudflare
- Turbopack - Fast development builds
- ESLint + Prettier - Code quality
- React Hook Form + Zod - Type-safe form validation
git clone https://github.com/essedev/plannerinator.git
cd plannerinator
pnpm installCreate .env file:
# Database (Neon PostgreSQL)
DATABASE_URL="postgresql://..."
# Better Auth
BETTER_AUTH_URL="http://localhost:3000"
BETTER_AUTH_SECRET="run: openssl rand -base64 32"
NEXT_PUBLIC_APP_URL="http://localhost:3000"
# Email (optional - mock by default)
ADMIN_EMAIL="admin@yourdomain.com"
# RESEND_API_KEY="re_xxxxx" # Uncomment to enable real emailsGenerate Better Auth secret:
openssl rand -base64 32# Generate migration
pnpm db:generate
# Push to database
pnpm db:push
# Open Drizzle Studio (optional)
pnpm db:studiopnpm devsrc/
βββ app/ # Next.js App Router
β βββ (auth)/ # Auth pages (login, register)
β βββ dashboard/ # Protected dashboard
β βββ api/auth/ # Better Auth handler
βββ components/
β βββ ui/ # shadcn/ui components
β βββ layout/ # Navbar, Footer, Sidebar
β βββ tasks/ # Task components (future)
β βββ events/ # Event components (future)
β βββ notes/ # Note components (future)
βββ features/
β βββ auth/ # Authentication logic
β βββ profile/ # Profile management
β βββ users/ # User management (admin)
β βββ tasks/ # Task management (future)
β βββ events/ # Event management (future)
βββ lib/
β βββ auth.ts # Better Auth config
β βββ auth-client.ts # Client auth hooks
β βββ permissions.ts # RBAC helpers
βββ db/
β βββ schema.ts # Drizzle schema
β βββ index.ts # Database client
βββ types/ # TypeScript types
# Development
pnpm dev # Start dev server
pnpm build # Production build
pnpm start # Start production server
# Code Quality
pnpm lint # Run ESLint
pnpm format # Format with Prettier
pnpm format:check # Check formatting
pnpm typecheck # TypeScript checking
# Database
pnpm db:generate # Generate migrations
pnpm db:push # Push schema to database
pnpm db:studio # Open Drizzle Studio
# Deployment
pnpm deploy # Deploy to Cloudflare
pnpm preview # Preview Cloudflare buildCurrent Phase: Phase 1 In Progress
Overall Progress: ~26%
- β Better Auth with email/password, password reset, email verification
- β RBAC system (user/admin roles)
- β Complete database schema for all entities (tasks, events, notes, projects, collections, links, tags, comments)
- β Type-safe validation (Zod schemas, branded types, type guards)
- β Dashboard shell with responsive navigation
- β Profile & user management
Completed:
- β Database schemas for all entities
- β Zod validation schemas
- β TypeScript type definitions
- β
Task Management CRUD (2025-01-21)
- β Server Actions (create, update, delete, bulk operations)
- β Database queries (filters, search, relations)
- β Task list page with filters
- β Task detail/edit page
- β Task creation page
- β Components (TaskCard, TaskList, TaskForm, TaskFilters)
- β Features: completion, priority badges, overdue detection, project assignment
In Progress:
- β³ Event Management CRUD
- β³ Note Management CRUD
- β³ Project Management CRUD
- β³ Universal features (tags, comments, links, search)
Next Steps:
- Setup testing infrastructure (Vitest) for Task Management
- Implement Event Management (Server Actions + UI components)
- Implement Notes with markdown editor
- Implement Projects with stats dashboard
- Phase 2: Collections system with dynamic schemas
- Phase 3: Activity timeline, advanced search, data export/import
- Phase 4: Collaboration & sharing
- Phase 5: AI Assistant with natural language commands
See ROADMAP.md for detailed feature breakdown and timeline estimates.
- π ROADMAP.md - Complete roadmap with progress tracking
- ποΈ ARCHITECTURE.md - Application architecture
- ποΈ DATABASE_SCHEMA.md - Complete database schema
- π¨ UI_PATTERNS.md - UI/UX patterns
- β‘ API_DESIGN.md - Server Actions design
- π AUTHENTICATION.md - Better Auth setup
- π₯ RBAC.md - Role-based access control
- π§ EMAIL_SYSTEM.md - Email configuration
# First-time setup
pnpm wrangler login
# Set secrets
pnpm wrangler secret put DATABASE_URL
pnpm wrangler secret put BETTER_AUTH_SECRET
# Deploy
pnpm deployConfiguration in wrangler.jsonc
This is a personal project, but contributions are welcome! Please open an issue first to discuss proposed changes.
MIT License - feel free to use this for your own projects.
Built with:
Made with β€οΈ by @essedev