Inspiration

During hackathons, personal projects, and even while working in early-stage companies, I consistently lost momentum on small but critical follow-ups. Teams spent time nudging blockers, reminding teammates through ad-hoc messages, and trying to close communication loops manually. When no paid task tracking tools were available, the friction of micromanagement or worse, simply forgetting small actions quietly stalled progress.

I wanted a super lightweight project butler something that quietly keeps work moving forward without becoming an intrusive management tool. A system that works equally well for personal productivity, fast-paced hackathons, and resource-constrained teams and personal use.


What TaskButler Does

TaskButler is a personal and team-oriented project butler that gently keeps projects moving.

Email Onboarding

  • Email verification during sign-up
  • Password reset at any time
  • Light and dark theme support

Personal Workspace

  • Create a personal workspace for solo use
  • Add projects and tasks for individual tracking
  • Track deadlines automatically
  • Overdue and upcoming items surface in the Nudge Inbox

Team or Company Workspaces

  • Create shared workspaces for teams, hackathons, or companies
  • Invite members using a simple invite code
  • Assign tasks to teammates
    • Assignees receive in-app notifications
    • Task(assign, block) progress updates propagate instantly
  • Projects and tasks
    • Create projects within a workspace
    • Assign tasks, set due dates, and add comments
    • Status changes reflect immediately across the team

Manager Dashboard

  • Per-workspace overview of projects
    • “In Progress” vs “Completed” at a glance
  • Quick visibility into what is moving, blocked, or needs attention
  • Adding and removing teams to workspace

Nudge Inbox

  • Centralized inbox for overdue and time-sensitive items
  • Helps individuals and teams catch up without constant manual chasing

How I Built It

TaskButler was built using a clean, Dart-focused stack optimized for rapid iteration and tight Flutter integration.

  • Frontend: Flutter (cross-platform mobile + responsive UI)
  • Backend: Serverpod (monolithic backend in Dart 3.8) with generated clients and protocols
  • Authentication: Custom email auth using serverpod_auth_idp with branded UI/UX
  • Infrastructure: Docker Compose + PostgreSQL on Ubuntu VPS
  • Email: Gmail SMTP (app password)
  • Deployment:
    • Multi-stage Docker builds
    • Auto-applied database migrations
    • Zero-downtime deploys

Challenges I Ran Into

SMTP in Production( After deploying to serverpod cloud) Serverpod Cloud restricts outbound SMTP and many providers reject unverified and free domains. I migrated to a self-managed VPS to control outbound traffic and SMTP configuration, ensuring reliable email delivery.

Custom Authentication UI Replacing Serverpod’s default auth pages required deep alignment with generated endpoints, session handling, and protocol contracts. Once understood, the result was a clean, product-aligned authentication flow.

OTP Length Assumptions Serverpod defaults to 8-digit OTPs, while most mobile UX assumes shorter codes. This required UI adjustments and planning for configurable OTP policies.


Accomplishments I’m Proud Of

  • Stable end-to-end email registration and verification
  • Fully custom authentication flow
  • Reproducible Docker-based deployment
  • Firebase push notifications triggered from Serverpod
  • Workspace creation and invite-based onboarding
  • Correct task visibility per workspace
  • Strong debugging discipline using structured logs

What I Learned Building with Serverpod

Serverpod as a Productivity Multiplier Serverpod’s full-stack Dart model reduced cognitive overhead. Shared protocols and generated clients enabled rapid iteration without sacrificing correctness.

Customization Requires Understanding Serverpod is opinionated but extensible. Understanding its internals made customization predictable rather than fragile.

Production Email Is Non-Trivial Reliable email delivery requires infrastructure ownership, not just configuration.

Defaults Shape UX Framework defaults like OTP length directly impact user experience and must be considered early(this happens only when we use serverpod cloud).

Focused Shipping Wins Delivering polished core workflows mattered more than feature breadth.

Opportunities to Contribute Back

  • Configurable OTP policies
  • Better auth customization docs
  • Production email guidance

Why Serverpod Was the Right Choice

Serverpod’s monolithic Dart backend, Flutter integration, and generated APIs allowed me to focus on product behavior rather than glue code ideal for hackathons and small teams.


What’s Next

  1. HTTPS + custom domain (Nginx/Caddy + Let’s Encrypt)
  2. Adjustable OTP policies with rate limiting
  3. Observability and alerting
  4. Collaboration polish and RBAC
  5. AI-assisted nudges and summaries
  6. Workload and performance metrics
  7. Image Attachment
  8. Open-source release

Thanks for reading. TaskButler keeps projects moving forward quietly and effectively.

Built With

Share this project:

Updates