You know that feeling when you have 15 browser tabs open, three different to-do apps running, a habit tracker that you forgot to check for a week, and a time tracker that's been running since yesterday? Yeah, me too. That's exactly why I built CodeniTask.
The Challenge: Productivity Tools Shouldn't Be Scattered
I've been there—switching between Notion for tasks, a separate habit tracker, another app for time tracking, and yet another for journaling. The cognitive load of context-switching between apps was ironically making me less productive. I needed something unified, fast, and secure.
But here's the kicker: CodeniTask wasn't born yesterday. This project had been sitting in my "started but never finished" pile for months. Half-implemented features, integration bugs, broken imports from my other productivity tool (ClickRise), and a UI that needed serious polish. Day 8 of my "Demolishing My Stack of Unfinished Projects" series was all about taking this ambitious productivity suite from "almost there" to "actually shipped."
The technical debt was real:
-
Subtask functionality was disabled due to bugs
-
Two-way sync between CodeniTask and ClickRise was broken
-
No demo experience for new users
-
Task creation UI needed refinement
-
Security vulnerabilities in dependencies (including React Server Components CVE)
The Solution: A Unified Productivity Platform with Real-Time Everything
CodeniTask combines four essential productivity tools into one cohesive platform:
1. Habit Tracking with Streak Monitoring
Because seeing that 47-day streak is the motivation you need to not break the chain.
2. Task Management with ClickRise Integration
Import projects, create tasks, and manage everything from a single inbox. The project selector lets you filter tasks by project, and you can even create ClickRise tasks and Bugginator bugs directly from CodeniTask.
3. Pomodoro-Style Time Tracking
Track your work sessions with full history. No more wondering where your day went.
4. Encrypted Daily Journaling
Your thoughts stay yours. End-to-end encryption ensures privacy.
Technical Details: Modern Stack, Real-Time Magic
The Core Tech Stack
Frontend:
-
Next.js 16 with React 19 — Leveraging the latest features including Server Components
-
Shadcn UI + Tailwind CSS — Beautiful, accessible components out of the box
-
dnd-kit — Drag-and-drop task reordering that actually feels smooth
-
Tiptap — Rich text editing for journal entries
-
React Hook Form + Zod — Type-safe form validation
Backend & Database:
-
Convex — Real-time database synchronization. When I mark a task complete, it updates instantly across all devices. No refresh needed.
-
Stack Auth — Secure authentication that just works
Security & Quality:
-
Implemented encryption for daily journal entries
-
Fixed React Server Components CVE vulnerabilities (PR #6)
-
Semantic versioning with automated releases
-
Comprehensive analytics tracking
The Breakthrough Moments
1. Re-enabling Subtasks
Subtasks were causing race conditions and state management headaches, so I'd disabled them. This week, I rewrote the subtask logic to work cleanly with local tasks:
feat: Re-enable subtask functionality for local tasks feat: Add double-click to edit subtasks inline
Now you can double-click any subtask to rename it inline. Smooth UX, zero friction.
2. Two-Way Sync with ClickRise
The integration between CodeniTask and ClickRise was my white whale. Tasks created in one app needed to sync to the other, and marking tasks as complete should work bidirectionally. After fighting with the Convex mutations and handling edge cases around duplicate titles and project associations, I finally cracked it:
-
Detect projects automatically and add new projects to both systems
-
Mark tasks as completed from either platform
-
Handle broken imports gracefully using MCP (Model Context Protocol)
-
Smart duplicate handling: allow duplicate titles for completed tasks while preventing them for active ones
3. Demo Dashboard for First-Time Users
Nothing kills conversion like a blank dashboard. I built a fully interactive demo that showcases all features without requiring signup:
feat: Add fully interactive demo dashboard feat: Add demo button to landing page and home link to demo banner
New users can click around, create demo tasks, test the Pomodoro timer, and see exactly what they're getting before committing.
4. Task Creation UX Overhaul
Creating tasks now intelligently detects your selected project and can create:
-
Regular CodeniTask tasks
-
ClickRise project tasks
-
Bugginator bug reports
All from the same unified interface. The project selector filters your inbox, giving you focused views when you need them.
Dependency Security
I merged PR #5 and #6 to bump Next.js from 16.0.1 to 16.0.10 and patch React Server Components CVE vulnerabilities. Security isn't glamorous, but it matters.
Results: A Productivity Suite That Actually Ships
Deployment: https://codenitask.vercel.app
Repository: https://github.com/codenificient/codenitask
The numbers tell the story:
-
12 major milestones completed in one focused push
-
10+ feature releases via semantic versioning
-
3 critical PRs merged for security and stability
-
100% functional demo experience
-
Real-time sync between multiple productivity platforms
What Got Built:
✅ Habit tracking with visual streak indicators
✅ Drag-and-drop task management with subtasks
✅ Pomodoro timer with session history
✅ Encrypted journal with rich text editing
✅ Two-way sync with ClickRise
✅ Project-based task filtering
✅ Interactive demo dashboard
✅ Mobile-responsive design
✅ Production-ready deployment on Vercel
Key Takeaways: Finishing What You Start
1. Integration Complexity Compounds Quickly
Two-way sync between platforms is deceptively hard. State management, race conditions, and edge cases multiply. I spent more time on integration logic than on any individual feature. The lesson? Design your data models with integration in mind from day one.
2. Demo Experiences Drive Conversion
Building that interactive demo was worth it. Letting users experience the full app without signup reduces friction dramatically. If you're building a SaaS, build the demo early.
3. Real-Time Sync Is a Game-Changer
Convex made real-time updates almost trivial. The developer experience is fantastic, and users notice instantly. No more "Did my change save?" anxiety.
4. Security Debt Sneaks Up on You
Those CVE notifications aren't optional. Taking time to patch dependencies and properly encrypt sensitive data (like journal entries) is non-negotiable.
5. Feature Flags Are Your Friend
I disabled subtasks when they were buggy rather than shipping broken features. Once I fixed the underlying issues, re-enabling them was straightforward. Ship stable, iterate fast.
Conclusion: One Less Project in the Pile
CodeniTask went from "promising but broken" to "actually useful" in one focused sprint. It's now my daily driver for habits, tasks, time tracking, and journaling. The real-time sync means I can start a task on my laptop and mark it complete on my phone without thinking about it.
If you're drowning in productivity apps or just curious about building real-time applications with Next.js 16 and Convex, check out the live demo at codenitask.vercel.app. The code is open source on GitHub.
What's your biggest productivity pain point? Are you using multiple tools that should really be one? Drop a comment—I'm always curious how other developers manage their workflow.
Day 8: Done. One more completed project. Let's keep the momentum going.
This is Day 8 of my "Demolishing My Stack of Unfinished Projects" series. Follow along as I finish what I started, one project at a time.
Tech Stack Summary
-
Framework: Next.js 16, React 19
-
Database: Convex (real-time sync)
-
Auth: Stack Auth
-
UI: Shadcn, Tailwind CSS
-
Features: dnd-kit, Tiptap, React Hook Form, Zod
-
Deployment: Vercel
Links:
-
Live App: https://codenitask.vercel.app