Ever had that moment when you’re drowning in random tasks scribbled on napkins, endless Notion pages, or worse—your brain?
Me too. That’s why I built Fuscalendar, my personal take on what a task manager should be: simple enough for my half-asleep brain dumps, smart enough to save me from my own overly optimistic estimations.
You can check out the final app here:
🎯 What was I solving?
I needed a fast, hassle-free way to quickly capture tasks without feeling overwhelmed. And if it could save me from my own ridiculous “yeah, that’ll take five minutes” estimates—perfect.
Enter Fuscalendar: quick day planner with AI-generated task descriptions and time estimates based on task titles.
Are the AI estimations actually more accurate?
I don’t know. But now, if a task takes longer than estimated, it’s the AI’s fault, not mine. Problem Solved!
🛠️ Under the hood
Quick tech rundown for my fellow nerds:
- Frontend: Svelte + Vite, hosted on AWS S3.
- Backend: Node.js + Express on AWS Lambda.
- AI integration: OpenAI API.
- Data Storage: DynamoDB.
- Authentication: Handled by my Fuscauth JWT service.
💡 Lessons learned and Insights
Thinking before coding actually works?
Every single project of mine so far has suffered the classic effects of the go horse project and left me a bit frustrated at the end. Either because I couldn’t implement everything I wanted or because things got out of hand and the code is shit/doesn’t work.
This time I used chatGPT to be my PM-right-hand and boy we did it all. Requirements, multiple technical designs and a task plan.
I also worked more on Figma creating mockups (and practiced my skills with autolayout) and have a pretty good interface so far (a little bummed I didn’t think of any funny ideas for this project, but fear not! It’s only the V1).
I’m honestly impressed with the level of detail I got in the documents produced and believe they will help development a lot. Even happier and more impressed with the amount of time and effort chatGPT saved me in this process.
All together, I spent one weekend (8-12 hours ish) on it but not 100% focused, mind you. I was half losing at playing Apex Legends (got from Silver III to Plat II) on one day and watching movies in the second. My focused time is definitely lower than 8 hours.
I wonder how long it would take to do the same thing for some of my other projects retroactively. I might even try…
Some refactor in my Authentication service
I had to change the way I’m authenticating endpoints from what I first thought when I made Fuscauth.
The original idea was to attach a custom lambda authorizer directly to Fuscalendar routes in APIGateway (and in any other services I create in the future). It worked in principle until I ran into the greatest enemy of frontend development… CORS.
The CORS requests were not getting approved.
I tried tweaking the CORS configurations of the API Gateway instance but it didn’t work.
So I reverted back to using a middleware in the express app of Fuscalendar
I’d like to use a lambda layer to have the token validation function centralized in one place, but this might be for a future version. For now I just copied the validation function to Fuscalendar and I’ll go with it.
Cool trick for frontends hosted in S3 and CloudFront
Problem
Static SvelteKit applications hosted on AWS S3 behind CloudFront faced issues when users refreshed or directly accessed nested routes (e.g., /app_name/tasks). Because S3 only serves existing objects, these nested paths returned a “No Such Key” error (HTTP 404).
Solution
Implemented a CloudFront Function to internally rewrite requests for nested paths to each application’s base index.html file. This enables SvelteKit’s client-side router to handle navigation seamlessly, preserving the original requested path in the user’s browser.
Implementation
- Created and deployed a CloudFront Function triggered at the Viewer Request phase.
- CloudFront Functions docs: https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cloudfront-functions.html
- The function checks for requests without file extensions (indicating a client-side route) and internally rewrites these requests to the appropriate app’s index.html.
- Integrated the CloudFront Function into the distribution configuration, solving the 404 issue and enhancing user experience with seamless navigation.
Am I a vibe coder/designer??
When I started the project I was amazed by being able to use Github copilot to code using the agent mode. Until this project, my experiences coding with AI were more frustrating than helpful. That changed using the agent mode and more advanced models.
Agent mode made implementing tasks from zero easy. First, I was using GPT-4.1, but I felt it struggled with debugging some errors or getting stuck in a retry loop if the proposed solution didn’t work.
Then, I switched to Gemini 2.5 Pro and I think it worked better (shoutout Google). Answers were more complete and effective. I got less stuck in those retry loops.
I also used some design tools in the beginning to come up with basic layouts to the UI. The UIs changed over time, but that’s ok. I used Builder.io Figma to code SDK and it worked pretty well to get the first pages started from Figma (They say it’s Figma to Cursor only, but it works with good ol’VS code).
Only towards the end of the project I started to hear more about vibe coding / vibe designing. There’s a lot of opinion about it out there. I don’t want to discuss if that’s good or bad here. But for this personal project I developed over the weekend while watching TV or playing apex legends, it felt really good to make progress while half paying attention only.
Yes, the code quality wasn’t the best.
- But it doesn’t matter for a personal project.
Yes, I did get stuck in those weird retry loops and probably spent more time on some things than I would if I was fully concentrated
- But again, for a personal project this wasn’t critical. Would be nice to have gotten this done faster
- Also, as the models/tools get better I think this will be less of a problem
Result: I think this approach works for my personal projects and I intend to keep using it to work on Fuscripts regardless of the name.
📅 What’s next?
Phase 1 has the basics—quick entry, AI-generated details, and simple navigation. Future phases could tackle auto-chunking big tasks, detailed project views, and calendar integrations.
For now, I’m pretty happy with Fuscalendar. It’s simple, it’s effective, and it hasn’t exploded yet.