A modern Plone Distribution powered by Plone Seven and Nick CMS
Luna is a modern, high-performance Plone distribution that combines the power of Plone Seven — the latest React-based frontend for Plone — with Nick CMS, a blazing-fast headless CMS built on Node.js and PostgreSQL.
Luna represents the next generation of content management by bringing together:
- Volto Seven: The cutting-edge React frontend for Plone featuring a modern block-based editor (Pastanaga), modular architecture, and extensive customization capabilities
- Nick CMS: A high-performance headless CMS built with Node.js, offering a RESTful hypermedia API, hierarchical content management, and enterprise-grade security
This combination delivers the flexibility and developer experience of modern JavaScript frameworks with the robustness and content management capabilities that Plone users expect.
- Modern React Frontend: Built on Volto Seven with the Pastanaga block-based editor
- High Performance: Nick CMS backend powered by Node.js and PostgreSQL for optimal speed
- Seamless Integration: Pre-configured to work with Nick CMS's API structure (no
++api++prefix required) - Hierarchical Content: Tree-based content structure that naturally maps to site navigation and URLs
- Enterprise Security: Comprehensive role-based access control, permissions, and workflow management
- Content Versioning: Full revision history and rollback capabilities
- Internationalization: Built-in i18n support for multilingual content
- Extensible: Leverage Volto's addon ecosystem to extend functionality
- Developer Friendly: Modern tooling with TypeScript, pnpm workspaces, and hot reloading
Before you begin, ensure you have the following installed:
- Node.js (v20 or later)
- pnpm (v10.10.0 or later)
- PostgreSQL (for Nick CMS backend)
- Docker (optional, for containerized deployment)
WORK IN PROGRESS - Skip it for now
- Set up Nick CMS backend
Follow the Nick CMS installation guide to set up your backend server with PostgreSQL.
- Start the development server
pnpm install
PLONE_API_PATH=http://localhost:8080 pnpm start- Clone the repository
git clone https://github.com/LunaSpaceDev/luna.git
cd luna- Set up Plone backend
make install-backend
make start-backend- Set up Plone frontend
make install-frontend
make start-frontend
- Set up Plone Seven
make install-seven
make start-seven- Access Luna
Visit http://localhost:3000 in your browser to see Luna in action.
You can also use Luna as an add-on in your existing Volto project:
pnpm add @lunaspace/lunaAdd @lunaspace/luna to your add-ons configuration:
// registry.config.ts
import { addons } from '@plone/registry';
addons.push('@lunaspace/luna');
export { addons };Luna provides convenient make commands for common development tasks:
| Command | Description |
|---|---|
make help |
Show all available commands |
Linting
Run ESLint, Prettier, and Stylelint in analyze mode:
make lintFormatting
Auto-fix code formatting issues:
make formatTesting
Run the test suite:
make testExtract and sync i18n messages:
make i18nLuna uses Storybook to document and showcase components:
Start Storybook development server:
make storybook-startBuild Storybook for production:
make storybook-buildLuna includes a custom server configuration (packages/luna/config/server.ts) that configures the Plone Client to work seamlessly with Nick CMS:
- Removes the
++api++prefix requirement (Nick CMS uses direct API paths) - Optimizes API communication for Nick CMS's hypermedia structure
- Maintains full compatibility with Volto Seven's features and conventions
We welcome contributions from the community! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes and ensure tests pass
- Commit your changes (
git commit -m 'Add amazing feature') - Push to your fork (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow the existing code style (use
make formatto auto-format) - Write tests for new features
- Update documentation as needed
- Ensure all tests pass before submitting PR
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Documentation: Luna Docs
- Enhanced Nick CMS integration features
- Additional Volto Seven block types
- Performance optimization suite
- Extended documentation and tutorials
- Example projects and starter templates
- Volto - React-based frontend for Plone
- Nick CMS - High-performance headless CMS
- Plone - Enterprise-grade CMS
This project is licensed under the MIT License - see the LICENSE file for details.
Luna is built on the shoulders of giants. Special thanks to:
- The Plone community for decades of CMS innovation
- The Volto Seven team for the modern React frontend
- The Nick CMS team for the high-performance backend
- All contributors and supporters of the Luna project
Made with ❤️ by Luna Space