https://github.com/essedev/plannerinator
https://github.com/essedev/plannerinator
Last synced: about 7 hours ago
JSON representation
- Host: GitHub
- URL: https://github.com/essedev/plannerinator
- Owner: essedev
- Created: 2025-10-22T19:36:42.000Z (9 months ago)
- Default Branch: master
- Last Pushed: 2026-03-02T16:42:12.000Z (4 months ago)
- Last Synced: 2026-03-02T19:56:09.774Z (4 months ago)
- Language: TypeScript
- Size: 9.31 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
# Plannerinator
Complete life management system for tasks, events, notes, projects, and custom collections.
[](https://www.typescriptlang.org/)
[](https://nextjs.org/)
[](https://better-auth.com/)
## π― 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
```bash
git clone https://github.com/essedev/plannerinator.git
cd plannerinator
pnpm install
```
### 2. Environment Setup
Create `.env` file:
```bash
# 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:
```bash
openssl rand -base64 32
```
### 3. Database Setup
```bash
# Generate migration
pnpm db:generate
# Push to database
pnpm db:push
# Open Drizzle Studio (optional)
pnpm db:studio
```
### 4. Run Development Server
```bash
pnpm dev
```
Open [http://localhost:3000](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
```bash
# 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](./docs/plannerinator/ROADMAP.md) for detailed feature breakdown and timeline estimates.
## π Documentation
### Core Documentation
- π **[ROADMAP.md](./docs/plannerinator/ROADMAP.md)** - Complete roadmap with progress tracking
- ποΈ **[ARCHITECTURE.md](./docs/plannerinator/ARCHITECTURE.md)** - Application architecture
- ποΈ **[DATABASE_SCHEMA.md](./docs/plannerinator/DATABASE_SCHEMA.md)** - Complete database schema
### Technical Docs
- π¨ **[UI_PATTERNS.md](./docs/plannerinator/UI_PATTERNS.md)** - UI/UX patterns
- β‘ **[API_DESIGN.md](./docs/plannerinator/API_DESIGN.md)** - Server Actions design
- π **[AUTHENTICATION.md](./docs/AUTHENTICATION.md)** - Better Auth setup
- π₯ **[RBAC.md](./docs/RBAC.md)** - Role-based access control
- π§ **[EMAIL_SYSTEM.md](./docs/EMAIL_SYSTEM.md)** - Email configuration
## π’ Deployment
### Cloudflare Workers
```bash
# 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:
- [Next.js](https://nextjs.org)
- [Drizzle ORM](https://orm.drizzle.team)
- [Better Auth](https://better-auth.com)
- [shadcn/ui](https://ui.shadcn.com)
- [Tailwind CSS](https://tailwindcss.com)
- [Cloudflare Workers](https://workers.cloudflare.com)
---
Made with β€οΈ by [@essedev](https://github.com/essedev)