HAXsite is what you are viewing currently. It is a single site that can operate stand alone or in the larger HAXcms context. A site has everything it needs to function by itself on the front-end. The HAXcms backend comes in to make the files writable.
Treating the site like it is a self-contained folder / file format allows for HAX to achieve it's primary goal of being a ubiquitous web authoring platform. This is because everything needed to power the site lives within the folder the site resides in. The "database" structure is handled by the site.json
file powering the site, the content of the pages live under /pages/
and the template leveraged for the site's design comes from the same web component infrastructure as the blocks that make up the page.
The key directories / files include:
custom/
- customized build routines for including files locally or custom theme workfiles/
- any files you've uploaded through the HAX interfacepages/
- folders named by their content uri that have index.html in it, no structure other then what you created when hitting savesite.json
- JSON Outline Schema object that defines the pages in your site and their relationship to each other- build.js - magic script that ensures the site loads either off local files or the CDN network to keep it online
- build-haxcms.js - enhancements to magic script specific to haxcms platform
- ims* - files related to the SCORM standard to allow the folder to be zipped and unzipped into LMS environments
- index.html - front page for the PWA if installed on a non-php based environment
- config.php - brokers on php based environments if HAXcms is there to preload content or if the site is operating stand alone (in which case it loads a slim version of HAXcms)
- index.php - php based environment entryway that preloads content and optimizes for 1st load in headers
- lunrSearchIndex.json - lunr powers the search widgets commonly used in HAX themes. This index is rebuilt when pages are saved and allows for searching in a way that works statically.
- manifest.json - makes it a PWA, no need to edit this file it will build dynamically based on site settings being saved.
- netlify.toml - built in support for netlify publishing
- package.json - dependencies for editing the site locally; namely just invoking npx @haxtheweb/haxcms-nodejs
- push-manifest.json - optimizations for some hosting environments to push site.json and index.html prior to request
- robots.txt - SEO what search engines should look in as well as ignore
- rss.xml - built per site save, RSS feed of the site
- service-worker.js - makes it a PWA, no need to edit this
- web-dev-server.haxcms.config.cjs - helper file for local development / serving work