novaris-dev / framework
Novaris Framework: The core foundation of the Novaris Content Management System (CMS), providing a robust and flexible architecture designed to power dynamic content-driven websites
Requires
- php: >=8.1
- guzzlehttp/guzzle: ^7.9
- intervention/image: ^3
- league/commonmark: ^2.10.1
- league/config: ^1.2
- symfony/http-foundation: ^6.0
- symfony/var-dumper: ^6.0
- symfony/yaml: ^6.0
- vlucas/phpdotenv: ^5.6
Requires (Dev)
- phpunit/phpunit: ^11.5
Suggests
None
Provides
None
Conflicts
None
Replaces
None
- dev-develop
- v1.1.1
- v1.1.0
- v1.0.9
- v1.0.8
- v1.0.7
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- dev-release/1.2.0
- dev-feature/social-icons
- dev-release/1.1.0
- dev-feature/social-tag
- dev-fix/user-path-urls
- dev-release/1.0.8
- dev-fix/serve-user-media
- dev-release/1.0.7
- dev-feat/user-path
- dev-release/1.0.6
- dev-fix/site-config-export-watch
- dev-copilot/repository-file-organization-overview
This package is auto-updated.
Last update: 2026-11-06 07:53:09 UTC
README
Novaris is a lightweight PHP framework designed to provide the core foundation for building flat-file, content-driven websites and applications.
It provides the underlying architecture for the Novaris Content Management System (CMS), including content management, routing, caching, configuration, templates, service providers, dependency injection, and other tools needed to build dynamic websites without requiring a traditional database.
Requirements
- PHP 8.1 or higher
- Composer
PHP 8.2 or newer is recommended for development.
Installation
Install Novaris using Composer:
composer require novaris-dev/framework
Content folder
A site's content and media live in its user/ folder, in user/content and user/media.
To use another folder for a while, such as a clone of theme-test-data when testing a theme, add NOVARIS_USER_PATH to the site's .env:
NOVARIS_USER_PATH=../theme-test-data
The folder needs content and media folders, like user/. A relative path is relative to the site root. Remove the line to go back to the site's own user/ folder.
Content links to images as /user/media/..., and Novaris rewrites those links to wherever the folder is:
- A folder inside the site, such as
NOVARIS_USER_PATH="theme-test-data": images link to/theme-test-data/media/..., so the web server serves them directly. Nothing else to set up. - A folder outside the site, such as
../theme-test-data: images keep their/user/media/...links and Novaris serves them, which works with servers that send missing files toindex.php. PHP's built-in server doesn't, so usevendor/bin/novaris servewith it.
Resized images are saved next to the originals, so they are written into that folder.
Themes
A site picks its theme in config/app.php:
'theme' => 'amicable', // installs from novaris-dev/amicable 'theme' => 'someone/their-theme', // installs from any GitHub user or organization
A missing theme is downloaded from the repository's latest GitHub release into themes/{slug}.
theme.json
Every theme has a theme.json at its root:
{
"$schema": "https://raw.githubusercontent.com/novaris-dev/framework/develop/schemas/theme.schema.json",
"name": "Amicable",
"slug": "amicable",
"version": "0.2.0",
"repository": "novaris-dev/amicable"
}
| Field | Required | Description |
|---|---|---|
name |
Yes | Theme name shown to people. |
slug |
Yes | Folder name. Must match the GitHub repository name. |
version |
Yes | Version without a leading v, such as 1.0.0. |
repository |
For updates | GitHub repository updates come from, as owner/slug. |
parent |
No | Parent theme, as slug or owner/slug. |
Theme features, such as featured images and custom headers, are configured in config/app.php under supports, not in theme.json.
The $schema line is optional. It gives editors such as VS Code autocomplete and warnings for missing or misspelled fields. This file is not the WordPress theme.json format.
To be installable, a theme's GitHub release needs an attached zip named {slug}.{version}.zip, such as amicable.0.2.0.zip, containing the theme folder and its theme.json.