Skip to main content
A project management SaaS where teams can create workspaces, organize tasks on Kanban boards, invite collaborators, and upgrade to a paid plan. The finished product includes user authentication, a free tier with limits, a Pro subscription via Stripe checkout, transactional email notifications, and one-click deployment to Netlify.By the end of this recipe you will have a production-ready app that you can customize, rebrand, and launch as your own product.

Tech stack

You do not need to understand these technologies. Rocket handles them automatically. This table is for reference.

Architecture overview

Here is how the pieces connect:
  1. A visitor signs up using Supabase Auth (email/password or social login).
  2. After signup, they land on a dashboard where they can create a workspace and start adding tasks (stored in Supabase).
  3. The workspace owner can invite team members by email. Resend delivers the invitation.
  4. When the team is ready to unlock higher limits, the owner opens the pricing page and completes a Stripe Checkout session to subscribe to the Pro plan.
  5. Stripe webhooks update the subscription status in Supabase, and Resend sends a receipt email.
  6. The entire app is deployed to Netlify with environment variables configured for each service.

How long does it take?

Step-by-step build

1

Start a new project

Open rocket.new and create a new project. Give Rocket a detailed description of the app so it scaffolds the right pages, layout, and navigation from the start.
Be specific about the pages and layout you want in your first prompt. The more detail you give, the less back-and-forth you will need later.
2

Connect Supabase

Go to Integrations in your Rocket project and connect your Supabase account via OAuth. Create a new Supabase project (or select an existing one), then ask Rocket to set up the database schema.
Rocket handles the Supabase connection through OAuth, so you never need to copy API keys manually. Your credentials are encrypted and stored securely.
3

Build the signup and login flow

Now wire up authentication so users can create accounts and sign in. This prompt connects Supabase Auth to the signup and login pages that Rocket already scaffolded.
After Rocket builds the auth flow, preview the app and create a test account. Check the Supabase dashboard to confirm the user appeared in the auth.users table and that the profiles trigger fired.
4

Create workspaces and task boards

This is the core of the product. Users create a workspace, then manage tasks on a drag-and-drop Kanban board.
5

Add team member invitations

Let workspace owners invite collaborators by email. This step introduces the team collaboration flow.
The email notification for invitations will be connected in Step 8 when we add Resend. For now, the invitation logic works through the database.
6

Connect Stripe for billing

Go to Integrations and connect Stripe using your test mode API keys. Then ask Rocket to build the subscription backend.
Use Stripe test mode keys during development. The test card number 4242 4242 4242 4242 with any future expiration and any CVC will simulate a successful payment.
7

Create the pricing page

Build a public-facing pricing page that drives conversions and handles the checkout redirect.
8

Add email notifications with Resend

Go to Integrations and connect Resend by pasting your API key. Then set up transactional emails for key user actions.
Resend provides a free tier of 100 emails per day, which is plenty for development and early launch. You can upgrade later as your user base grows.
9

Deploy to Netlify

Go to Integrations and connect Netlify, then deploy your app to the web.Use the Launch button in your Rocket project to deploy to the web. Rocket handles the Netlify build configuration automatically. Make sure all required environment variables are set in your project’s integration settings before launching.
After deploying, update your Supabase redirect URLs to include your app’s live URL. Go to your Supabase dashboard, navigate to Authentication > URL Configuration, and add https://your-app.builtwithrocket.new to the allowed redirect URLs.
10

Go live

Before sharing your app with real users, swap out all test credentials for production keys.
  • Replace your Stripe test API keys with live keys in the project environment variables
  • Recreate your Stripe products and prices in live mode (they do not carry over from test mode)
  • Update the Stripe webhook endpoint in the Stripe Dashboard to point to your production URL
  • Customize Supabase email templates with your app’s branding and enable email confirmations to prevent spam signups
  • Test the full flow on the production URL: sign up, create a workspace, add a task, invite a member, and complete a real Stripe checkout with a small amount
Double-check that your Stripe live webhook secret matches the one in your Netlify environment variables. Mismatched secrets are the most common cause of payment processing failures after launch.

Customization ideas

Once the base product is running, here are ways to extend it.
Track user behavior to understand how people use your app. Instrument events like workspace created, task moved, member invited, and plan upgraded.Use Mixpanel funnels to measure your signup-to-paid conversion rate.
Let users generate task descriptions, summarize project progress, or get smart suggestions for task assignments using OpenAI.
Expose a REST API so power users can automate task creation, query workspace data, or integrate with external tools like Zapier.
Build an internal dashboard for yourself to monitor signups, revenue, and usage metrics without leaving the app.
Make the app work well on phones and tablets, or generate a standalone mobile app from your Rocket project.

Troubleshooting

This usually means the Stripe webhook is not reaching your app. Make sure Stripe is connected in your project’s Integrations panel, then ask Rocket to investigate:
Also confirm you are using the correct mode (test vs. live) in both Stripe and your project’s environment variables.
After deploying, Supabase may still be configured to redirect to your development URL. Ask Rocket to update the auth settings:
You can also update this directly in your Supabase dashboard under Authentication > URL Configuration.
First, verify that Resend is connected in your project’s Integrations panel. If it is connected but emails still are not arriving, ask Rocket to debug:
During development, Resend only delivers to the email address on your Resend account unless you have verified a custom sending domain.
If the app loads but shows no data, Supabase row-level security policies may be blocking access. Ask Rocket to fix it: