A modern, elegant content management system designed for developers and content creators who value simplicity and power.
A lightweight, file-based CMS built with vanilla JavaScript and LiteNode that generates blazing-fast static sites.
Create a new project
npx create-aether-cms my-cms-site
cd my-cms-site
Install dependencies
npm install
Start the development server
npm start
Access the admin dashboard
Open http://localhost:8080/aether
in your browser
admin
/ admin
aether/
βββ content/ # Content storage
β βββ data/ # Posts, pages, and settings
β β βββ posts/ # Blog posts (.md files)
β β βββ pages/ # Static pages (.md files)
β β βββ custom/ # Custom pages (.md files)
β βββ themes/ # Theme files
β β βββ default/ # Default theme
β βββ uploads/ # Media files
βββ core/ # Core CMS functionality
β βββ api/ # REST API endpoints
β βββ lib/ # Core libraries
β βββ routes/ # Frontend routes
β βββ admin/ # Admin interface
βββ assets/ # Static assets
Aether uses a flexible theme system with template hierarchy:
themes/theme-name/custom/page-name.html
themes/theme-name/templates/post.html
themes/theme-name/templates/content.html
themes/theme-name/templates/layout.html
theme-name/
βββ theme.json # Theme metadata
βββ assets/ # CSS, JS, images
β βββ css/
β βββ js/
βββ templates/ # Core templates
β βββ layout.html # Base layout
β βββ post.html # Single post
β βββ page.html # Single page
β βββ taxonomy.html # Categories/tags
βββ partials/ # Reusable components
βββ custom/ # Custom page templates
Posts are stored in content/data/posts/
as Markdown files:
---
id: "1234567890"
title: "My Blog Post"
slug: "my-blog-post"
status: "published"
author: "admin"
category: "Technology"
tags: ["javascript", "cms"]
createdAt: "2024-01-15T10:00:00.000Z"
---
# My Blog Post
This is the content of my blog post written in Markdown.
Custom Pages support nested hierarchies:
---
id: "1234567891"
title: "API Documentation"
slug: "api-docs"
pageType: "custom"
parentPage: "documentation"
status: "published"
---
# API Documentation
Documentation content here...
Generate a static version of your site:
# Generate with default settings
npm run build
# Custom output directory
npm run build -- --output dist
# Custom base URL
npm run build -- --base-url https://yourdomain.com
# Disable clean URLs
npm run build -- --no-clean-urls
--output, -o
- Output directory (default: _site
)--base-url, -b
- Base URL for the site--no-clean-urls
- Use .html
extensions instead of clean URLsAether includes a hook system for extensibility:
// Add a filter to modify posts
hookSystem.addFilter("api_posts", (posts, req) => {
// Modify posts data
return posts.filter((post) => post.featured)
})
// Add an action after post creation
hookSystem.addAction("post_created", (post) => {
console.log(`New post created: ${post.title}`)
})
Create a .env
file:
PORT=8080
NODE_ENV=development
GET /api/posts
- List postsPOST /api/posts
- Create postPUT /api/posts/:id
- Update postDELETE /api/posts/:id
- Delete postGET /api/media
- List media filesPOST /api/media/upload
- Upload fileDELETE /api/media/:id
- Delete fileGET /api/themes
- List themesPOST /api/themes/switch/:name
- Switch themePOST /api/themes/upload
- Upload thememy-awesome-post.md
)about.md
, contact.md
)npm run build
_site
folder to any static host β here are a few common choices:
NODE_ENV=production
NODE_ENV=production
PORT=3000
This project is licensed under the GNU General Public License v3.0 or later (GPL-3.0-or-later) - see the LICENSE file for details.
It also uses third-party packages, primarily licensed under the MIT License and retrieved via npm.
Each dependency retains its own license, which can be found in the respective package folders under node_modules/
after installation.
Hi there! π
Aether CMS is an open-source project maintained by one person (thatβs me!), and I want it to be a respectful, inclusive space for everyone.
Please be kind and constructive in all interactions β whether youβre opening issues, submitting pull requests, or joining discussions. Disrespectful, abusive, or unhelpful behavior wonβt be tolerated.
If someone behaves inappropriately, I may block them from the project and report them to GitHub if necessary. Letβs keep things friendly and welcoming for everyone!
git checkout -b feature/amazing-feature
)git commit -m 'Add amazing feature'
)git push origin feature/amazing-feature
)If you see something off or just need to reach out, feel free to contact me via the Q&A category or by opening a new discussion in the Reports category.
This helps keep our Issues focused on bugs and features.
Thanks for being a good human π
β LebCit
Aether CMS - Content in Motion. Powered by simplicity.