Build with AI

How to build a project & task manager with Claude Code

Stop paying per person for a board, a list, a calendar and a timeline. Describe your projects, your columns and your idea of done in plain words, and Claude Code writes the one data model all four views read, the card position that survives a refresh, the live updates, and the rules deciding who may open which project.

August 2026 · 53 min read · Updated September 2026

Claude Code

$ Build a project and task manager: projects with boards and columns, tasks with a priority, a due date, subtasks, comments and attachments, the same tasks shown as a board, a list, a calendar and a timeline, a start/stop timer that totals onto the task, live updates across every view, and rules deciding who may open which project.

  • One model, four views
  • Live updates and access rules proven
  • Ready for you to review
You describe it, Claude Code builds it
Start here

What a project & task manager actually is

One list of tasks, viewed four different ways, by a whole team at once. Most of the complexity in project management comes from that single sentence, not from how any app looks.

Strip the design away, and a task manager is surprisingly simple: projects, boards, columns, tasks, and basic details like assignees, due dates, comments, and time spent. That much you could sketch on a napkin.

What makes it powerful is that the same data answers four distinct questions. A board asks where work stands and in what order. A list asks how to sort and filter hundreds of tasks instantly. A calendar focuses purely on deadlines, ignoring tasks without dates. A timeline maps out start and end dates to show project flow. Four views, one dataset, four ways to keep everyone clear on priorities.

Then real teamwork happens. Someone moves a card while a teammate is checking the same task in a list. Someone tracks time, steps away, and returns to find the task updated. This is where a tracker turns from a simple spreadsheet into shared team infrastructure, where the real value is in instant clarity, not just drag-and-drop mechanics.

Four ways to see your work

If you build views as separate features, you end up with conflicting truths, where a deadline shows on your calendar but vanishes from your timeline. Building them on a single dataset means changing a date anywhere instantly updates it everywhere, keeping your workspace reliable and effortless to maintain.

Card position sets team focus

Moving a card isn’t just a visual tweak. It resets team priorities. Storing order directly at the data level ensures that a card sitting third in a column stays third across page refreshes, mobile devices, and colleague screens. Your workflow stays locked in, no matter who moves what.

Real-time accuracy by default

The moment two people use a tracker, a stale screen means two colleagues confidently disagreeing on project status. Instant real-time updates guarantee everyone works from the exact same reality, eliminating double work, constant pings, and manual refreshes.

What work looks like without one place for it

275

interruptions a day (a ping about every two minutes of an eight-hour day) among the most-pinged fifth of the workers in Microsoft’s June 2025 study of its own telemetry and a survey of 31,000 knowledge workers. Read the qualifier rather than the headline: this is the top 20% by ping volume, not the average person. It is still the clearest picture available of what happens when the state of the work lives in everybody’s inbox instead of somewhere both of you can look.

Microsoft Work Trend Index special report, published June 2025 · checked report published June 2025

What a project tracker needs

The parts every project tracker is built from

The first of these six is the foundation for all the rest. Get that one right, and the entire system stays clear, reliable, and effortless to use.

01

One single truth across four views

A board, a list, a calendar, and a timeline aren’t four separate tools: they are four ways to look at the exact same work. When you update a deadline in a list, it must change instantly on the timeline and calendar. Keeping every view synchronized on a single dataset prevents conflicting information and eliminates duplicate work.

02

Card position drives real team priorities

If a task sits third in a column, it represents a team priority. That position needs to survive page refreshes, mobile app views, and colleague updates. Dragging a card isn’t just a visual adjustment: it sets what your team focuses on next, so that order must remain rock-solid for everyone.

03

Instant real-time synchronization

A project tracker is only useful if everyone sees active data. Changes should appear instantly, without requiring anyone to press refresh. The moment information gets stale, two colleagues end up confidently disagreeing on project status or repeating the same work. Live updates keep the entire team aligned.

04

The task is where your team’s memory lives

Beyond due dates and assignees, a task holds essential context: subtasks, attachments, and the discussions behind key decisions. Standard fields tell you what needs to be done, but the conversation explains why. Six months later, that comment thread is the only reliable record of how a project was delivered.

05

Time tracking only works if the numbers add up

A simple start/stop timer is easy, but real value comes from automatic rollups. Time entries must attach cleanly to tasks and people, survive page reloads, and calculate totals automatically. Done right, you instantly know what a project actually cost to complete. Done wrong, you get confusing numbers nobody trusts.

06

Clear permissions and privacy from day one

A solo workspace functions differently than a shared team hub. Establishing who can view or edit specific projects keeps client data private while keeping internal collaboration open. Setting these access boundaries upfront protects sensitive work as your business grows.

Build vs buy

Buy it once or pay per user forever

Popular tools like Trello, Asana, Monday, and ClickUp charge anywhere from $5 to $30 per user every month. Before comparing features, answer one question: how many team members, contractors, and clients will ever need access? Per-seat pricing quietly turns your business growth into a recurring monthly penalty.

Build your own

An app you own has no seat meter on it. The views everybody else keeps behind an upgrade are just queries, and with an AI coding tool writing the schema, the access rules, and the live updates, that build is weeks rather than quarters.

  • The eleventh person to need a look at the board costs nothing, so adding somebody is not also a budget conversation
  • A board, a list, a calendar and a timeline are four queries over one table rather than a plan tier
  • Your projects live on your own domain, not a workspace subdomain somebody else owns
  • Every task, comment, attachment and tracked minute is in your own database, queryable without an export request
  • What a column means, what counts as done, and which fields a task carries are yours to change in a sentence
  • Nothing gets taken away when a vendor reshuffles its tiers, because there are no tiers

Rent the tracker

Trello · Asana · monday.com · ClickUp · Basecamp

