Back in 2024, I had the idea of building my own blog site from scratch.
It is not that I do not enjoy platforms like Medium or Substack. I actually like using them. But at the end of the day, I still do not have full control over the website. I cannot fully customize the UI or UX the way I want, and I am limited by the platform’s system and design decisions.
I also tried building with tools like Webflow and Framer, but I ran into the same issue. They are convenient, but there is still a ceiling when it comes to flexibility and control. On top of that, the monthly subscriptions can add up, and pricing changes are never fun to deal with.
So about a month ago, I decided to stop working around those limitations and just build the thing myself.
That is how BloggFast started.
What is BloggFast
BloggFast is a premium Next.js boilerplate that gives you a fully wired, production-ready AI-powered blog platform out of the box. Instead of spending weeks integrating authentication, a database, a CMS, email, and AI services, you get all of that configured and connected on day one.
Press enter or click to view image in full size

BloggFast landing page. Image by Jim Clyde Monge
I built BloggFast for people who want to launch a serious blog, news site, or content platform without wasting time on repetitive setup work. In my opinion, this is where most developers and creators lose momentum. The excitement is there at the beginning, but once you realize how many moving parts you need just to get a modern content site running, it becomes exhausting very quickly.
The philosophy is simple: buy, configure, ship. You focus on your content and brand, not infrastructure.
This is what the final news/blog website looks like:
Press enter or click to view image in full size

BloggFast demo website. Image by Jim Clyde Monge
You can explore the demo here => https://demo.blogg.fast
Why I Built BloggFast
Personally, I think ownership matters a lot more than people realize. When you own the codebase and the platform, you are free to shape the product however you want. You are not waiting around for another company to add the feature you need. You are not stuck with someone else’s pricing model. And you are not limited by a platform’s built-in design decisions.
Here are the main reasons I built BloggFast:
- There is nothing quite like it on the market right now. Most AI-driven writing platforms ask you to pay for a recurring subscription while keeping you inside their ecosystem. I think owning the platform is simply the better long-term move.
- I wanted to help creators publish content faster. AI models are only going to get better at writing, summarizing, researching, and structuring ideas. This product will evolve along with all the AI progress.
- I also see BloggFast as an evolving product. Over time, I want it to include the best parts of platforms like Sanity, Buffer, Medium, and Substack. It gets tiring having to jump between tools or request features from one platform that only exist in another. My goal is to bring the strongest publishing features together into one solid boilerplate.
- Another reason is that I wanted to push both my AI workflow and my agentic coding skills further. I have been building products with AI for the past three years, and BloggFast is where I am putting a lot of the best ideas, patterns, and lessons I have learned so far.
- And of course, I built it to make money too. I would be lying if I pretended otherwise. I make software products for a living, so monetizing something useful that I genuinely believe in is part of the plan.
The Tech Stack
One of the things I care about most when building a product is choosing tools that are practical, modern, and reliable in production.
That is why I picked a stack that is both developer-friendly and scalable. Every tool here serves a purpose: for performance, developer experience, content management, or AI integration.
Here’s the overview of all the provider stack:
Press enter or click to view image in full size

