A Next.js static site platform that works like a CMS but stores all content in JSON files inside a content/
folder.
- π Next.js powered - Static site generation with Next.js
- π Gutenberg block editor - Familiar WordPress-style content editing
- π File-based content - All content stored as JSON files
- π¨ Theme system - Customizable themes in the
content/themes/
folder - π Plugin system - Extensible with plugins in
content/plugins/
- π€ Admin dashboard - Easy content management (development only)
- π± Responsive - Mobile-first design
- β‘ Fast - Static site generation for optimal performance
- π Secure - Admin pages excluded from production builds
- π Updatable - Easy updates without losing content
npx nobo create-site my-blog
cd my-blog
npm install
npm run dev
npx nobo init
npm install
npm run dev
# Update from within the site directory
npx nobo update
# Update a specific site directory
npx nobo update /path/to/site
# Preview what would be updated (dry run)
npx nobo update --dry-run
# Force update without confirmation
npx nobo update --force
my-site/
ββ content/ # All user-specific content
β ββ posts/ # JSON files for posts
β ββ uploads/ # Uploaded files (images etc) with metadata
β ββ themes/ # User themes
β ββ plugins/ # User plugins
β ββ config.json # Active theme, active plugins, site settings
ββ node_modules/
ββ package.json
ββ next.config.cjs
ββ (nobo-core provides all core logic)
Posts are stored as .json
files in content/posts/
:
{
"title": "Hello World",
"date": "2025-01-15",
"slug": "hello-world",
"content": "<!-- wp:heading --><h2>Welcome!</h2><!-- /wp:heading --><!-- wp:paragraph --><p>This is my first post in NoBo.</p><!-- /wp:paragraph -->"
}
Content is stored as a string of Gutenberg block markup (similar to WordPress), not an array of objects.
- Admin login at
/admin
(development only) - General admin dashboard at
/admin
- Post management at
/admin/posts
- Post editing uses the Gutenberg block editor
- File uploads go into
content/uploads/
with metadata JSON files - Plugin/theme activation controlled via
content/config.json
Note: Admin pages are only available during development. They are automatically excluded from production builds for security.
npm run dev
β launches Next.js dev server with admin features enablednpm run build
β generates a static site for deployment to any platformnpm run build:public
β same as build, explicitly excludes admin pages- Uses
next export
(default output goes to/out
) - Universal deployment - works with any static hosting platform
- Full admin interface available at
/admin
- Content management through web interface
- Real-time editing and preview
- Only public-facing pages included
- Admin pages automatically excluded
- Optimized for static hosting
- No server-side dependencies
NoBo sites work with any static hosting platform without host-specific configuration:
- Build command:
npm run build
- Output directory:
out
- Node.js version: 18+
- β Cloudflare Pages - Just set build command and output directory
- β Netlify - Standard Node.js build process
- β Vercel - Works out of the box
- β GitHub Pages - Via Actions or direct upload
- β Any static host - Standard static files
- No host-specific configuration files required
- Easy migration between platforms
- Standard Node.js build process
- Works with any CI/CD system
NoBo provides easy updates that preserve your content while updating core functionality:
- Core files (pages, components, build scripts)
- Package.json scripts and dependencies
- Next.js configuration
- Build process improvements
- All content in
content/
folder - Your custom themes and plugins
- Site configuration and settings
# Check what would be updated (safe to run)
npx nobo update --dry-run
# Update your site
npx nobo update
# Force update without confirmation
npx nobo update --force
The content/
folder contains all site-specific things (posts, uploads, themes, plugins, settings).
Everything outside of content/
comes from nobo-core
and should not be modified by users.
Each theme goes inside content/themes/
and provides templates/hooks:
content/themes/my-theme/
ββ theme.json # Theme configuration
ββ style.css # Theme styles
ββ templates/ # HTML templates
ββ index.html
ββ post.html
ββ page.html
Each plugin goes inside content/plugins/
and can hook into behavior or add components:
content/plugins/my-plugin/
ββ plugin.json # Plugin configuration
ββ index.js # Plugin code
The nobo-core
package contains all the core functionality:
- Storage - JSON file management
- Admin - Admin interface and API
- Renderer - Content rendering with Gutenberg blocks
- Theme - Theme system
- Plugin - Plugin system
- Config - Configuration management
# Build the core package
npm run build-core
# Run the example site in development
npm run dev
# Build the example site for production
npm run build
- Admin pages are only available during development
- Production builds exclude all admin functionality
- No server-side dependencies in production
- Content managed through file system, not database
MIT