Renting a tracker buys you 15 years of ready-made infrastructure: automated workflows, tool integrations, mobile apps, client access, and instant customer support. This template provides none of these out of the box: it trades turn-key convenience for complete data ownership and zero per-seat fees.

  • Working the day you sign up, with mobile apps, notifications that reach a phone, and a support contract behind them
  • Automations and rules, so a card moving can assign somebody without you writing a trigger
  • Integrations with the tools work actually arrives through, a category this template does not attempt
  • Real multi-person collaboration out of the box: invites, guests, and permissions, which this template genuinely does not have
  • Notifications that leave the building. This template raises them inside the app and sends nothing out of it
  • Four of the five bill per person per month, and two of them put the timeline view itself behind that bill
TrelloFree, then $5 (Standard), $10 (Premium), and $17.50 (Enterprise) per user/month billed annually - $6 and $12.50 billed monthly for the first two

Here first because its own pricing page states this guide’s argument more plainly than we could. The Premium column carries the feature line “Views: Calendar, Timeline, Table, Dashboard, and Map”, so the four views this template ships are the reason to upgrade, and neither the Free nor the Standard column lists a view feature at all. Its free tier is generous where it matters least: “Unlimited cards”, but “Up to 10 collaborators per Workspace”, “Up to 10 boards per Workspace”, and “250 Workspace command runs per month”.

trello.com · checked August 2026

Asana$10.99 (Starter) and $24.99 (Advanced) per user/month billed annually, or $13.49 and $30.49 billed monthly, with Enterprise quoted on request

The same story at a higher price point. Its free Personal plan includes “List, board, and calendar views” and stops there. Timeline and Gantt begin on Starter, which the page describes as “a clean, simplified scheduling view” plus “detailed project management features like task hierarchy and progress tracking”. Personal is capped at “Up to 2 users can collaborate for free”, so the free tier is out for a team of three before any feature comparison starts. And read this promise carefully: “Add as many team members as you need without hitting a cap or paying extra per person” is about seat caps, not the per-seat bill, which continues.

asana.com · checked August 2026

monday.comFree (up to 2 seats), then €9 (Basic), €12 (Standard), and €19 (Pro) per seat/month billed annually on its Work Management plans

The clearest per-seat ladder of the five, and the one that prices the same product several ways depending on what you call your team: its CRM and Service plans at comparable tiers run €12 to €28 and €31 to €45 a seat. Two honesty notes. The page served euros rather than dollars, so euros are quoted. And its Work Management columns showed us annual figures only. The CRM columns showed both bases and advertised “billed annually saves 33%”, so month-to-month runs higher here by an amount we cannot state without inventing it. Its team-size selector starts at three seats.

monday.com · checked August 2026

ClickUpFree Forever, then $7 (Unlimited) and $12 (Business) per user/month billed annually - $10 and $19 billed monthly - with AI sold separately at $9 or $28 per user/month

The counter-example on seats, and the one whose free tier fails in an instructive way. Free Forever advertises “Unlimited Tasks” and “Unlimited Free Plan Members”, so the meter is “60MB Storage” rather than people, roughly a dozen photographs, and the wall you meet the first time somebody attaches files to a task. The other thing to notice is the separate AI ladder: the assistant is its own per-user line on top of the plan, at $9 or $28 a user a month.

clickup.com · checked August 2026

Basecamp$15 per user/month billed monthly (Pro), or $299/month billed annually for unlimited users (Pro Unlimited) - free for one project and up to 20 users

The honest exception: one well-known vendor does sell a way off the seat meter, and its page says so: “Unlimited users, no per-user fees”, “Your whole organization for one fixed price”. The arithmetic is ours, not theirs, and it is why this row is here: $299 a month against $15 per user means the flat plan only pays off around twenty people, so for a small team it is the dearer of Basecamp’s own two options. Roughly $3.6k a year, in perpetuity, for software.

basecamp.com · checked August 2026

Rule of thumb: if work arrives from a dozen other systems, if clients need guest access, if people live in the mobile app, or if somebody in compliance needs an audit trail, rent. Those are real products and none of them is a weekend of describing. If what you want is your team’s work in one place, in the views you find useful, with fields that match how you talk about it, and a bill that does not grow every time you hire, that is the half worth owning. Two things to weigh either way. This template ships with a project belonging to one person, and the shared-workspace version is an addition described in the steps below rather than something already built. And the paid tier you would replace is more than a paywall over four views: the automations, the integrations, and the phone in somebody’s pocket.

No dev needed

Why build with Claude Code

Most software looks simple from the outside, but it’s mostly hidden plumbing: a database, logins, permissions, validating forms, and dozens of screens that read and write records. Building all of that yourself means being fluent across the full stack, so weeks go to parts customers never see before the first real feature works.

Claude Code removes that barrier. The whole workflow becomes a simple loop:

The build loop
1

Describe

Say what you want in plain words in any language.

2

Build

It writes and edits real code across backend, auth, and UI.

3

Check

Run the app and see the change actually work.

Repeat

Ask for the next thing. Repeat.

Loop back to Describe

No stage of that loop asks for the full-stack expertise or the months of boilerplate that stop most people, which is why one person can ship a working app in a couple of weeks.

Three hard partshandled for you

The data model, authentication, and access rules are what make software like this genuinely hard to build by hand. Describe them and Claude Code scaffolds all three. After that, the rest is mostly screens on top.

Any language is the interface

No code to write, and no English required either. Whether you need a new field, a renamed step, or an AI summary, describe it in whatever language you think in and Claude Code handles the implementation.

Whole project in context

It finds and reads the files a change touches, instead of needing you to paste them in, so each edit stays consistent with what is already there. Point it at the two or three files that matter and it stays fast.

What it costs

Pay a developer, or do it with AI

Neither option charges you per seat. A workspace built for ten colleagues costs the exact same as a workspace built for one.

Hire a developer

Custom build, from scratch
Developer
~$13k-$50k
Supabase (backend)
Free tier · $25/mo (Pro plan)*
Hosting
$0 free tier
Build time
~250 hrs of their work

~$13k-$50k to build, then from $25/mo after launch

