<<<<<<< HEAD A minimalist personal workspace: a dashboard, a customizable board, notes, tasks, a universal "Smart Ingest" capture bar, and a persistent AI assistant that understands your entire workspace — all powered by Groq.
- Frontend: plain HTML/CSS/JS, no build step, no framework. Data lives in
the browser's
localStorageand autosaves as you work. - Backend: two small Vercel serverless functions (
api/chat.js,api/ingest.js) that call the Groq API. Your Groq API key is read from an environment variable on the server — it is never sent to the browser. - AI: every assistant reply and every Smart Ingest decision is generated by a Groq-hosted model, called only from the backend.
index.html Page shell: sidebar, topbar (Smart Ingest), all views
css/styles.css Design system + every component style
js/storage.js Data model, localStorage persistence, import/export/reset
js/utils.js Small shared DOM/format/toast helpers
js/markdown.js Tiny safe renderer for AI text
js/api.js Frontend → backend fetch wrapper
js/sidebar.js View router
js/dashboard.js Dashboard view
js/workspace.js Board (columns/cards) view + modal system
js/ingest.js Smart Ingest capture bar logic
js/assistant.js AI Assistant chat view
js/settings.js Settings view
js/onboarding.js First-run walkthrough
js/app.js Boots everything
api/chat.js POST /api/chat — assistant + dashboard insights
api/ingest.js POST /api/ingest — Smart Ingest classification
You'll need a Groq API key: create one at https://console.groq.com/keys
- Install the Vercel CLI if you don't have it:
npm i -g vercel - Copy the env template and add your key:
cp .env.example .env # then edit .env and paste your key - Run the app (this serves the static files and the
/apifunctions together, exactly like production):Open the printed local URL. Don't use a plain static server (e.g.vercel devnpm run devfrom some other tool) — the/apiroutes only work throughvercel devor a real Vercel deployment.
- Push this project to a Git repository (GitHub/GitLab/Bitbucket) and import
it in the Vercel dashboard, or deploy straight from the CLI:
vercel - In your Vercel project, go to Settings → Environment Variables and add:
GROQ_API_KEY= your key (Production, and Preview if you want previews to work too)
- Redeploy. That's it — no other configuration needed.
- Smart Ingest (
api/ingest.js) reads your existing columns and decides whether pasted text should become a note, a task, or a board card — creating a new column when nothing fits. Every action shows a toast with an Undo. - AI Assistant (
api/chat.js, modeassistant) receives your complete workspace as JSON on every message, so it can answer questions, search, summarize, and — when you ask it to — create, move, or delete notes, tasks, cards, and columns on your behalf. It only acts when you ask. - Dashboard insights (
api/chat.js, modeinsight) is the same backend endpoint used to generate the short productivity summary shown on the dashboard, cached until your workspace changes. - Change the model any time from Settings → AI configuration — everything runs on Groq, so switching is instant with no extra setup.
Your workspace (columns, cards, notes, tasks, chat history) is stored only in
your browser's localStorage. Nothing is sent anywhere except the specific
text you send to Smart Ingest or the Assistant, which passes through your own
backend to Groq. Use Settings → Export to back it up, or Import to
restore it on another device/browser.
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) 384525ff301b1504bb1f98651ddbaa62dc048000