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
- 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
- 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
- Header component
- BottomNav with 5 tabs (centered + button)
- PageLayout component (max-w-lg container)
- + button state: active when on /add, muted otherwise
- 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
- next-intl setup
- French translations (messages/fr.json)
- All components localized
- Import Todoist tasks into database
- Deploy to Vercel
- Configure ChatGPT Custom GPT
- Configure Siri Shortcut ("Apache")
- User authentication with Supabase Auth
- Protected routes
- User-specific tasks and categories
- 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
- AI-powered task suggestions
- Smart categorization based on task content
- Shopping list optimization (group by store aisle)
- Natural language task input
- Focus mode (single task view)
- "Not Today" button (snooze)
- Completion animations
- Offline improvements
# 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 keyDATABASE_URL=postgresql://... # Neon PostgreSQL- Push to GitHub
- Import to Vercel
- Add
DATABASE_URLenvironment variable - Deploy