Our ~250-hour estimate, priced at the rates in the survey linked below: it has senior US developers at $100-$150+ an hour, and agencies charging 20-40% more than the freelancers they bid against, which is where $50/hr and $200/hr come from rather than from a shrug. Read the distribution rather than the total, though. Roughly a third of those hours go on the access rules, the live updates, and the arithmetic that rolls tracked time onto a task, and none of the three can be photographed. It is why a quote for “a Kanban board” tends to come back at a multiple of what the mockups implied.

Build it with Claude Code

From scratch, with Claude Code
Claude Code
$20/month (Pro) to $200/month (Max)
Backend (Supabase)
Free tier · $25/month (Pro plan)*
Hosting
$0 on a free tier
Your time
~118 hrs

~$20-$200/month while you build, then whichever plan you keep using

Claude Code itself is free. The cost sits in the Claude plan behind it. The fee doesn’t shrink when you start from a template the way a per-hour developer bill would: Pro, at $20/month, covers a template import or a short build, and a from-scratch build that runs for weeks tends to need the $100-$200/month Max plan instead, because it outlasts Pro’s usage window. Either way, the template changes how many of the hours in the estimator above you actually spend, not which Claude plan you’re paying for.

* Ignore the 500 MB database limit. Tasks and comments are text, and text is small. Two other free-tier lines matter. The 1 GB of file storage is what attachments spend, and it goes faster than you expect once people start dragging screenshots onto cards. And a free project pauses after a week of inactivity, which for a tracker means the week your team quietly drifts back to a spreadsheet. Pro, from $25/mo, ends the pause, takes file storage to 100 GB and egress to 250 GB (then $0.09 per GB), and keeps a daily backup for 7 days.

What separates the two columns is which way the bill moves. Renting gets more expensive with every person who joins. Owning costs the same at thirty people as at three, and the only line that shifts is whichever AI model you choose to call. One of those two shapes suits a team that is growing, and growing is the only thing anybody is trying to do.

Prices and rates from supabase.com, developex.com and claude.com, checked August 2026.

Plan first

Decide before you build

Define six core rules before writing a single line of code. Getting the first rule right sets the foundation for your entire system.

01

Whether this is yours or your team’s

Decide early if this tracker is for one person or a team. A solo tracker is simple. A shared system requires access control for every project, view, and live update. Changing this after the system is built means rewriting your security rules from scratch.

02

What a project contains, and how deep it goes

Project, board, column, task is one shape. Project, task, subtask is another. Milestones or sprints are a third. Write two or three of your own real projects out longhand and see which they fall into. Wrong nesting is the thing you feel every day.

03

Which views you will actually live in

Four views is what the products you are comparing against charge for, not automatically what you need. Pick the one you would open by default and build it properly before adding a second. A timeline costs most and gets used least: it needs start dates, and nobody enters those unless forced.

04

What done means, and who is allowed to say so

Your columns are a workflow whether or not you call it that. Write the sequence out, decide whether anybody may move any card or only its assignee, and decide what happens to a finished card: it stays, it archives, it disappears. Cheaper to write now than to migrate later.

05

Whether you track time, and what you will do with it

Tracked time is only worth the friction if somebody reads it. Billing by the hour makes it the point of the application and it should be one press to start. Otherwise it is a field that makes every task feel like paperwork. If you do track it, settle whether one person may see how long a colleague took.

06

Where the files go, and who may open them

Attachments turn a task into a record, and they carry this app’s sharpest privacy edge. A contract or a screenshot of a customer’s account is not a Kanban card. Decide whether a file is readable by anybody with the link or only by people who may see the task: two different systems, and the easy one is the leaky one.

Approaches

Comparing your build options

Designing screens is the fast part. The real work is real-time synchronization, data consistency, and user permissions across four live views. Here is how three build approaches compare in time and complexity.

~250 hrsBuilding by hand

The four views are not the expensive part. What costs you the month is that they are four readings of one set of rows, and every one of them has to stay honest while somebody drags a card, starts a timer, and posts a comment on a different machine. Getting one view right takes an afternoon. Getting the fourth one to agree with the first three, live, is the job.

~185 hrsGeneric UI starter kit

A kit hands you a board, a table, a calendar widget, and a dashboard shell, which looks like most of a project tracker and is the half you would have finished anyway. None of it knows what a project is, who may open one, that reordering a column is a fact to be stored, or that the person in the next room needs to see the card move. All of that is still yours.

~118 hrsBuilt with Claude Code

Ask for one piece at a time and the migration, the query behind a view, and the component drawing it land as a single change, which is what stops the four views drifting apart. The rows above describe the same task list. This one is worked by something that reads the surrounding code before it edits any of it.

Interactive calculator

Estimate your exact build timeframe

Uncheck any features your team doesn’t need to see your build time drop immediately.

What your project tracker needs

Your estimate

118 hrs

start to finish

Based on the 7 of 7 features you’ve selected, plus ~26h of groundwork. Toggle any on the left to watch the number move, and open the groundwork row to untick what you have already, such as a database that is already running or going live if you are only building a mock-up for now.

A rough estimate, not a quote. Real time depends on how much you customize and how clean your data is.

Setting up your workspace

Let’s set up the tools you need

Four things need to be on your machine before step 01, and none of it takes more than about 15 minutes. Three are ordinary installers you click through, and the fourth is an active Claude subscription. From there, you build simply by describing what you want, in your own words.

1

Claude Code

Cost: Free to install · needs a paid plan to build with

Your main AI assistant. Download and run the free Claude Code CLI, connect your Anthropic account or pay-as-you-go API key, and build your app in plain English. It runs in the Terminal, and if a command line puts you off, the same tool ships as a desktop app with buttons and windows.

Install Claude Code
2

Claude subscription

Cost: $20/month (Pro) or from $100/month (Max)

Claude Code itself is free, but the free Claude.ai plan does not include Claude Code access at all, so you need at least Pro, unless you pay as you go through a Console account instead. Pro at $20/month is enough to start with, though a long, from-scratch build tends to outrun what Pro allows in a given stretch, which is when people move up to Max, from $100/month. Every plan’s usage resets on a rolling window, so on a heavy day you may hit a limit and have to wait it out.

