FAQ

Last updated on 2026-09-03

General

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

The frontend-only kit gives you blog UI screens with mock data from data/seed.ts. This full-stack kit gives you a complete blog platform with a real Supabase backend: database tables for posts, categories, tags, comments, media, and newsletters, Supabase Auth with social login, a full admin CMS with a rich text editor, Server Actions for all CRUD operations, public commenting, view counting, and newsletter signup.

Do I need both kits?

No. This full-stack kit includes all the blog UI from the frontend-only version, plus the entire backend. If you want a working blog with an admin CMS, 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 blog?

Yes. Deploy to Vercel, set up a Supabase project, and you have a working blog with a CMS. You will want to customize the branding, set up your categories and tags, and potentially connect a real email provider for newsletters.

Does this kit include email sending?

No. The newsletter feature stores subscriber emails in the database and provides an admin interface for managing them. Actual email delivery requires connecting a third-party provider like Resend, SendGrid, or Mailchimp. See Customization for integration instructions.

Supabase

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

The kit is built for Supabase. All auth, database queries, storage, RLS policies, and triggers 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 blogs. 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 RLS model -- public or private?

The blog uses a public-read, authenticated-write model. Anyone can read published posts, comments, and categories. Only authenticated users with the appropriate role (admin, editor, or author) can create, update, or delete content through the admin CMS. Comments can be submitted by unauthenticated visitors (name and email are provided in the form). Delete operations and settings changes are restricted to admin users.

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'.

What are the role differences?

Role Permissions
admin Full access: manage posts, comments, categories, tags, media, settings, and other users
editor Create and edit all posts, manage comments, upload media
author Create and edit own posts, upload media

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 /admin/* routes. Any unauthenticated request to an admin route is redirected to /login. Public blog routes (homepage, posts, categories, tags) do not require authentication. Authenticated users trying to access login or register are redirected to the admin dashboard.

Blog

How do public comments work?

Visitors submit comments via a form on each post page without needing to log in. They provide their name, email, and comment text. By default, comments are held for moderation -- an admin or editor approves them from the admin comments page before they appear publicly. Auto-approve can be enabled in the Server Action.

How does view counting work?

Each time a blog post is loaded on the public site, a Server Action increments the views column on the posts table. A database trigger handles the atomic increment to avoid race conditions. View counts are displayed on the post page and in the admin analytics dashboard.

How does newsletter signup work?

A signup form on the blog (typically in the footer or sidebar) collects email addresses and stores them in the newsletter_subscribers table via a Server Action. The admin newsletter page shows the subscriber list and provides a compose interface. Actual email delivery requires connecting a third-party email provider.

Content

Can I use a headless CMS alongside Supabase?

Yes. You can source content from a headless CMS (Sanity, Contentful, Strapi) in your Server Components while keeping Supabase for comments, views, newsletter signups, and authentication. Use CMS webhooks to sync content metadata to Supabase for querying.

Is the editor a real rich text editor?

Yes. The admin post editor uses Novel (built on Tiptap), which provides a block-based editing experience with support for headings, bold, italic, lists, links, images, code blocks, and embeds. Content is stored as JSON and rendered to HTML on the public blog.

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.

How do I set up a custom domain?

Add your domain in Vercel Dashboard > Project Settings > Domains. Update your DNS records as directed, then update NEXT_PUBLIC_APP_URL and the Supabase Auth Site URL and redirect URLs to match. See Deployment for the full steps.

License

Can I use this for 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.