BloggFast tech stack. Image by Jim Clyde Monge
- Next.js 16: App Router, React Server Components, and the latest React 19 features.
- Vercel: Easy deploys on Vercel with seamless AI model integration through the Vercel AI Gateway and AI SDK.
- Neon Auth: Passwordless and social login, user management, and sessions built in.
- Neon Database: Serverless Postgres that scales to zero. Branching for dev/staging.
- Prisma ORM: Type-safe database access with auto-generated queries and migrations.
- Sanity IO: Headless CMS with real-time collaboration and a customizable studio.
- Multiple selectable LLMs: Including Claude 4.6 Sonnet, Claude 4.6 Opus, GPT-5, Gemini 3.1 Pro, DeepSeek, and Minimax — configurable from the admin dashboard for article generation.
- AI Image models: Generate blog cover images with Nano Banana Pro, GPT-image-1.5, or Flux Pro in multiple aspect ratios, directly from the article editor.
- Cloudflare: Edge-ready asset delivery and storage support for media, uploads, and performance.
- Resend: Transactional emails for welcome flows, notifications, and newsletters.
- TypeScript: Fully typed codebase. Catch bugs at build time, not in production.
It is modern without being overly experimental, and powerful without becoming unnecessarily complicated.
Setting up BloggFast
Getting started with BloggFast is straightforward. There are two ways to get the boilerplate:
- Download the project as a *.zip file.
- Become a member of the private GitHub repo and get access to lifetime updates to the project.
If you choose the GitHub option, I recommend forking the project first and making sure your fork stays synced with the remote repository.
Here’s the project layout:
bloggfast/
├── prisma/
│ ├── schema.prisma # Full database schema (17 models, 6 enums)
│ └── seed.ts # Seed script for initial data
├── public/ # Static assets (images, fonts, icons)
├── sanity/
│ └── schemas/ # Sanity content type definitions
│ ├── post.ts # Blog post schema
│ ├── author.ts # Author schema
│ ├── category.ts # Category schema
│ └── index.ts # Schema registry
├── src/
│ ├── app/
│ │ ├── (marketing)/ # Public blog pages
│ │ │ ├── page.tsx # Homepage with article feed
│ │ │ ├── article/[slug] # Individual article pages
│ │ │ ├── category/[slug]# Category listing pages
│ │ │ ├── tag/[slug]/ # Tag listing pages
│ │ │ ├── author/[slug]/ # Author profile pages
│ │ │ ├── latest/ # Latest articles
│ │ │ ├── trending/ # Trending articles
│ │ │ ├── editors-pick/ # Editor's pick articles
│ │ │ ├── search/ # Search page
│ │ │ └── layout.tsx # Marketing layout (navbar + footer)
│ │ ├── (admin)/ # Protected admin dashboard
│ │ │ ├── admin/
│ │ │ │ ├── page.tsx # Dashboard overview + stats
│ │ │ │ ├── articles/ # Article list, create, edit
│ │ │ │ ├── categories/ # Category management
│ │ │ │ ├── authors/ # Author management
│ │ │ │ ├── tags/ # Tag management
│ │ │ │ ├── subscribers/ # Email subscriber management
│ │ │ │ ├── generate/ # AI article generator
│ │ │ │ ├── generation-history/# AI generation history
│ │ │ │ └── settings/ # Site & AI settings
│ │ │ └── layout.tsx # Admin layout (sidebar nav)
│ │ ├── (app)/ # Authenticated user pages
│ │ │ ├── profile/ # User profile page
│ │ │ ├── saved/ # Saved articles
│ │ │ ├── liked/ # Liked articles
│ │ │ └── layout.tsx
│ │ ├── (auth)/ # Auth pages
│ │ │ ├── sign-in/[[...stack]]/ # Sign in page
│ │ │ ├── sign-up/[[...stack]]/ # Sign up page
│ │ │ └── layout.tsx
│ │ ├── auth/[path]/ # Custom auth path handler
│ │ ├── studio/ # Embedded Sanity Studio
│ │ │ ├── [[...tool]]/ # Catch-all for Studio routes
│ │ │ └── layout.tsx # Studio layout
│ │ ├── api/ # API route handlers
│ │ │ ├── auth/ # Neon Auth API endpoints
│ │ │ ├── generate/ # AI article generation endpoint
│ │ │ ├── generate-image/# AI cover image generation endpoint
│ │ │ ├── search/ # Article search endpoint
│ │ │ ├── subscribers/ # Email subscription endpoints
│ │ │ ├── views/ # Article view tracking endpoint
│ │ │ ├── rss/ # RSS feed endpoint
│ │ │ └── webhooks/ # Resend webhook handler
│ │ ├── layout.tsx # Root layout (providers, fonts, theme)
│ │ ├── globals.css # Global CSS with Tailwind v4 imports
│ │ ├── sitemap.ts # Dynamic sitemap generation
│ │ ├── robots.ts # robots.txt configuration
│ │ ├── error.tsx # Global error page
│ │ ├── loading.tsx # Global loading UI
│ │ └── not-found.tsx # 404 page
│ ├── components/ # Reusable UI components
│ │ ├── ui/ # shadcn/ui base components
│ │ ├── admin/ # Admin dashboard components
│ │ ├── articles/ # Article card, detail, engagement
│ │ ├── layout/ # Navbar, footer, sidebar, theme toggle
│ │ ├── search/ # Search modal and input
│ │ ├── providers.tsx # App-level context providers
│ │ └── subscribe-form.tsx # Newsletter subscription form
│ ├── actions/ # Next.js Server Actions
│ │ ├── articles.ts # Article CRUD operations
│ │ ├── admin.ts # Admin-specific operations
│ │ ├── ai-settings.ts # AI configuration operations
│ │ ├── engagement.ts # Engagement tracking
│ │ └── subscribe.ts # Subscription management
│ ├── lib/
│ │ ├── db/
│ │ │ ├── index.ts # Prisma client singleton (Neon adapter)
│ │ │ └── queries.ts # Database query functions
│ │ ├── ai/
│ │ │ ├── generator.ts # Article generation with OpenAI
│ │ │ ├── prompts.ts # System prompts for AI generation
│ │ │ └── ai-settings-schema.ts # AI settings Zod schema
│ │ ├── auth/
│ │ │ ├── neon-server.ts # Neon Auth server-side client
│ │ │ ├── neon-client.ts # Neon Auth client-side hooks
│ │ │ └── server.ts # Auth helper functions
│ │ ├── sanity/
│ │ │ ├── client.ts # Sanity client + image URL builder
│ │ │ └── queries.ts # GROQ query functions
│ │ ├── resend.ts # Email sending functions (Resend)
│ │ ├── unified-queries.ts # Cross-source article queries
│ │ ├── article-utils.ts # Article helper utilities
│ │ ├── constants.ts # Shared enum constants
│ │ └── utils.ts # General utilities
│ ├── sanity/ # Sanity runtime config (imported by Studio)
│ │ ├── schemaTypes/ # Portable Text content type definitions
│ │ ├── lib/ # Sanity client, image, live helpers
│ │ ├── structure.ts # Studio structure config
│ │ └── env.ts # Sanity environment variables
│ ├── types/ # Shared TypeScript type definitions
│ ├── hooks/ # Custom React hooks
│ ├── env.ts # Type-safe env validation (@t3-oss/env-nextjs)
│ └── middleware.ts # Auth middleware (protects /admin, /profile, etc.)
├── .env.example # Environment variable template
├── next.config.ts # Next.js config (React Compiler, image domains)
├── sanity.config.ts # Sanity Studio config file
├── sanity.cli.ts # Sanity CLI config
├── prisma.config.ts # Prisma config
├── components.json # shadcn/ui component registry config
├── package.json
└── tsconfig.json
Once you have the project on your local machine, unzip it and follow the documentation page.
Press enter or click to view image in full size

BloggFast documentation page. Image by Jim Clyde Monge
Make sure all environment variables are configured correctly and that the build passes successfully. After that, run the database seed to populate the app with temporary sample data, then start the development server with npm run dev.
Once everything is working, open http://localhost:3000/ and you should see the following screen:
Press enter or click to view image in full size

BloggFast localhost sample page. Image by Jim Clyde Monge
At this point, you already have a working foundation. That is a huge difference compared to starting from scratch, where even getting to this stage can take a lot of time.
In the next section, I will walk through the admin pages and show how article generation works with AI.
BloggFast’s Admin Pages
The admin side of BloggFast is where you control the platform: from managing articles and settings to configuring AI models and custom skills.
First, there is the Dashboard page, which gives you a summary of the articles that have already been created. From here, you can quickly edit existing content or generate a new article.
Press enter or click to view image in full size









