Skip to content

Latest commit

Β 

History

40 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Plannerinator

Complete life management system for tasks, events, notes, projects, and custom collections.

TypeScript Next.js Better Auth

🎯 Philosophy

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

✨ Core Entities

Tasks

Things to do, with or without deadlines, assignable to projects, linkable to notes/events.

Core fields: title, description, due date, duration, status, priority, subtasks

Events

Time-based events, viewable in calendar or list format.

Core fields: title, description, start/end time, location, all-day flag, calendar type

Notes

Notes, documents, research, knowledge base with markdown support.

Core fields: title, content (markdown), type (note/document/research/idea)

Projects

Logical containers to organize tasks, events, and notes.

Core fields: name, description, status, dates, color, icon

Collections

Custom lists with user-definable schemas (e.g., freelance services, books, clients).

Schema editor: Visual builder for defining custom fields per collection

πŸ”— Universal Features

  • 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)

πŸ› οΈ Tech Stack

Core

  • 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

Database & Auth

  • Drizzle ORM - TypeScript-first ORM with edge support
  • Neon PostgreSQL - Serverless Postgres
  • Better Auth - Modern authentication with RBAC

Deployment

  • Cloudflare Workers - Edge deployment
  • OpenNext - Next.js adapter for Cloudflare

Developer Experience

  • Turbopack - Fast development builds
  • ESLint + Prettier - Code quality
  • React Hook Form + Zod - Type-safe form validation

πŸš€ Quick Start

1. Clone & Install

git clone https://github.com/essedev/plannerinator.git
cd plannerinator
pnpm install

2. Environment Setup

Create .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 emails

Generate Better Auth secret:

openssl rand -base64 32

3. Database Setup

# Generate migration
pnpm db:generate

# Push to database
pnpm db:push

# Open Drizzle Studio (optional)
pnpm db:studio

4. Run Development Server

pnpm dev

Open http://localhost:3000

πŸ“ Project Structure

src/
β”œβ”€β”€ 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

πŸ“œ Available Scripts

# 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 build

πŸ—ΊοΈ Project Status

Current Phase: Phase 1 In Progress

Overall Progress: ~26%

βœ… Phase 0: Foundation (100% Complete)

  • βœ… 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

🚧 Phase 1: Core Entities (35% Complete)

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:

  1. Setup testing infrastructure (Vitest) for Task Management
  2. Implement Event Management (Server Actions + UI components)
  3. Implement Notes with markdown editor
  4. Implement Projects with stats dashboard

πŸ“‹ Future Phases

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

πŸ“š Documentation

Core Documentation

Technical Docs

🚒 Deployment

Cloudflare Workers

# First-time setup
pnpm wrangler login

# Set secrets
pnpm wrangler secret put DATABASE_URL
pnpm wrangler secret put BETTER_AUTH_SECRET

# Deploy
pnpm deploy

Configuration in wrangler.jsonc

🀝 Contributing

This is a personal project, but contributions are welcome! Please open an issue first to discuss proposed changes.

πŸ“ License

MIT License - feel free to use this for your own projects.

πŸ™ Credits

Built with:


Made with ❀️ by @essedev

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages