Fuscalendar

fuscalendar_logo_simple_transparent.png Live
Fuscalendar

An AI-powered task manager that estimates your to-dos so you don't feel guilty when the estimations are wrong

Node.js AWS Serverless AI Svelte

Timeline

v1.3.0

December 12, 2025

What shipped

  • OpenAI client migration to fuscommons — replaced the project-specific OpenAI client with the shared createOpenAIClient from fuscommons. One less thing to maintain per project
  • Experimental React frontend (web2) — started a React 19 + Zustand + shadcn/ui implementation of the same app. Same API, different frontend. An experiment in seeing how the same product feels in a different framework
  • Drag-and-drop task reordering — added svelte-dnd-action for dragging tasks into your preferred order. Each task gets a position field that persists to DynamoDB. Visual feedback with opacity and grayscale during drag, 200ms flip animation for smooth reordering
  • Before drag-and-drop, tasks were stuck in whatever order the AI generated them. Now you can arrange your day the way you actually want to execute it. Small feature, big difference in how the app feels to use.

    v1.2.0

    June 1, 2025

    What shipped

  • Dev/prod deploy scripts — separate deployment pipelines for staging and production environments
  • Custom favicon and logo update — gave Fuscalendar its own visual identity
  • "AI-estimated" rebrand — renamed the concept from "AI-generated tasks" to "AI-estimated tasks." The AI doesn't generate tasks, the user does. The AI just estimates how long they'll take. Words matter
  • Frontend test suite — set up Vitest with @testing-library/svelte for component and integration tests
  • Backend test suite — set up Bun's built-in test runner for API and service tests
  • Daily estimation summary — added a time summary card to both the main page and the estimation review page, showing total hours with color-coded warnings (green under 6h, yellow under 8h, red over 8h)
  • This was the maturity phase. No flashy features, just the kind of work that makes a project sustainable: tests, proper deployments, and a naming convention that actually reflects what the app does. The daily summary was the one user-facing addition, and it turned out to be one of the most useful, because seeing "Total: 10h" in red is a faster reality check than counting minutes in your head.

    v1.1.0

    May 1, 2025

    What shipped

  • Delete tasks — added the endpoint and wired it into the UI through an options menu
  • Re-estimation endpoint — send existing tasks back to the AI for updated time estimates based on changed descriptions
  • Task detail page redesign — rebuilt for better desktop layout with usability improvements
  • Button component system — created a reusable UiButton component and replaced all generic buttons across the app
  • Mobile layout — made the generate-tasks page work on smaller screens
  • Date handling standardization — fixed timezone bugs by normalizing all dates to UTC. The kind of fix you only make after seeing tomorrow's tasks show up on today's page
  • TaskStore refactor — major rewrite of the Svelte store that manages task state, simplifying the re-estimate flow
  • Ctrl+Enter shortcut — trigger AI estimation from the keyboard instead of clicking a button
  • Session-persisted date — the selected date now syncs with sessionStorage, so navigating away and back doesn't reset to today
  • Iconify integration — added proper icons throughout the UI
  • The "make it real" phase. The AI estimation worked, but using the app daily surfaced all the rough edges. This batch of changes turned a demo into something I'd actually open on a Saturday morning.

    v1.0.0

    April 10, 2025

    What shipped

  • SvelteKit frontend + Express API — bootstrapped both from scratch, migrated from vanilla Svelte to SvelteKit mid-build when routing needs became clear
  • FuscAuth integration — JWT auth middleware, CORS setup, login redirect flow. The second project to plug into the sheriff's authentication
  • Commons package — shared TypeScript types between frontend and backend, establishing the same pattern used across fuscripts
  • AI task estimation with OpenAI — the core feature. Send a brain dump, get back structured tasks with time estimates. System prompt + Zod schema validation
  • Review AI suggestions page — a dedicated screen to preview, edit, and confirm AI-estimated tasks before saving
  • Task detail page — view and edit individual tasks with descriptions and time estimates
  • DynamoDB storage — composite key design with USER#<userId> / TASK#<date>#<taskId> for efficient date-based queries
  • From zero to a working AI-powered task planner in three weekends. The April 26-27 weekend was the big one, where the AI integration, review page, and database persistence all came together. By the end, you could brain dump tasks, get AI estimates, review them, save them, and browse by day.

    The first fuscripts app that does something for the user, not just for the infrastructure.