Back home
ReactTypeScriptTailwind CSSFirebase

Todo Flow

A calmer way to organize tasks, protect focus, and make progress every day. ✨

Preview of Todo Flow
Todo Flow project image 2Todo Flow project image 3

Flow

> A calmer way to organize tasks, protect focus, and make progress every day. ✨

<p align="center"> <a href="https://www.linkedin.com/in/hazari-saquib/">LinkedIn</a> · <a href="https://x.com/saquib7298">Twitter / X</a> </p>

<p align="center"> <img src="https://img.shields.io/badge/React-19-61DAFB?logo=react&logoColor=white" alt="React 19" /> <img src="https://img.shields.io/badge/TypeScript-Strict-3178C6?logo=typescript&logoColor=white" alt="TypeScript" /> <img src="https://img.shields.io/badge/TanStack_Start-SSR-FF4154" alt="TanStack Start" /> <img src="https://img.shields.io/badge/Storage-LocalStorage-4F46E5" alt="Browser Local Storage" /> <img src="https://img.shields.io/badge/Clerk-Authentication-6C47FF" alt="Clerk authentication" /> </p>

About the project

Flow is a frontend-first productivity application designed around a simple idea: fewer distractions, clearer priorities, and a more intentional daily workflow.

It combines a focused todo experience with responsive navigation, theme switching, filtering, analytics, calendar planning, and browser-local persistence.

Preview

<p align="center"> <img src="./public/homepage.png" alt="Flow landing page" width="48%" /> <img src="./public/todo.png" alt="Flow dashboard" width="48%" /> </p>

Highlights

  • 🔐 Secure authentication with Clerk.
  • 💾 Todos stored locally in the browser with localStorage.
  • ✅ Create, complete, reorder, delete, and clear todos.
  • 🏷️ Filter tasks by Today, Completed, Personal, Work, and Workout.
  • 🖱️ Smooth drag-and-drop sorting powered by `dnd-kit`.
  • 🌗 Light and dark themes with persisted preferences.
  • 📱 Responsive sidebar with a mobile hamburger menu.
  • ♿ Accessible controls with semantic HTML, labels, ARIA states, and keyboard-friendly interactions.
  • 🚀 Vercel-ready TanStack Start deployment with Nitro.
  • 🧪 Automated unit and integration tests for todo flows and date-filter edge cases.

Screens and experience

The application is built around three focused experiences:

1. **Landing page** — explains the product and provides contextual authentication actions. 2. **Authentication** — Clerk-powered sign-in and sign-up flows. 3. **Dashboard** — personalized greeting, progress overview, task filters, persistence, drag-and-drop sorting, and destructive-action safeguards.

Tech stack

| Layer | Technology | | -------------- | ----------------------------------------------------------------- | | UI | React 19, Tailwind CSS | | Language | TypeScript with strict checking | | Framework | TanStack Start and TanStack Router | | Authentication | Clerk | | Storage | Browser localStorage | | Interactions | Radix UI, `dnd-kit`, Lucide icons | | Tooling | Vite, Vitest, Biome | | Deployment | Vercel with Nitro |

Architecture

```text React UI ├─ TanStack Router routes ├─ Accessible reusable components ├─ Todo dialog and sortable task list ├─ Clerk client state └─ localStorage todo persistence ```

Todos stay on the device and browser where they were created. Clearing browser storage or switching browsers will not carry tasks across devices.

Getting started

Prerequisites

  • Node.js 20+
  • A Clerk application

Install

```bash git clone YOUR_REPOSITORY_URL cd todo-flow npm install ```

Environment variables

Create `.env.local`:

```env VITE_CLERK_PUBLISHABLE_KEY=pk_test_... CLERK_PUBLISHABLE_KEY=pk_test_... CLERK_SECRET_KEY=sk_test_... VITE_APP_URL=https://your-project.vercel.app ```

Never commit `.env.local`.

Run locally

```bash npm run dev ```

Open `http://localhost:3000`.

Quality checks

```bash # Type-check npx tsc --noEmit

Run tests npm run test

Lint npm run lint

Production build npm run build ```

Deployment

Flow deploys to Vercel with the Nitro Vite plugin. Todo data remains in each visitor's local browser storage, so no database or Firebase environment variables are needed.

Before deploying:

  • Add `VITE_CLERK_PUBLISHABLE_KEY`, `CLERK_PUBLISHABLE_KEY` (the same `pk_...` value), and `CLERK_SECRET_KEY` to Vercel.
  • Use production Clerk keys and configure the production Clerk domain.
  • Set `VITE_APP_URL` to your production Vercel URL. This is required for correct canonical, Open Graph, Twitter, and share-image links.
  • Import the Git repository into Vercel; it will detect TanStack Start/Nitro automatically.

Roadmap

  • [ ] Edit existing todos.
  • [ ] Persist drag-and-drop ordering.
  • [ ] Add pagination for larger todo collections.
  • [ ] Add optimistic updates and retry states.
  • [ ] Add analytics and usage insights.
  • [ ] Add end-to-end browser tests.

Author

Built with care by **Saquib Hazari**.

<p> <a href="https://www.linkedin.com/in/hazari-saquib/">LinkedIn</a> · <a href="https://x.com/saquib7298">Twitter / X</a> · <a href="https://react-frontend-zlql.vercel.app/">Portfolio</a> </p>

License

This project is currently a personal portfolio project. Add a license here if you plan to distribute or open-source it.

Client Feedback

What people say about working with me

Exceptional developer with a keen eye for detail. Delivered our complex web application ahead of schedule and the code quality was outstanding.
Sarah JenkinsCTO @ TechFlow
Transformed our legacy system into a modern, scalable architecture. The performance gains were immediate, a true full-stack expert who understands both business and tech.
David ChenProduct Director @ Nexa
His ability to bridge the gap between complex blockchain concepts and user-friendly interfaces is remarkable.
Elena RodriguezFounder @ AuraDeFi
Exceptional developer with a keen eye for detail. Delivered our complex web application ahead of schedule and the code quality was outstanding.
Sarah JenkinsCTO @ TechFlow
Transformed our legacy system into a modern, scalable architecture. The performance gains were immediate, a true full-stack expert who understands both business and tech.
David ChenProduct Director @ Nexa
His ability to bridge the gap between complex blockchain concepts and user-friendly interfaces is remarkable.
Elena RodriguezFounder @ AuraDeFi

Discussions (1)

Sign in to add a comment or like a discussion.

saquib Hazari avatar

saquib Hazari 9d ago
I always wanted a person todo list which can show the stats for me and i can set for next day todos for myself. The problem was for the storing data i used firebase storage to see if it's working well but free tier ended during last project. But it worked well in firebase. The end result is really well. The Tanstack start is really good framework.