An open API service indexing awesome lists of open source software.

https://github.com/essedev/plannerinator


https://github.com/essedev/plannerinator

Last synced: about 7 hours ago
JSON representation

Awesome Lists containing this project

README

          

# Plannerinator

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

[![TypeScript](https://img.shields.io/badge/TypeScript-5.9-blue.svg)](https://www.typescriptlang.org/)
[![Next.js](https://img.shields.io/badge/Next.js-15-black.svg)](https://nextjs.org/)
[![Better Auth](https://img.shields.io/badge/Better%20Auth-1.3-green.svg)](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)