A minimalist to-do list with tags, categories, a calendar, and a context-aware AI assistant. No accounts, no passwords — just a name on first visit.
- Next.js (App Router, TypeScript, Tailwind)
- SQLite via Turso (libSQL) — same SQLite you know, but deployable on Vercel's serverless functions.
- Groq for the AI assistant (
llama-3.3-70b-versatile)
There's no login. On first visit you're asked for a name, which
generates a random id stored in localStorage (and a cookie as backup).
That id tags every row you create in the database. Clearing browser
storage effectively "logs you out" of that device — there's no recovery
flow, by design, since there's nothing to recover.
- Quick add — type a task, use
#tagand@categoryinline shorthand, optionally set a due date. - List view — grouped into Overdue / Today / Tomorrow / This week / Later / No date.
- Calendar — month view with a dot on any day that has open tasks; click a day to filter the list to it.
- Assistant — a chat panel that can see your current tasks (titles, tags, categories, due dates, completion state) and answer questions about them. It's read-only by design — it won't add or edit tasks for you, only talk about what's there.
src/
app/
api/
user/route.ts # create/fetch identity by id
todos/route.ts # list/create todos
todos/[id]/route.ts # update/delete a todo
chat/route.ts # AI assistant endpoint
page.tsx # main app shell
layout.tsx # fonts + metadata
components/
Onboarding.tsx
QuickAdd.tsx
TodoList.tsx / TodoItem.tsx
Calendar.tsx
Chat.tsx
RightPanel.tsx # calendar/assistant tab switcher
lib/
db.ts # Turso client + schema
identity.ts # server-side header/cookie reader
useIdentity.ts # client-side identity hook
api.ts # fetch helpers
quickAdd.ts # #tag / @category parser
f63c1e2 (Initial commit: Simply - minimalist to-do app with Next.js, SQLite, Groq AI)