Compare Claude plans
3

Node.js engine

Cost: Free

The engine that runs your app on your own computer. You never have to learn how it works: download the version marked LTS (the most stable one), install it, and forget about it.

Download Node.js (LTS)
4

Supabase (database)

Cost: Free to start

Where your project keeps its data. Install it, then sign in once by running supabase login. Words like migrations and row-level security turn up later in the guide, and Claude Code writes those parts for you.

Install Supabase CLI

Nothing here is worth memorizing. These four just need to exist on your machine. From step 01 on, you say what you want and Claude Code runs the commands.

Step by step

Build your project tracker, prompt by prompt

You write no code at all: you say what you want, and Claude Code runs the commands. Two things about the order below are worth knowing before you start. The data model gets a step of its own, because four views over a half-decided schema is the one mistake here you cannot cheaply undo. And the live updates go in before the access rules, so that adding the rules forces you to prove they reach the live feed too.

  1. 01

    Boot it, then write down the two rules the build leans on

    By the end of this you have an empty app talking to your own database, and a CLAUDE.md holding the two sentences that decide how the next five steps go.

    PromptSet up the project
    Set up a new React 18 + Vite + TypeScript project with Tailwind and the Supabase JS client. Read VITE_SUPABASE_URL and the publishable key (the sb_publishable_… key, which replaces the older anon key) from .env, and add .env to .gitignore in the same step so neither value reaches GitHub. Add a typed Supabase client under src/lib, then write a short CLAUDE.md describing the stack and fixing the vocabulary for a project and task manager (project, board, column, task, subtask, comment, attachment, time entry, notification) and recording two standing rules. First: the board, the list, the calendar and the timeline are four readings of one tasks table, never four features with their own ideas of what a task is, so any new field is added once to the model and then surfaced in whichever views need it. Second: whether somebody may read a row is decided in the database rather than in a component, and that includes rows pushed by a realtime subscription. A live feed is a read like any other.

    Put both rules in the file, not just in this message. The second one is the one that gets quietly broken: filtering a list in the component is the natural thing to write, it works perfectly while you are the only account signed in, and the failure it causes is invisible until somebody else logs in.

  2. 02

    Model it once, and decide now whether anybody else is coming

    The step that determines what the rest of the build costs. Nothing is being displayed yet, which makes this the cheap moment to find out your projects do not nest the way you assumed.

    PromptModel it once, and decide whose it is
    Write the data model as Supabase migrations, with no authentication yet. Projects with a name, description, colour and an owner. Boards belong to a project. Columns belong to a board with a stored position. Tasks belong to a column with a title, description, priority, status, due date, an optional start date for the timeline, an assignee, a stored position within the column, and an optional parent task so a subtask is just a task with a parent. Comments belong to a task with an author and an optional attachment path. Time entries belong to a task and a person with a start, an end, and a duration. Notifications belong to a person. Seed three projects with deliberately different shapes: one with two boards, one with sixty tasks so I can see what a list of real size looks like, one with tasks that have no due date at all, and tell me before you write it which of these two access shapes you are building for: a project belongs to one person, or a project has members. I want to pick, because it changes the policies in step 05 and it is expensive to change afterwards.

    Answer that question out loud before you let it proceed. One owner per project is a real, useful product and much less work. A shared workspace needs a membership table from this migration onwards, and retrofitting one means rewriting every rule, every view’s query, and the live feed at the same time, which is exactly the change nobody wants to make in month three.

  3. 03

    The board, and a card that stays where you dropped it

    The first view, and the one with a genuinely awkward piece of work in it. Dragging looks visual. The part that matters is that the new order is written down.

    PromptBuild the board
    Build the Kanban board over the model: columns across the screen in their stored order, task cards inside them in theirs, drag-and-drop to move a card within a column and between columns, and a column header showing its count. When a card is dropped, write the new position, and the new column, to the database, then reconcile against what comes back rather than leaving the screen showing a move the server refused. Make the card itself carry a priority, an assignee, a due date, and a count of its subtasks and comments. Then show me two things by running them: drag a card, refresh the page, and confirm it is still where I put it, and open the same board in a second browser window, drag a card in one, and tell me plainly whether the other window updates, because I have not asked for live updates yet and I want to see for myself that it does not.

    That last instruction is worth the extra minute. Watching the second window stay stale is what makes step 04 concrete rather than an abstraction, and it is the moment most people realise a project tracker is not a form over a database.

  4. 04

    The other three views, then make all four live

    A list, a calendar and a timeline over the rows the board is already showing, then the subscriptions that stop any of them going stale. This is where the "one model" rule earns back the time it cost.

    PromptAdd the other three views
    Add the remaining three views over exactly the same tasks, with no new fields and no second source of truth. A list view: sortable and groupable by column, priority, assignee and due date, filterable, with editing in place and subtasks nested under their parent. A calendar view: a month grid by due date, with a clearly labelled place for the tasks that have none rather than dropping them. A timeline view: a bar per task from its start date to its due date, with an honest treatment of tasks missing one or both rather than an invented range. Then add realtime: subscribe to changes on projects, boards, columns, tasks, comments, time entries and notifications, and have every view update from the same cache so a change arrives everywhere at once instead of being re-fetched per screen. Tell me which tables I have to enable realtime on in Supabase, since it is off by default, and then prove it: two windows, drag a card in one, and the list and the calendar in the other move without a reload.

    Ask what the timeline does with a task that has no start date, and do not accept “it defaults to the created date” without thinking about it. A bar that quietly invents a range is worse than a task that honestly does not appear, because you will make plans on it.

  5. 05

    Sign-in, then the rules, including the ones the live feed needs

    Everything your team is working on is now in the database, and a live feed hands rows out. Two things happen in this step, and the second is the one people skip.

    PromptAdd auth and the access rules
    Add Supabase Auth with email and password: sign-up, login, logout, a persisted session, a profile row per account created by a trigger, and a useUser hook. Then row-level security on every table, built for the access shape I chose in step 02. One owner: a person reads and writes their own projects and everything under them, and a task is additionally readable and updatable by its assignee, and if I picked that, tell me straight out that an assignee will not be able to open the board their task sits on, and offer the smallest change that fixes it. Members: a membership row grants access, every policy on boards, columns, tasks, comments and time entries checks it through a SECURITY DEFINER function rather than a subquery per policy, and only an owner may add or remove members. Either way: explicit WITH CHECK on every insert and update, notifications readable only by their addressee, and a deliberate decision about the accounts table, since reading only your own row is the default and means an assignee picker gets one name back. Then prove four things as a signed-in account: a second account cannot read my project, my tasks, or my time entries, and (this one matters most) subscribe to the tasks table as that account and show me the live feed does not push my rows to it.

    That fourth check is the whole reason the live updates went in first. A subscription is a read, and if your policies are not in place the feed happily delivers rows the query path would have refused. It is the least-visible hole in an app of this shape, and the only way to know is to open a second account and watch.

  6. 06
    Destination

    The task’s inner life, the dashboard, and a day in two browsers

    Subtasks, comments with files, the timer that totals, notifications, and the numbers over the top. Then the part most builds skip: use your own tracker as two different people at once.

    PromptFinish the task, the dashboard, and rehearse
    Finish the app. The task drawer first: description, priority, due date, assignee, subtasks I can add and tick off, and a comment thread with file attachments. For those attachments, do not make the storage bucket public. Use signed URLs with an expiry, generated for somebody allowed to see the task, and tell me what that costs in complexity so I can decide. Then time tracking: a start/stop timer, one running entry per person, entries that survive a reload, and a database trigger totalling them onto the task so no screen is doing that arithmetic. Then notifications raised by triggers on assignment and on comment, arriving live in a dropdown. Then a dashboard: tasks by status, what is overdue, workload by assignee, and where tracked time went, with the headline counts computed server-side and scoped to the signed-in account. Then walk me through a working day using two accounts in two browser profiles: create a project, fill a board, drag a card and watch the other window, assign across accounts and see the notification arrive, start a timer and confirm the task total moves, post a comment with a file and check what the other account can and cannot open, and confirm the dashboard agrees.

    Do the rehearsal with two real accounts in separate browser profiles rather than by switching your own. Almost every mistake left in an app of this shape is invisible to one signed-in person, and the two that always turn up are a view that shows rows it should not and a live feed that pushes them.

