How to build a project & task manager with v0
A custom project tracker running in your browser and connected to a real database. You start with the Kanban board and task details, link all four views to one shared dataset, and enable live sync with security rules. Customize each step using simple AI prompts, reviewing every code update before accepting it.
v0
$ Build the screens for a project tracker: a project list, a Kanban board with draggable cards, a task drawer, a list view, a calendar, a timeline, and a dashboard, then connect a database and the routes that make all four views read the same tasks.
- Board and drawer sketched
- One model behind four views
- Ready to merge
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
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.
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.
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.
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.
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.
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.
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.
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 · BasecampRenting 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
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
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
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
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
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.
Why build with v0
v0 starts with the screens: forms, tables, dashboards, whatever the interface needs, generated in React and Next.js from a plain description. That’s the part most people notice first, because it’s fast and it looks finished immediately.
The backend isn’t automatic in the same way. v0 can write it too, meaning Next.js routes and server logic that read and write real data, but you ask for it, usually once the UI already exists and there’s something real to connect it to:
Sketch
Describe the screen or component you want.
Preview
See it rendered live, and select any part of it to adjust directly.
Connect
Add a database and the routes that read and write to it, once the UI needs somewhere real to save.
Iterate
Prompt again for the next screen or the next piece of logic.
The order matters here more than with a full-app builder: v0 gets you a finished-looking interface fast, and the data underneath doesn’t show up until you ask for it and give it somewhere to live.
One clickconnects a database
Supabase, Neon, and Upstash are integrations you add from the project menu once a screen needs to hold onto something real, and v0 provisions the credentials and writes the routes that use them.
Live preview is the feedback loop
Every prompt updates the working interface right there in the chat, so you see the actual screen changing instead of imagining it from a description.
Design mode edits without a prompt
Select an element in the live preview, adjust its style directly or type a plain-language instruction, and v0 applies the change back to the real source code as a new version.
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 v0
From scratch, with v0- v0
- $0 ($5/mo of credits) to $30+/month (Plus)
- Backend (Supabase)
- Free tier · $25/month (Pro plan)*
- Hosting (Vercel)
- Free on Vercel’s Hobby plan
- Your time
- ~118 hrs
Free to try the idea, ~$30+/month on Plus while you build a real one, then whichever plan you keep using
v0 bills in dollars of credit rather than a flat fee, so cost tracks usage: importing the pre-built template can fit inside Free’s $5 a month, while a from-scratch build runs into Free’s 7-messages-a-day cap quickly and usually needs Plus, at $30 per user per month with no annual discount shown. Because v0 generates the interface and the backend as separate steps rather than one pass, expect more prompts to reach the same result than a tool that writes both together.
* 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, v0.app, v0.app and vercel.com, checked August 2026.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
The board appears the moment you describe it. The database, the routes, and the live feed that keep all four views honest arrive once you ask. The same work as the rows above, done in two passes rather than one, each chat landing on a branch of its own.
Estimate your exact build timeframe
Uncheck any features your team doesn’t need to see your build time drop immediately.
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.
Let’s set up the tools you need
v0 runs entirely in the browser too, so there’s no download and no terminal. Before step 01: sign up, pick a plan, and know that a database is one click away once a screen actually needs to save something. GitHub is the last piece, and it’s what turns the chat into a project you can hand to someone else.
v0 account
Sign in with a GitHub, Google, or email account and you land in a chat where you describe the interface you want. There’s nothing to install.
Sign up for v0v0 subscription
Free includes $5 of credits a month, capped at 7 messages a day, which is fine for trying a few screens and thin for a real build. Plus is $30 per user per month, billed monthly only (v0’s pricing page shows no annual option), and it’s the realistic floor once you’re iterating past a handful of screens.
Compare v0 plansDatabase (Supabase, Neon or Upstash)
Where your project keeps its data, added when a screen needs one. v0 generates the interface first. A database is a one-click integration you add from the project menu once a screen needs somewhere real to save to, with Supabase, Neon and Upstash as the options, and connecting one lets v0 write the routes that use it.
Connect a database in v0GitHub connection
Not needed to build anything, since v0 keeps its own history of every change. Connect a repository from the chat’s Git panel and v0 also commits every code-changing message to its own branch, ready to merge as a pull request. That is the step that turns the chat into a project other tools, and other people, can use.
Connect v0 to GitHubThe database step is the one worth not skipping once your screens need real data. Everything else here takes a couple of minutes, and after that you’re just describing what you want.
Build your project tracker, one chat at a time
The interface comes first with v0 and the backend arrives when asked for, which genuinely helps one part of this build and genuinely endangers another. Most of a project tracker is screens, and generating four views quickly is exactly what v0 is for. The risk is that four views generated before a schema exists will each invent the task they wanted, so the second chat is a hard stop where one model retires every placeholder at once.
- 01
Sketch the board and the drawer, because that is what v0 leads with
The board, a task drawer, and a project list with invented content, in one chat. The point is to look at how a card and a task actually read before anything is stored anywhere.
PromptSketch the tracker screensBuild the core screens for a project and task manager in Next.js, using placeholder content for now. A project list. A Kanban board with columns and draggable cards, each card showing a title, a priority, an assignee, a due date, and counts of subtasks and comments. A task drawer that opens over the board with a description, subtasks, a comment thread, and a start/stop timer. A dashboard shell with room for charts. Include one column holding twenty cards so I can see what a real one looks like rather than three tidy examples, and show me the empty state for a board with no tasks. Keep it responsive. Somebody will open this on a phone to move one card.
Use Design mode for the visual corrections rather than describing them. On a board, the drop targets, the card density and how a column reads on a narrow screen are most of the product, and those are exactly what Design mode is for.
- 02
Connect the database, then retire every placeholder at once
The hard stop. Add the integration from the project menu, then ask for one schema and the routes over it, and take the invented data out of the screens you just looked at before you build a single new view.
PromptModel it once, and decide whose it isA Supabase integration is now connected to this project. Design one schema and the routes that read it, then take the placeholder content out of the screens already built. 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 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 of deliberately different shapes: one with two boards, one with sixty tasks, one whose tasks have no due dates. Write server-side routes for the project list, a board with its columns and tasks, and a single task, and wire the existing screens to them. Before you start, state which of two access shapes this schema assumes (a project belongs to one person, or a project has members), and if it is members, put that table in this migration.
Get this done before another view exists. Everything after it reads real rows, and a calendar or a timeline generated against invented tasks will have quietly decided what a due date and a start date are, which is a decision you then have to find and undo in two places instead of making once here.
- 03
Make the board’s dragging real, in its own chat
The board exists and looks right. What it does not yet do is remember. This is a small chat with one genuinely fiddly thing in it.
PromptBuild the boardNew chat, for the board’s writes. Make the drag-and-drop real: on drop, a server-side route persists the card’s new position and its new column, and the screen reconciles against what the route returns rather than keeping an optimistic move the database refused. Be explicit in the diff about how reordering works: whether a drop rewrites one row or every card in the column, and what happens if two people reorder at the same moment. Keep the columns and cards rendering in their stored order rather than whatever order the query happened to return. Then let me check it: drag a card, reload, confirm it stayed, and open the board in a second window, drag a card in one, and tell me plainly that the other does not update, since realtime is not in this chat.
Ask for the reorder strategy in words as well as code. Rewriting every card in a column on every drop is the version that arrives naturally, reads perfectly, and gets slow and contentious on the first board that has two hundred cards on it.
- 04
The other three views, and a live feed, in a chat each
Three views over the rows the board already shows, then the subscriptions that keep them honest. Separate chats, because you will restore a version in one of them.
PromptAdd the other three viewsTwo chats. First, the remaining three views, reading exactly the same tasks through the same routes, with no new fields anywhere: a list view sortable and groupable by column, priority, assignee and due date, filterable, editable in place, with subtasks nested under their parent. A calendar view on a month grid by due date, with a labelled place for tasks that have none rather than dropping them. A timeline view drawing a bar from a task’s start date to its due date, handling a missing start or end honestly instead of inventing a range. Second chat, live updates: subscribe to changes on projects, boards, columns, tasks, comments, time entries and notifications, feeding one shared cache so a single change reaches all four views rather than each one re-fetching. Tell me which tables I have to enable realtime on in Supabase, since it is off by default. Then prove it: two windows, a card dragged in one, the list and the calendar moving in the other.
Keep the subscriptions in their own chat and their own pull request. It is the change most likely to need restoring, and you do not want the three views travelling backwards with it, which is exactly what happens when one long chat carries both.
- 05
Auth and access rules, in a separate chat and its own pull request
Everything your team is working on now sits in a database with a live feed pointed at it. Separate chat, separate pull request, read on its own.
PromptAdd auth and the access rulesNew chat, for authentication and access rules. Add email-and-password sign-up, login, logout, a persisted session, and a profile row per account. Then row-level security on every table, matching the access shape declared back in step 02. Owner-only: a person reads and writes their own projects and everything beneath them, and a task is additionally readable and updatable by its assignee, and if that is the shape, say so plainly in the pull request, including that an assignee cannot open the board their task belongs to, plus the smallest policy change that would let them. Members: a membership row grants access, and every policy on boards, columns, tasks, comments and time entries checks it through one security definer function rather than a repeated subquery. Either way: explicit with-check clauses on inserts and updates, notifications readable only by their addressee, and a deliberate decision about the accounts table, since reading only your own row is the safe default and it means an assignee picker returns one name. Then prove four things as a second signed-in account: it cannot read my project, cannot read my tasks, cannot read my time entries, and is not pushed my rows by the realtime subscription.
Give this its own pull request rather than stacking it on the views. Of every change in this build, the access rules are the one you will most want to read back as a single self-contained diff in six months, when somebody asks you what stops one client seeing another client’s board.
- 06Destination
The drawer’s insides, the dashboard, then merge and deploy
Subtasks, comments with files, the timer, the notifications, the charts, a day worked through the app with two accounts, and only then the merge that publishes it.
PromptFinish the task, the dashboard, and rehearseLast chat. Fill in the drawer: description, priority, due date, assignee, subtasks I can add and tick, and a comment thread with file attachments served through signed URLs with an expiry, generated for somebody allowed to see the task, rather than a public bucket. 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 route or component is doing that arithmetic. Then notifications raised by triggers on assignment and on comment, arriving live in a dropdown. Then the dashboard: tasks by status, overdue work, workload by assignee, and where tracked time went, with the headline counts computed server-side and scoped to the signed-in account rather than a query the browser could widen. Then walk a full day with me using two accounts in two browser profiles: create a project, fill a board, drag a card and watch the second window, assign across accounts and see the notification land, run 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 before the merge, not after. This is the chat that turns your tracker into something people would actually keep work in, and a merge into the branch your Vercel project deploys from is the moment a mistake stops being yours alone.
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.
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.
Paste this into the chat before launch so v0 checks 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.
What speeds the build, and what slows it
Speeds the build
- One screen per message, checked in the live preview before you ask for the next one
- Adding a database as soon as a screen needs to remember something, so v0 wires it up as it builds
- Clicking the thing you want changed in Design mode, rather than describing where it sits
- One feature per chat, so its history reads as a straight line you can walk back
- Sending a finished chat over to GitHub before starting the next feature, rather than stacking several together
Slows the build
- Asking for the whole app in one message instead of one screen at a time
- Building screens for data the database does not hold yet
- Describing which button to change when you could just click it
- Letting one chat run for weeks, so going back to an older version undoes everything built after it
- Approving several messages in a row without looking at the preview after each one
Connecting GitHub (Optional)
Every change in v0 is saved automatically without any technical setup. You only need to link GitHub if you want a private copy under your own control or plan to hand the codebase over to external developers.
Every message is a version
Each time a message changes your code, v0 saves it as a new version. Restoring an older one adds it back as the newest version instead of branching, so the history stays one straight line.
Versions, v0 docsUndo from the chat itself
Scroll back through the conversation and click the revert arrow on any earlier reply, or open the version number in the top right to jump straight to a specific one.
Connecting GitHub creates a real repository
From the chat’s Git panel, connect an existing repository or create one. v0 never writes straight to your main branch: every code-changing message is committed to its own working branch first.
GitHub integration, v0 docsA pull request is how it gets merged
When you’re ready, publish and open a pull request from that working branch into your base branch, review it like any other, and merge it. Starting a new chat picks up a fresh branch for the next round of changes.
This can also be v0’s deploy path
If the branch your pull requests merge into is also the linked Vercel project’s production branch, merging one triggers a production deployment. If it isn’t, the merge just follows whatever branch behavior that Vercel project is already configured with.
GitHub integration, v0 docsWhere 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).
| Host | Best for | Notes | Free tier |
|---|---|---|---|
| Vercel | One-click deploys | Connect 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) |
| Netlify | Drag-and-drop or Git | Point 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 Pages | Teams in several countries | The 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 Pages | Not really this app | Free 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 Hosting | Teams already on Google | One 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 Hosting | Teams already on AWS | Deploys 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) |
| Surge | Publish from the terminal | One 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 Platform | DigitalOcean users | Builds 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.
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.
| Service | Best for | Notes | Free tier |
|---|---|---|---|
| Supabase | Data, auth, files, live updates | Projects 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 |
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.
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.
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.
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.
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.
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.
v0 doesn’t ship its own model for these prompts, so you bring an API key for whichever provider you want, and v0 writes the route that calls it. Start with a cheap model while you’re still iterating on the prompt itself, then swap in a stronger one for the version that ships, and keep every AI feature behind that one route so there’s only one key to rotate.
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.
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.
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 ThomasFounder & CEO, Hado.aiCommon 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. You describe the screen you want in the chat and v0 generates the React and Next.js code behind it. Sign up, pick a plan, and connect a database once your screens need real data. The setup section above walks through each one.
Both, but not automatically at the same time. v0 generates the interface first. The backend (a database and the API routes that use it) is something you ask for once a screen actually needs to save or load real data.
Free plan credits reset monthly, and the 7-messages-a-day cap resets every day. If you hit either limit mid-build, what you’ve already built stays put. You wait for the reset or move up to Plus to keep going right away.
References
Sources checked August 2026- 01Breaking down the infinite workday (Microsoft Work Trend Index special report, June 2025). microsoft.com (report published June 2025)
- 02Pricing (per-user tiers, free-tier limits, the Premium views feature line), Trello. trello.com
- 03Pricing (per-user tiers, both billing bases, free-tier user cap, Timeline and Gantt on Starter), Asana. asana.com
- 04Pricing (per-seat tiers across product lines, 2-seat free plan), monday.com. monday.com
- 05Pricing (per-user tiers, free-tier storage cap, separate AI plans), ClickUp. clickup.com
- 06Pricing (per-user plan and flat-rate unlimited-user plan), Basecamp. basecamp.com
- 07Pricing (Pro plan, free-tier limits, project pausing), Supabase. supabase.com
- 08Web developer hourly rates 2026 (freelance and agency benchmarks). developex.com
- 09Row Level Security, Supabase docs. supabase.com
- 10Postgres Changes (realtime), Supabase docs. supabase.com
- 11Storage access control, Supabase docs. supabase.com
- 12v0 homepage. v0.app
- 13Pricing (Plus, Business), v0. v0.app
- 14Pricing details (Free tier, credit rollover), v0 docs. v0.app
- 15Databases (connecting Supabase and others), v0 docs. v0.app
- 16Full-stack apps, v0 docs. v0.app
- 17GitHub integration, v0 docs. v0.app
- 18Deployments, v0 docs. v0.app
- 19Design mode, v0 docs. v0.app
- 20Versions, v0 docs. v0.app
- 21Pricing (Hobby plan), Vercel. vercel.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. v0 is a product of Vercel. Verify current capabilities and pricing before relying on them.