Project Structure
Your project created with create thulite comes with a practical default structure.
This page explains what each top-level directory is for and where to put your files.
At a glance
Thulite follows the Hugo directory structure. Most projects include these key directories and files:
assets- processed assets (styles, scripts, images)config- Hugo/Thulite configurationcontent- pages and section contentlayouts- templates, partials, and shortcodesstatic- files copied as-is to outputpackage.json- npm dependencies and scripts
Example tree
For complete details, see the Project Structure reference.
Typical starter structure:
- archetypes
- default.md
- assets
- scss
- common
- _custom.scss
- _variables-custom.scss
- app.scss
- common
- favicon.png
- favicon.svg
- scss
- config
- _default
- hugo.toml
- module.toml
- params.toml
- _default
- content
- _index.md
- layouts
- home.html
- static
- cover.png
- package.json
archetypes
default.md
Template used when creating new content files.
assets
favicon.png, favicon.svg
Use assets/ for files that should be bundled, transformed, or optimized.
scss
Storing styles in assets/scss/ is conventional, but not required. Any stylesheet in assets/ can be processed when imported correctly.
Use app.scss as your entrypoint. Put custom variables in common/_variables-custom.scss and custom styles in common/_custom.scss.
config
_default
hugo.toml: core Hugo configurationmodule.toml: Hugo mounts, including links fromnode_modulesto project directoriesparams.toml: site-level Thulite settings, including theme and integration options
content
Use content/ for
pages, sections, and page bundles (including page resources).
layouts
Layouts define shared page structure and rendering templates.
static
Files in static/ are copied to the output unchanged.
This is ideal for assets like fonts or icons, and special files like robots.txt and manifest.webmanifest.
You can place CSS and JavaScript here, but they will not be bundled or optimized.
As a rule, keep your own CSS and JavaScript in assets/.
package.json
package.json defines dependencies and scripts such as npm run dev and npm run build.
You can use
dependencies and devDependencies. For most Thulite projects, placing packages in dependencies is a practical default.