Authentication & security

Who sees what and how your data stays safe

A project tracker stores sensitive details: client budgets, internal notes, and confidential attachments. Here is how to keep your workspace secure and prevent accidental data leaks.

Hand off authentication to standard services

Use built-in database authentication for sign-ups, password resets, and user sessions. Building custom login systems adds unnecessary security risks with zero business upside.

Define clear project ownership and team roles

By default, a project belongs to a single owner while assignees view their tasks. Ensure your access rules allow team members to view the full boards their tasks actually live on.

Protect team profiles and user accounts

Users should only access necessary teammate details like display names and avatars. Restricting full user account rows prevents exposing sensitive user profile data across your workspace.

Enforce security in the database, not the design

Hiding a card in the interface doesn’t make it secure. Setting security rules directly inside the database guarantees that permissions stay intact across every view and future feature.

Test permissions with multiple user accounts

A workspace often looks fully secure when you are the only person signed in. Test access rules with different user roles before launching to spot hidden permission gaps early.

Secure real-time feeds against data leaks

Live updates and instant feeds must obey the exact same security rules as standard queries. Otherwise, real-time updates can accidentally push hidden task details to unauthorized users.

Use private links for file attachments

Public file URLs allow anyone with the link to access your documents. Switch to private, expiring links to protect internal contracts, client screenshots, and sensitive uploads.

Restrict notification preview content

Notifications often include task comments or status updates. Ensure notification feeds inherit access rules so sensitive details aren’t exposed through activity alerts.

Scope dashboard metrics to authorized data

Task counters and dashboard summaries can quietly reveal project activity across restricted boards. Ensure overall totals only count items that the signed-in user is permitted to see.

Treat tracked time as sensitive employee data

Time logs record work patterns and daily schedules. Decide who can view teammate hours upfront and ensure your time-tracking policies align with local privacy obligations.

Enable daily backups before going live

Free database tiers do not create automatic backups of your tasks, discussions, or history. Upgrade to a paid tier ($25/mo) for daily backups before your team relies on this tracker as their main workspace.

PromptCheck who can see what
Review the access rules (row-level security policies) on every table. For each one, tell me in simple terms who can view, add, edit, and delete records, confirm that people can only reach their own data while the right roles can reach more, and flag anything left open that shouldn’t be.

Run this before launch to make sure nobody can see data they shouldn’t.

One rule outranks the rest here: the database service key and any AI provider key live on the server and nowhere else: not in the app your team downloads, and not in a public repository. Treat either one that escapes as burned, and replace it the same day.

Workflow rules

What speeds the build, and what slows it

Speeds the build

  • A CLAUDE.md notes file that spells out your setup and preferences
  • Asking for a plan first on anything that touches several files
  • One change per request, small enough to describe in a sentence
  • Pointing it at the two or three files that matter
  • Running the app and checking each change before the next
  • Saving a working version (a git commit) after each step, so you can undo

Slows the build

  • Vague prompts like “make it better”, which leave it guessing what you meant
  • Asking for a whole feature in one giant prompt
  • Dumping the entire project into the chat at once
  • Skipping the notes file, so it forgets your conventions each session
  • Accepting changes without running or reading them
  • No saved versions to roll back to when something breaks
Version control

Git: what it is, and why you need it

Before you build anything, meet the one tool that makes building safe. You need no coding background for it: Git remembers every version of your project, so you can try things, break things, and get back to a working state in seconds.

What Git actually is

Git is a quiet recorder that runs alongside your project. Each time you save your work it keeps a full snapshot, so the entire history of your project lives on your computer, not just whatever the files look like right now.

