▸ note01
One codebase
Nuxt 4 pages with file-based routing and SSR plus REST routes /api/tasks (GET, POST, PUT, DELETE) on Nitro — no separate backend to deploy.
guest@gubanov:~$ cat ./projects/taskmanager/README.md
Task manager on Nuxt 4 — dashboard, smart list and a drag-and-drop Kanban board.
A solo project: design, frontend and REST API in one Nuxt codebase. Light and dark themes, a layout that works from desktop to phones, optimistic updates and toasts.

// context
A compact task manager that shows how I put a Vue app together end to end: Nuxt 4 with file-based routing and SSR, a typed REST API on Nitro, a Pinia store and a design system written from scratch.
Three screens cover the whole flow: the dashboard answers “what needs attention today”, the list helps to find and sort, and the Kanban board moves work between statuses — drag & drop on desktop, swipes on phones.
The API keeps data in memory: the project is about the interface and the client–server flow, so after a restart the demo tasks come back.
Solo project: design, frontend and API.
Dashboard: greeting with a progress ring, status counters, quick add, upcoming deadlines with overdue highlighting, priority split, recent activity and a tag cloud.
Task list: search by title, description and tags, filters by status and priority, sorting and a status switch right on the card.
Kanban: three columns with drag & drop. On touch screens the columns swipe and tasks move with arrow buttons.
Create and edit in a modal: status, priority, due date, tags. A new task's draft autosaves to localStorage; on phones the modal opens as a bottom sheet.
Toasts for every operation and optimistic updates: a status change applies instantly and rolls back if the request fails.
Light and dark themes follow the system; animations respect prefers-reduced-motion.
Click a screenshot to open it full screen; arrow keys switch between them.
▸ note01
Nuxt 4 pages with file-based routing and SSR plus REST routes /api/tasks (GET, POST, PUT, DELETE) on Nitro — no separate backend to deploy.
▸ note02
types/task.ts is imported by both the client and the server, so the API contract is checked by TypeScript in strict mode.
▸ note03
Pinia keeps counters and completion in getters. Updates apply instantly and roll back from a snapshot if the request fails; after the first load pages refresh silently.
▸ note04
Design tokens on CSS variables, a dark theme via prefers-color-scheme, color-mix() for tints, scoped styles and inline Lucide-style SVG icons — the interface is hand-made.
Nuxt 4
file-based routing, SSR, server routes
Vue 3
Composition API, <script setup>, transitions
TypeScript
strict mode, shared client/server types
Pinia
store with optimistic updates
Nitro / h3
REST API, in-memory storage
CSS
design tokens, dark theme, color-mix()