A modern todo application built with React, TypeScript, and Mantine UI.
This project helps users manage daily tasks with priority labels, filtering, inline editing, and local persistence.
- Create todos with a title and priority (
low,medium,high) - Mark todos as completed/uncompleted
- Edit todo title and priority inline
- Delete todos
- Filter by
all,completed, orremaining - Persist todos in
localStorageso data survives refreshes - Show a congratulatory message when all todos are completed
- React 19
- TypeScript
- Vite
- Mantine (
@mantine/core) - ESLint
src/
|-- App.tsx
|-- main.tsx
|-- index.css
|-- components/
| |-- CongratsMessage.tsx
| |-- FilterBar.tsx
| |-- TodoList/
| |-- TodoInput.tsx
| |-- TodoItem.tsx
| |-- TodoList.tsx
|-- types/
|-- todo.ts
- Node.js 20+ (or current LTS)
- Bun (recommended for this repo)
bun installIf you prefer npm:
npm installStart dev server:
bun run devBuild for production:
bun run buildPreview production build:
bun run previewLint the code:
bun run lint- App state is managed in
src/App.tsx - Todos are read from
localStorageon startup - Any change to todos is synced back to
localStoragewithuseEffect - UI is composed from small focused components in
src/components
- This is a frontend-only app (no backend/database)
- Data is stored per-browser in local storage