Why you need it

Claude Code runs inside a permission mode you choose, either asking before each change or working more freely once you trust it. Either way, experiments sometimes still break things. Git is what makes that safe: there’s always a working version to return to, so you can try bold changes without the fear of losing what already works.

A commit is a save point

Each commit is a snapshot with a short note, like “added the home page”. Make one after every working step and you can jump back to any of them later.

GitHub’s beginner guide to Git

Undo anything, safely

If a change breaks something, you roll back to the last good commit instead of unpicking it by hand. It’s the safety net that makes bold experiments with Claude Code low-risk.

GitHub is Git’s home online

Git lives on your computer. GitHub is a free, private cloud copy of the same project. It’s your backup if your laptop dies, and the place Claude Code can always get back to. Keep it private, and never commit secret keys or passwords.

Create a free GitHub account

You rarely type git commands

You do not have to memorize any of it. Ask Claude Code to “commit this” or “undo the last change” and it runs the git steps for you. Prefer clicking to typing? Claude Code’s own desktop app, which you install separately, shows each change side by side before you keep it, and GitHub Desktop gives you plain buttons for saving and rolling back.

Get the Claude Code desktop app
Going live

Where to host your application

Hosting gives your app a home on the internet so anyone can open it via a web link. Choose a service below to make your site live. (Your database, logins, and business records are stored separately in Supabase, covered below).

HostBest forNotesFree tier
VercelOne-click deploysConnect the repository and every push ships itself, with no configuration for a Vite project. Check which plan you belong on first: Hobby is licensed for personal, non-commercial use, and software your company runs its projects through is commercial however few of you there are, so Pro, at $20/user/mo.Pro from $20/user/mo (Hobby is non-commercial)
NetlifyDrag-and-drop or GitPoint it at your repository, or drag the built folder onto the page and be live in a minute. Do add the redirect rule it asks for: skip it and a URL aimed straight at one task answers not-found, which is the URL this app exists to hand out.Free tier
Cloudflare PagesTeams in several countriesThe app is served from wherever the person opening it happens to be. The case for it is a team spread across time zones, which is also the case where two people watching one board update is worth testing rather than assuming.Generous free tier
GitHub PagesNot really this appFree publishing straight from a GitHub project, after one routing setting. Listed to be ruled out: free means a public repository, and this repository sits next to every project your team runs and every file dragged onto a card.Free from a public repo only
Firebase HostingTeams already on GoogleOne round of configuration, then one command per release forever. No argument for it comes from the app itself. The argument is that your logins, documents and calendars are already Google.Free Spark tier
AWS Amplify HostingTeams already on AWSDeploys from the AWS console, and wants the same rewrite rule so a link to one task lands on it. You pick it because AWS is already on the invoice.Free tier (build + hosting)
SurgePublish from the terminalOne command puts the built folder online, no repository involved. Handy for letting a colleague try the board before you commit. Wrong for the address people bookmark.Free - unlimited publishing
DigitalOcean App PlatformDigitalOcean usersBuilds and serves inside the DigitalOcean account you already have. The whole case is one fewer supplier and one fewer invoice, which in a small company is a real one.Free - 3 static sites, 1 GB/mo transfer

All eight serve the app well enough that speed is not the deciding question. Three others are. Does the plan permit commercial use, given Vercel’s Hobby tier does not and a tracker your company works in is commercial by any reading. Does it publish from a private repository, given what this code sits beside. And does a deep link resolve for a browser that has never seen your site, because a URL pointing at one task is the link your team will share most.

One thing to check on the day you go live, and it is not the hosting. The live feed only works on tables you enabled it for. A board that has stopped updating in a second browser is the failure your team meets on day one and you never do, because you are usually the only person looking.

Database & backend

Keep your data in Supabase

Projects, boards, tasks, comments, attachments, tracked time, and the accounts they belong to. This is also where the rules deciding who may read which project live, and where the live feed comes from.

ServiceBest forNotesFree tier
SupabaseData, auth, files, live updatesProjects and tasks live in Postgres, accounts come out of its auth service, attachments and avatars go to its storage, and its realtime feed is the thing keeping your board, list, calendar and timeline in agreement across two browsers. Setting it up is opening a free project and handing the app two values: the project URL and the publishable key. The detail to remember afterwards is that realtime is opt-in per table, so it does nothing at all until you switch it on for each one.Free tier, then usage-based
AI workflows

Where AI genuinely helps a project tracker

There is no AI anywhere in this template, so the first prompt below is two pieces of work in one: it adds a feature, and on the way it creates the single server-side function the other four call through. Each of the rest is then one request.

Turn a wall of notes into tasks you can drag

Most projects begin as a page of meeting notes or a long message, and the tax is retyping it into cards. This is the right first feature: contained, useful the day it lands, and it never writes to your board without you.

PromptTurn a wall of notes into tasks you can drag
Build me a server-side ai function (a single place, with my provider key on it and nowhere else) plus a screen where I can paste notes, a message, or a brief. Send the text to that function and get back proposed tasks: a title, a one-line description, a suggested priority, an assignee only where the text names somebody, and a due date only where the text gives one. Show them as a reviewable list I can edit and delete from, then create into a board I pick, with nothing written until I press create. Where the text is vague, say so rather than inventing a date: “next sprint” comes back as no date and a note saying why, not a Friday you chose.

A weekly summary drawn from what actually happened

The status update is the most-resented recurring task in any team, and it is derivable: the board already knows what moved, what slipped, and what nobody touched.

PromptA weekly summary drawn from what actually happened
Add a “summarise the week” action on a project that gathers what changed over a date range I choose (tasks created, tasks that moved column, tasks completed, due dates passed unmet, and comment activity) and sends only that activity summary to my ai function, with no attachment contents. Have it return a short written update in three parts: what moved, what is stuck, what is due next. Compute every count with a query and let the model only do the writing, so no figure is invented. Print the date range on the result, and where a section is empty say nothing happened rather than padding it.

