A modern, AI-built blog and publishing template for writers, journalists, and content creators. Keep WordPress as your editor and authoring backend, then ship a blazing-fast headless Next.js front end that publishes at the speed of thought, outshines the competition, and ranks #1 on Google.
π Demo: winx.gallop.software
π¨ Template: gallop.software/templates
π¦ Repository: github.com/gallop-software/winx-pro
π·οΈ Category: Headless WordPress Blog Template
Keep the WordPress editor you already know β but escape the slow themes, plugin sprawl, and clunky front end. Winx goes headless: WordPress (or the AI editor) handles authoring, and a modern Next.js front end handles the experience your readers actually see. Just chat with AI inside your code editor, describe the post, layout, or feature you want, and AI writes the code. Build beautiful article layouts, add smooth reading animations, configure your SEO and AI discoverability instantly, expand endlessly, and get prompting tips from our Gallop community. Go live in minutes.
New to this? No problem. You'll have AI guiding you the entire way. Choose your editor below and follow the steps.
We recommend the Gallop AI Editor for the best experience with Gallop templates β whether you're a first-time blogger or an advanced Next.js developer who wants AI-assisted writing and development. It was purpose-built for this workflow and requires zero configuration. VS Code is also a fine choice if you prefer to work without AI assistance.
| Gallop AI Editor | VS Code | |
|---|---|---|
| Best for | Writers, non-programmers, junior and advanced programmers | Advanced programmers |
| AI built in | Yes β Claude AI ready to go | No (optional extensions available) |
| AI setup requirement | Enter Claude API keys | Install extensions manually |
| Template browser | Built-in marketplace | Download ZIP from GitHub |
| Media manager | Built-in Studio with CDN sync | Manual file management |
| Font manager | Built-in Studio with WOFF2 font generation | No support |
| SEO Audit | Analyze SEO & Structured Data | No support |
| Git | Better Git UI with modal diff viewer | Default Git UI |
| Node.js | Built-in installer and version manager | Install Node.js separately |
The Gallop AI Editor is a desktop app built specifically for AI-powered web development for Next.js. It includes everything you need β code editor, AI assistant, Git, terminal, media manager, font manager, SEO & structured data scanner, and a template marketplace β all in one window with nothing to configure.
Available for Mac and Windows.
From the built-in template marketplace:
Or from a ZIP download:
winx folderClick the AI Chat panel (or press Cmd+E on Mac / Ctrl+E on Windows) to open the AI assistant. Now just ask:
I'm new to this. Help me customize this blog for my niche.
The AI assistant can read and edit your project files, run commands, and explain anything you're confused about. Just describe what you want in plain English:
Write a new blog post about sourdough baking and add it to the blog
Make the accent color a warm terracotta
Add a new category called Travel
Optimize the SEO and article structured data on my latest post
Tip: Press Cmd+Ctrl+3 (Mac) to take a screenshot of your running blog and attach it to the chat. The AI can see exactly what you see and suggest changes visually.
VS Code is a good choice if you prefer to work without AI assistance. You'll need to install a few things manually.
Click the green Code button at the top of this GitHub page, then click Download ZIP. Unzip the folder somewhere easy to find (like your Desktop).
winx folderOpen the terminal in VS Code (Ctrl+`` on Mac/Windows) and run:
npm installnpm run dev
Open http://localhost:3000 to see your blog. Press Ctrl+C to stop the server.
Add new posts as TSX files in src/blog/, then run npm run blog to regenerate metadata. Refer to the Project Structure and Available Scripts sections below for guidance.
Connect with other Gallop users on Slack. Share your progress, swap AI prompting tips, and see how non-programmers are launching blogs that once required a full editorial team.
When you're ready to share your blog with the world, you'll need a free GitHub account to store your code and a free Vercel account to host your site.
Just ask your AI assistant:
Help me create a GitHub account, push this project to GitHub, and deploy to Vercel
The AI will walk you through every step. When you're done, your blog will be live with a URL you can share.
If you're comfortable with Git:
Ask your AI assistant:
Help me clone my new GitHub repository and run it locally
Or run these commands in your terminal:
git clone https://github.com/YOUR-USERNAME/YOUR-REPO-NAME.gitcd YOUR-REPO-NAMEnpm installnpm run dev
Open http://localhost:3000 to view your blog. Press Ctrl+C to stop the server. When ready to test production, run npm run build then npm start.
Select your repository, and Vercel will automatically deploy whenever you push changes.
Congratulations! Your blog is now live to the world. Share your new URL and start growing your readership. Ready for a custom domain? See Vercel's domain setup guide.
Want access to all premium blocks and post layouts? Purchase Winx Pro and clone from the Pro repository, which includes all Pro blocks ready to use.
Winx is part of the Gallop template ecosystem. Gallop templates are designed to be built with AI β just describe what you want in plain English and watch your blog come to life.
The Gallop AI Editor is a desktop code editor built specifically for AI-powered web development. It combines a full code editor, Claude AI assistant, visual Git interface, integrated terminal, media manager, and template marketplace into one app. Everything is preconfigured to work with Gallop templates out of the box β no extensions, no plugins, no setup.
Key highlights:
Cmd+Ctrl+3 to screenshot your running blog and share it with AI for visual feedbackEvery Gallop template includes @gallop.software/canon, a system of ESLint rules and AI instructions that keep your AI assistant on track. Canon ensures:
Think of Canon as training wheels that never come off. AI stays within proven patterns, so you get reliable results every time.
Canon Commands:
npm run check - Run ESLint and TypeScript checks togethernpm run audit - Audit the codebase for Canon compliancenpm run unused - Detect unused files and exports with KnipAlready invested in WordPress? Keep it. Winx pairs with the free Gallop WP plugin to turn your WordPress site into a headless authoring backend for this Next.js front end β so editors keep the admin they know while readers get a fast, modern, decoupled experience.
Gallop WP exposes a purpose-built REST API (/wp-json/gallop/v1) shaped for Next.js, so your front end stays simple:
register_post_type() boilerplatePrefer to skip WordPress entirely? You can. Winx also authors posts directly as TSX in src/blog/ β headless WordPress is an option, not a requirement.
This template was crafted from the ground up to get your articles ranked #1 on Google and cited by AI assistants like ChatGPT and Google's Gemini. The software architecture, semantic HTML structure, article metadata system, and structured data are optimized for both search engine crawlers and AI models that surface content to readers.
AI citations are becoming more important than traditional SEO. When someone asks an AI assistant a question, you want your post to be the source it quotes. Gallop templates ship with the Article, BlogPosting, and Author structured data that AI models rely on to understand and surface your writing. Writers using this template are already ranking on Google and getting discovered by AI assistants.
The team behind Gallop has decades of combined experience building websites, apps, and web applications for top global brands. We've helped publishers achieve #1 Google rankings in competitive markets and understand what it takes to build world class editorial sites. That expertise is baked into every template, every component, and every line of code.
winx/βββ src/β βββ app/ # Next.js App Routerβ β βββ (default)/ # Default layout route groupβ β β βββ layout.tsxβ β β βββ page.tsx # Blog home / latest postsβ β β βββ _blocks/ # Home page blocksβ β β βββ [year]/ # Yearly archive pagesβ β β βββ author/ # Author archive pagesβ β β β βββ [slug]/β β β βββ category/ # Category archive pagesβ β β β βββ [slug]/β β β βββ tag/ # Tag archive pagesβ β β β βββ [slug]/β β β βββ search/ # Search results pageβ β β βββ contact/β β β βββ .../ # Other routes with _blocks/β β βββ api/ # API routes (likes, share counts, etc.)β β βββ global-error.tsx # Error boundaryβ β βββ global-not-found.tsx # 404 pageβ β βββ layout.tsx # Root layoutβ β βββ metadata.tsx # Site metadataβ β βββ robots.ts # Robots.txt configβ β βββ *-sitemap.xml # Generated sitemaps (post, author, category, tag)β β βββ BLOCKS.md # Auto-generated blocks catalogβ β βββ LAYOUTS.md # Auto-generated layouts catalogβ β βββ *.png, *.ico # App icons and faviconβ βββ blog/ # Blog post content (TSX files)β βββ components/ # React componentsβ β βββ blog/ # Blog post componentsβ β βββ footer/ # Footer config and componentsβ β βββ form/ # Form componentsβ β βββ lightbox/ # Lightbox gallery for post imagesβ β βββ search/ # Search componentsβ β βββ sidebar-stack/ # Sidebar panel stackβ β βββ navigation.tsx # Main navigationβ β βββ page-wrapper.tsx # Page wrapper with structured dataβ β βββ button.tsxβ β βββ card-testimonial.tsxβ β βββ gallery.tsxβ β βββ heading.tsxβ β βββ image.tsxβ β βββ section.tsxβ β βββ ...β βββ fonts/ # Font configuration filesβ βββ hooks/ # Custom React hooksβ βββ styles/ # Global stylesβ β βββ tailwind.css # Tailwind CSS entryβ βββ tools/ # Utility toolsβ βββ utils/ # Helper functionsβ βββ state.ts # Global state managementβββ prisma/ # Prisma schema (share counts, etc.)βββ public/β βββ favicon.png # Faviconβ βββ images/ # Processed imagesβ βββ screenshot.jpg # Featured imageβ βββ search-index.json # FlexSearch indexβββ _fonts/ # Font source files (managed by Studio)βββ _data/ # Generated metadataβ βββ _blog.json # Blog post metadataβ βββ _studio.json # Studio/image metadataβββ _scripts/ # Build scriptsβ βββ generate-blog-metadata.mjsβ βββ generate-search.mjsβ βββ ...βββ next.config.mjs # Next.js configurationβββ tsconfig.json # TypeScript configβββ postcss.config.js # PostCSS configβββ package.json # Dependencies & scriptsβββ knip.config.js # Unused file detection configβββ eslint.config.mjs # ESLint configβββ .prettierrc # Prettier config
npm run dev - Start development server at http://localhost:3000npm run build - Build for production (runs blog metadata first)npm run start - Start production servernpm run lint - Run ESLint on all source filesnpm run lint:file - Run ESLint on a specific filenpm run lint:gallop - Run Gallop Canon lint rules on blocksnpm run ts - TypeScript type checking without emittingnpm run prettier - Format all files with Prettiernpm run check - Run lint and TypeScript checksnpm run audit - Audit codebase with Gallop Canonnpm run audit:strict - Strict audit modenpm run audit:json - Output audit results as JSONnpm run blog - Generate blog post metadata to _data/_blog.json β docsnpm run search - Build FlexSearch index for site search β docsnpm run bust:kv - Bust the KV cache for likes and share countsnpm run blocks - Generate blocks catalog (src/app/BLOCKS.md)npm run blocks:screenshots - Force regenerate all block screenshotsnpm run blocks:sort - Sort the blocks catalognpm run layouts - Generate layouts catalog (src/app/LAYOUTS.md)npm run layouts:screenshots - Force regenerate all layout screenshotsnpm run layouts:sort - Sort the layouts catalognpm run env - Push .env.production to Vercel β docsnpm run env:prod - Push to production environmentnpm run env:prev - Push to preview environmentnpm run update:check - Check for package updatesnpm run update:patch - Update to latest patch versionsnpm run update:minor - Update to latest minor versionsnpm run update:major - Update to latest major versionsnpm run update:interactive - Interactively choose updatesnpm run update:doctor - Update and test changes incrementallynpm run db:generate - Regenerate the Prisma clientnpm run db:migrate - Run Prisma migrations in developmentnpm run unused - Find unused files and exports with Knipnpm run refresh - Remove node_modules and .next, then reinstallnpm run clean - Remove node_modules, .next, and package-lock.json, then reinstallEvery dependency is battle-tested in production and chosen for stability, performance, and long-term maintainability.
16.2.4 - React framework with App Router19.2.5 - UI library4.2.2 - Utility-first CSS framework2.2.10 - Unstyled accessible components7.2.0 - Database ORM for share counts and dynamic data3.0.0 - Edge cache for likes and share counts2.3.1 - State management12.1.4 - Modern slider/carousel for post galleries3.31.0 - Image gallery for post media0.8.212 - Full-text post search1.19.8 - Search autocomplete12.38.0 - Animation library3.7.2 - DateTime library for post dates10.0.3 - Scroll-based animations and lazy loading0.21.0 - Search result highlighting6.0.1 - HTML-to-React parsing for rich content2.1.1 - Conditional className utility1.6.1 - Analytics integration16.2.4 - Third-party script optimizationTools for building and developing the blog:
5 - Type safety and IntelliSense9 - Code linting3.8.1 - Code formatting4.3.0 - Auto-organize imports0.7.2 - Sort Tailwind classes8.5.8 - CSS transformationsBuild-time tools for content and asset generation:
0.34.5 - Image processing and optimization for post images24.40.0 - Screenshot generation (featured images)27.4.0 - DOM parsing for search index generation3.0.0 - URL-friendly slugs for posts, tags, and authorsMIT License - see LICENSE for details
Contributors:
Built with β€οΈ by the team at Gallop