Skip to content

Latest commit

 

History

History
153 lines (121 loc) · 4.16 KB

File metadata and controls

153 lines (121 loc) · 4.16 KB

Clear - Mental Clarity Todo PWA

Status: v0.1.0 COMPLETE ✅


Architecture

src/
├── app/
│   ├── layout.tsx          # Root layout + i18n provider
│   ├── page.tsx             # Home (pinned + tasks)
│   ├── add/page.tsx         # Add task form
│   ├── categories/
│   │   ├── page.tsx         # Categories list
│   │   └── [id]/page.tsx    # Category detail
│   ├── badges/page.tsx      # Badges grid
│   └── settings/page.tsx    # Settings
├── components/
│   ├── ui/                  # shadcn/ui (button, card, input, checkbox, badge)
│   ├── layout/              # Header, BottomNav, PageLayout
│   ├── tasks/               # TaskItem, TaskList, AddTaskForm
│   └── categories/          # CategoryCard
├── actions/                 # Server Actions (tasks, categories, badges)
├── db/
│   ├── index.ts             # Drizzle client
│   └── schema.ts            # Tables (tasks, categories, badges, task_badges)
├── i18n/
│   └── request.ts           # next-intl config
└── lib/
    └── utils.ts             # cn() utility
messages/
└── fr.json                  # French translations

What's Done

Foundation

  • Project structure (src/, Next.js 16, Tailwind v4)
  • Database schema (tasks, categories, badges, task_badges)
  • Drizzle ORM + Neon PostgreSQL
  • Server actions (tasks.ts, categories.ts, badges.ts)
  • Database migrations + seed data

Theme & UI

  • Dark Disney theme (globals.css with oklch colors)
  • Light/Dark theme toggle (shadcn approach with CSS vars)
  • GlassBar component for header/bottom-nav
  • shadcn/ui components (button, card, input, checkbox, badge)
  • Glass effect, glow effects, animations

Layout

  • Header component
  • BottomNav with 5 tabs (centered + button)
  • PageLayout component (max-w-lg container)
  • + button state: active when on /add, muted otherwise

Features

  • Task CRUD (create, complete, pin, delete)
  • Categories with colors and icons
  • Category pinning (long-press) + auto-select on page load
  • Badges system
  • PWA config (manifest.json)
  • API endpoint for external integrations (ChatGPT/Claude)
  • Secure API key system (hashed in DB, revocable)
  • ChatGPT Custom GPT integration
  • Siri Shortcut integration

i18n

  • next-intl setup
  • French translations (messages/fr.json)
  • All components localized

Pending (User's Tasks)

  • Import Todoist tasks into database
  • Deploy to Vercel
  • Configure ChatGPT Custom GPT
  • Configure Siri Shortcut ("Apache")

In Progress / Upcoming PRs

🔐 Authentication (Supabase)

  • User authentication with Supabase Auth
  • Protected routes
  • User-specific tasks and categories

Next Features (Roadmap)

v0.2.0 - Shopping List Mode 🛒

  • Smart Paste from ChatGPT
  • Group items by aisle
  • Supermarket mode (large checkboxes)
  • AI Shopping Assistant: Generate shopping list from meal ideas (e.g., "banane" → suggests related items)
  • Core categories: Some categories (like "Courses") are protected and cannot be deleted
  • Enhanced category display with better visibility

v0.3.0 - AI Integration 🤖

  • AI-powered task suggestions
  • Smart categorization based on task content
  • Shopping list optimization (group by store aisle)
  • Natural language task input

v0.4.0 - Polish

  • Focus mode (single task view)
  • "Not Today" button (snooze)
  • Completion animations
  • Offline improvements

Commands

# Development
pnpm dev              # Start dev server
pnpm build            # Production build
pnpm tsc --noEmit     # TypeScript check
pnpm lint:fix         # ESLint fix

# Database
pnpm db:generate      # Generate migrations
pnpm db:push          # Push schema to DB
pnpm db:seed          # Seed default data
pnpm db:studio        # Open Drizzle Studio
pnpm db:generate-key "Name"  # Generate API key

Environment

DATABASE_URL=postgresql://...  # Neon PostgreSQL

Deploy

  1. Push to GitHub
  2. Import to Vercel
  3. Add DATABASE_URL environment variable
  4. Deploy