Find the work that has quietly stopped moving

Every board grows a layer of cards nobody has touched in a month and nobody wants to close. Surfacing them is easy arithmetic. The useful part is a sentence about why each looks stuck.

PromptFind the work that has quietly stopped moving
Add a panel listing tasks that look stalled (no column change, no comment, and no tracked time for a number of days I set), sending each one’s title, age, column and last activity to my ai function for one line on what appears to be blocking it and one suggested next step. Send no attachment contents and no comment text beyond the most recent. Order by how long each has been still, show the actual dates beside each row so I can check the reasoning, and where there is too little activity to say anything useful, have it say so rather than guess.

Estimate from your own history instead of your optimism

Once a few hundred finished tasks carry time against them, the tracker knows something you do not: how long this kind of work really takes here. Better than anybody’s instinct.

PromptEstimate from your own history instead of your optimism
Add an estimate suggestion on a new task. Query my own completed tasks for similar ones (same board, similar title, same priority) with their tracked totals, send those durations and titles to my ai function, and have it return a suggested range plus one line naming which past tasks it drew on. Show the sample size beside the suggestion, and refuse to suggest anything from fewer than five comparable tasks rather than guessing. It is a suggestion in a field I can overwrite, never a value written automatically.

Ask your own board a question in plain words

Your dashboard answers the questions you had when you built it. What comes up later (“which projects slipped this quarter”, “where did the time go”, “who is carrying too much”) are queries you should not have to build a screen for.

PromptAsk your own board a question in plain words
Add a panel where I ask a question about my own projects in ordinary words and get an answer with the numbers behind it. Have my ai function turn the question into a read-only query over my own data, run it under my own access rules so it can never reach a project I cannot see, and use the model only to explain the result. Show the query it ran and the figures it used under every answer, state the period and the number of rows involved, and where the sample is too thin to support the answer, say so.

Each prompt above picks the model that fits the job. As a rule of thumb, that is Haiku for high volume, Sonnet for everyday writing, and Opus for deeper reasoning. Model names move faster than this page does, so check the current list in the Claude docs (linked in the references below) before you build. Send every one of these prompts through that same ai function, so one key and one set of rules governs all of them.

Ready-made option

Get a head start with our template

All three routes above start at an empty folder, and that is not the only available starting line. This tracker already exists and already runs, so the weeks that four agreeing views, live updates, and tracked time that adds up properly would have taken become an afternoon of typing in your own projects.

Project & Task Manager

The exact project tracker this guide builds, packaged so you can open it, point it at your own backend, and make it yours from there. A project workspace where your team's work lives in projects and boards and then shows up however suits you, as a Kanban board, a list, a calendar, or a timeline. You assign tasks, track time, comment, get realtime notifications of changes, and watch progress add up in the analytics.

React 18ViteTypeScriptTailwind CSSSupabase
Out of the box

The key benefits of starting with a template

The four views already read one model, the board already remembers where you dropped a card, and every screen already updates itself. That is most of what this saves you. Behind it, subtasks, comments with attachments, the timer, the notifications, and the dashboard are done too.

Building the core from scratch

~118 hrs

Opening the template, already built

~1 hr

~117 hrs of building you skip

Two measurements of deliberately different things. Building it yourself is the ~118 hrs. Adopting the built one is the ~1 hr: open it, aim it at a database of your own, and get a first project and a real board in. Working out your columns, your fields and your definition of done costs the same on either path, so neither figure includes it.

Four views over one set of rows

A Kanban board with drag-and-drop between columns, a list you can sort and filter, a calendar over due dates, and a timeline, all reading the same tasks, so a change in one is a change in all four. Position is stored per task, which is why a card you moved is still where you left it after a refresh and in somebody else’s browser.

Live updates already wired through every view

Subscriptions on projects, boards, columns, tasks, notifications and time entries, feeding a query cache rather than re-fetching the world, so a card moving, a comment landing, or a timer starting shows up without a reload. Fiddly to add later and invisible when it works, which is a bad combination to be building under deadline.

The task, with everything hanging off it

Priority, description, due date, assignee, subtasks (tasks with a parent, so they inherit the board and column rather than living in a second model), comments with file attachments, and a start/stop timer whose entries roll up into the task’s total through database triggers rather than arithmetic in a screen.

Accounts and 85 declared policies over them

Email-and-password sign-in with a profile row per person, and 85 row-level security policies declared across the migrations as the rules were written and tightened, settling on a project owned by one account, with a task also readable by whoever it is assigned to. Read the honest note in the security section above before you plan a shared workspace on top of it: making this a several-people tracker is a described addition, not a setting.

A dashboard and analytics that already count something

Completion, workload, overdue work and where the tracked time went, drawn as charts, with the headline counts coming from a server-side function scoped to the signed-in account rather than a query the browser could widen. Plus notifications raised by database triggers when a task is assigned or commented on, arriving live in an in-app dropdown.

A codebase your AI tool can keep extending

Everything typed, hooks grouped by what they query, folders named after features instead of file extensions, and a comment anywhere the reasoning would not survive a cold read. The views are where that returns the favour: a fifth one is the change you are most likely to ask for, and the four already there demonstrate how a view is supposed to put its question.

Customer story

From founders who build on our templates

We needed a working product in front of users fast. I started from one of these templates instead of a blank repo, customized it in our AI tool, and shipped in days - not the weeks it usually takes.
Jeevan ThomasJeevan ThomasFounder & CEO, Hado.ai
Got questions?

Common questions

As it ships, personal, and this is the first thing to know before you compare it with anything. A project belongs to one account, and the rules on boards, columns and time entries all check that ownership. A task is additionally readable by its assignee, but the board it sits on is not, so a colleague cannot open the board. There is no invite flow, no membership table, and no roles. Making it a genuine several-person tracker is a well-defined addition (a record of who is on which project, and every rule consulting it), and it is a described step in the build below. If you are one person with several clients, none of this is a limitation.

