FAQ

Last updated on 2026-09-02

General

What's the difference between this and the frontend-only CRM kit?

The frontend-only kit gives you 35+ screens of UI with mock data from data/seed.ts. This full-stack kit gives you 45 routes with a real Supabase backend: 19 database tables, Supabase Auth with social login, full-text search, Kanban pipeline with database persistence, Server Actions for all CRUD operations, activity auto-logging via triggers, and team management with role-based access.

Do I need both kits?

No. This full-stack kit includes all the dashboard UI from the frontend-only version, plus the entire backend. If you want a working CRM, get this one. If you only need UI components to wire to your own backend, the frontend-only kit is sufficient.

Can I use this for a production CRM?

Yes. Deploy to Vercel, set up a Supabase project, and you have a working CRM. You will want to customize the pipeline stages, add your own team members, and potentially integrate with an email service for sending real emails.

Does this kit include Stripe or payments?

No. Unlike the e-commerce full-stack kit, this CRM kit does not include payment processing. The billing page under Settings is a placeholder. If you need subscription billing for your CRM product, you can add Stripe separately.

Supabase

Do I need Supabase, or can I use another database?

The kit is built for Supabase. All auth, database queries, storage, RLS policies, triggers, and full-text search are Supabase-specific. Switching to another database would require rewriting the data layer -- possible but not a quick swap.

How much does Supabase cost?

Supabase has a free tier that is generous enough for development and small teams. The Pro plan starts at $25/month for production use. See supabase.com/pricing.

Can I use Supabase's local development setup?

Yes. Install the Supabase CLI and run supabase start for a local Postgres instance. The migration files work with both local and hosted Supabase.

How do I reset the database?

Run the migration files again in order, then run seed.sql to reload sample data. Or use the Supabase CLI: supabase db reset.

What is the shared workspace RLS model?

All authenticated team members (users with a row in the profiles table) can read all CRM data -- contacts, companies, deals, tasks, activities, and emails. Write access is open to all team members for most operations. Delete operations and settings changes are restricted to admin users. This is different from a multi-tenant model where each user only sees their own data.

Authentication

How do I make myself an admin?

Sign up normally, then update your profile's role column to admin in the Supabase Dashboard (Table Editor > profiles) or via SQL: UPDATE profiles SET role = 'admin' WHERE email = 'your-email@example.com'.

Why does admin access use profiles.role instead of app_metadata?

The CRM uses a shared workspace model where admin status is a team-level concept, not an auth-level one. Storing role in the profiles table makes it queryable via SQL and editable without touching the auth system. The is_crm_admin() function checks this column in RLS policies.

Can I add more OAuth providers?

Yes. Supabase supports many providers (Apple, Discord, Twitter, etc.). Enable them in the Supabase Dashboard, then add the sign-in button to your login page following the same pattern as Google and GitHub.

How does the middleware work?

The middleware protects all routes except /login, /register, /forgot-password, and /auth/*. Any unauthenticated request to a dashboard route is redirected to /login. Authenticated users trying to access login or register are redirected to the dashboard.

Pipeline & Deals

Does drag-and-drop persist to the database?

Yes. When you drag a deal card to a new column, a Server Action immediately updates the deal's stage_id in Supabase. A database trigger also logs the stage change as an activity with the old and new stage names.

Can I have multiple pipelines?

Yes. The seed data includes two pipelines (Sales Pipeline and Enterprise Pipeline). You can create more via the Pipeline Settings page or directly in the database.

How does forecasting work?

Forecasting uses aggregate Supabase queries against the deals table. Deals are categorized as Committed (75%+ probability), Best Case (50%+), or Pipeline (all open). Revenue is projected per month based on close_date and weighted by probability. Quota attainment is calculated against the quota field on each team member's profile.

How does full-text search work?

Contacts and companies have a search_vector column of type tsvector. This column is automatically populated from name, email, and other text fields. Queries use Supabase's .textSearch() method with the websearch query type, which supports natural language queries with OR, AND, and phrase matching.

Deployment

Can I deploy to something other than Vercel?

Yes. Any Node.js hosting that supports Next.js works: Railway, Render, AWS Amplify, self-hosted with pnpm build && pnpm start. Vercel is recommended for the smoothest experience.

Do I need to set up CORS?

No. The Supabase client handles CORS automatically. Server Actions run server-side and do not involve CORS.

License

What license covers client work?

Solo and Team licenses are for internal projects. The Agency license allows unlimited developers and client delivery. See the LICENSE.md file in the project root.

Can I resell or redistribute the kit?

No. The code is licensed for use in your own projects (or client projects with the Agency license). Redistribution of the raw code is not permitted.