No, and getting that right is most of what makes this application cheap to change. The board, the list, the calendar and the timeline are four ways of asking about one table of tasks: which column and in what order, how to sort several hundred, which have a due date this month, which span a range of days. Build them as projections of one model and a fifth is an afternoon. Decide early what the timeline reads, though: a bar needs a start as well as an end, and most task records only carry a due date until somebody insists.

No. Notifications are rows written by database triggers when a task is assigned or commented on, and they arrive live in a dropdown inside the app. No mail provider sits anywhere in it, so nothing reaches an inbox or a phone. Connecting an email service is a small, well-defined addition, and it is the one most teams want first: a tracker nobody has open is a tracker nobody reads, and one email a day is usually the difference.

That your screen changes when somebody else changes something, without you reloading. The app subscribes to changes on the tables it cares about and updates its own cache as they arrive, which is why a card dragged in one browser moves in another within a second. Two practical notes: the feed is opt-in per table, so it does nothing until you enable it, and it hands out rows like any other read, so your access rules have to apply to it, or it becomes the one place they do not.

No. This is the half an AI coding tool is best at. Say what you want to happen in ordinary language and you get back the tables, the accounts, the rule deciding who may open which project, the stored position that keeps a dragged card where you dropped it, the triggers that total tracked time onto a task, and the subscriptions that keep four views in agreement. The part left to you is opening a free Supabase project for all of it to be written into.

One level, and it is worth knowing how it works: a subtask is an ordinary task with a parent, inheriting the parent’s board and column rather than living in a separate model. That is a good design (everything that works on a task works on a subtask for free) and it means going deeper is a change to the interface rather than the schema. Resist deeper for a while: a checklist inside a task is usually what people actually wanted.

A timer you start and stop on a task, writing entries against a person, with database triggers totalling those entries onto the task itself, so the number on the card is arithmetic rather than a field somebody remembered to update. It records time rather than billing or invoicing for it. If billing is the point for you, the total per task per person is the figure you would export, and that is a query rather than a feature.

Yes, on comments, and the second half of that question needs a real answer rather than a reassuring one. The template writes careful storage rules checking whether the reader uploaded the file, owns the project, or is the assignee, then makes the bucket public so the URLs work, which takes reads back out of those rules. Anybody with the link can fetch the file. For internal notes that may be fine. For a customer’s document it is not, and signed expiring links are a short change the security section above spells out.

Yes. Columns are rows in a table, not code, so renaming, reordering, or adding one is data. What is worth deciding deliberately rather than drifting into is the rules around them: whether anybody may move any card or only its assignee, and what happens to a card once it is done. Two sentences that save a lot of arguing, and much cheaper now than once your team has habits.

The bill has two lines, somewhere to hold the data and somewhere to serve the app, and both have a free tier. When your team is genuinely working in it, the upgrade to make is Supabase Pro from $25/mo: partly for the file storage attachments consume, mostly to stop the pause, because a free project sleeps after a quiet week and a sleeping tracker sends everybody back to a spreadsheet. Nothing else on that bill responds to somebody joining. Add an AI feature and you also pay whichever model you call.

Nothing here is proprietary. Your projects, tasks, comments, and time entries sit in plain PostgreSQL tables any Postgres host will accept from a standard dump, and the attachments are files you can copy like any others. That is worth more than it sounds here: the comment thread explaining why something was built that way exists nowhere else, and it is exactly what makes a platform expensive to leave.

Yes, and do it before anybody bookmarks anything. Each host above attaches a domain in a few clicks, HTTPS included. The reason to hurry is unglamorous: this is an app whose URLs get pasted into chat all day long, and every link shared before you move is a link that breaks the moment you do.

No, though you will type the occasional command: installing Claude Code, starting the app, applying a database change. The setup section above lists what you need, with a link for each, and once it’s on your machine Claude Code runs most of those commands for you.

Claude Code turns the real code into an app you can publish, with a database and user accounts. An Artifact is a one-file preview, good for a quick look but not for going live.

Claude Code’s plans reset on a rolling window rather than billing per token, so a heavy day of building can bump into a limit. You either wait for it to reset or move up a plan. Max gives more headroom for a long, from-scratch build. Nothing you’ve already built is lost either way, so the work only pauses.

References

Sources checked August 2026
  1. 01Breaking down the infinite workday (Microsoft Work Trend Index special report, June 2025). microsoft.com (report published June 2025)
  2. 02Pricing (per-user tiers, free-tier limits, the Premium views feature line), Trello. trello.com
  3. 03Pricing (per-user tiers, both billing bases, free-tier user cap, Timeline and Gantt on Starter), Asana. asana.com
  4. 04Pricing (per-seat tiers across product lines, 2-seat free plan), monday.com. monday.com
  5. 05Pricing (per-user tiers, free-tier storage cap, separate AI plans), ClickUp. clickup.com
  6. 06Pricing (per-user plan and flat-rate unlimited-user plan), Basecamp. basecamp.com
  7. 07Pricing (Pro plan, free-tier limits, project pausing), Supabase. supabase.com
  8. 08Web developer hourly rates 2026 (freelance and agency benchmarks). developex.com
  9. 09Row Level Security, Supabase docs. supabase.com
  10. 10Postgres Changes (realtime), Supabase docs. supabase.com
  11. 11Storage access control, Supabase docs. supabase.com
  12. 12Plans and pricing (Pro, Max), Claude. claude.com
  13. 13What is the Max plan?, Claude support. support.claude.com
  14. 14Set up Claude Code, Claude docs. code.claude.com
  15. 15Models overview, Claude docs. platform.claude.com

This guide is general information, not legal or employment advice. What you may record about how long an employee worked, and how long you may keep it, varies by country and by state, so check your own rules before you switch time tracking on for other people. Third-party prices, plan terms, and market rates are quoted from the sources above and were last checked on the date shown. Vendors change them without notice, so confirm before you budget. Build hours and the cost estimates derived from them are our own estimates, not quotes. Claude, Claude Code, and the Anthropic API are products of Anthropic. Verify current capabilities and pricing before relying on them.