A cinematic digital magazine for fashion, art & culture after dark.
NOCTURNE is a production-ready static website built with HTML5, CSS3, vanilla JavaScript ES modules, GLSL shaders and optional Three.js WebGL. It requires no backend, database, framework, build step or paid service.
This package has been prepared specifically for static hosting and GitHub Pages:
- All local ES-module import paths were audited.
- All bundled data/image references were validated.
- The Node test suite was updated for modern Node.js
navigatorbehavior. - All project test suites pass.
- Added
.nojekyllfor predictable GitHub Pages static publishing. - Added a GitHub Actions deployment workflow at
.github/workflows/deploy.yml. - Added a standalone
404.html. - Added
robots.txt. - Added
.gitignoreand.gitattributes. - Added
package.jsonwith a singlenpm testcommand for the complete audit. - Kept WebGL isolated and fail-safe: if Three.js/CDN/WebGL is unavailable, the site falls back to its CSS/image presentation.
- Kept every route as a real static HTML file, which works cleanly on GitHub Pages.
NOCTURNE/
├── index.html
├── issue.html
├── story.html
├── archive.html
├── 404.html
├── robots.txt
├── .nojekyll
├── .gitignore
├── .gitattributes
├── package.json
├── README.md
├── ARCHITECTURE.md
├── css/
├── js/
│ ├── main.js
│ ├── core/
│ ├── components/
│ ├── data/
│ ├── interactions/
│ ├── pages/
│ ├── shaders/
│ ├── transitions/
│ └── webgl/
├── assets/
│ ├── images/
│ ├── textures/
│ └── videos/
├── test/
└── .github/
└── workflows/
└── deploy.yml
The site uses ES modules, so open it through a local HTTP server rather than double-clicking index.html.
- Open the
NOCTURNEfolder in VS Code. - Install Live Server if you do not already have it.
- Right-click
index.html. - Select Open with Live Server.
- Open the local URL shown by VS Code.
python -m http.server 8080Then open:
http://localhost:8080
npx serve .If Node.js is installed:
npm testThe test command runs the complete Phase 1–11 audit.
A successful run should end with:
=== Phase 11 final audit: ALL CHECKS PASSED ===
The repository is already prepared for GitHub Pages.
- Sign in to GitHub.
- Click New repository.
- Choose a repository name, for example:
nocturne-magazine - Choose Public if you want the site available through GitHub Pages on a free GitHub account.
- Do not create another README if you are uploading this complete folder.
- Click Create repository.
- Open the new repository.
- Click Add file → Upload files.
- Open the prepared
NOCTURNEfolder on your computer. - Select everything inside the NOCTURNE folder, including:
index.htmlissue.htmlstory.htmlarchive.html404.htmlassetscssjstest.github.nojekyll.gitignore.gitattributespackage.json
- Drag the selected files into GitHub's upload area.
- Wait until the upload finishes.
- Enter a commit message such as:
Deploy NOCTURNE - Click Commit changes.
Important: index.html must be at the top level of the repository. Do not upload the outer ZIP folder as the only top-level item.
Correct:
repository/
├── index.html
├── css/
├── js/
└── assets/
Incorrect:
repository/
└── NOCTURNE/
├── index.html
├── css/
└── js/
This package includes .github/workflows/deploy.yml.
- Open your repository.
- Click Settings.
- In the sidebar, open Pages.
- Under Build and deployment → Source, choose GitHub Actions.
- Return to the repository and open the Actions tab.
- Open Deploy NOCTURNE to GitHub Pages.
- Wait for the workflow to finish with a green check.
- Open Settings → Pages again.
- GitHub will show the live site URL.
For a normal project repository, the URL format is:
https://YOUR-GITHUB-USERNAME.github.io/YOUR-REPOSITORY-NAME/
For example, if the username is example and the repository is nocturne-magazine:
https://example.github.io/nocturne-magazine/
You can also deploy without the workflow:
- Open Settings → Pages.
- Under Build and deployment → Source, choose Deploy from a branch.
- Select:
- Branch:
main - Folder:
/ (root)
- Branch:
- Click Save.
- Wait for the deployment.
- Open the URL shown by GitHub.
The included .nojekyll file prevents unnecessary Jekyll processing for this plain static project.
The project intentionally uses real static HTML pages:
/index.html
/issue.html?id=014
/issue.html?id=015
/issue.html?id=016
/story.html?id=shape-of-now
/archive.html
You can copy and share these URLs directly.
Check these in order:
- Confirm
index.htmlis at repository root. - Confirm the
css/andjs/folders are also at repository root. - Confirm folder names are lowercase exactly as supplied.
- Open browser DevTools → Console.
- Look for a missing
.js,.css, image, or import-map error. - Refresh with a hard reload.
- Open the GitHub Actions tab and verify deployment succeeded.
- Open the Pages URL from Settings → Pages, rather than guessing the URL.
Verify that the repository contains:
assets/images/issues/014/
assets/images/issues/015/
assets/images/issues/016/
with their supplied images and gallery folders.
GitHub Pages paths are case-sensitive. Images and images are different paths.
This is not a deployment failure.
NOCTURNE deliberately treats WebGL as an enhancement. The main magazine remains usable if:
- WebGL is unavailable;
- the browser does not support the required feature;
- the Three.js CDN cannot be reached;
- the device is low-powered;
- reduced-motion preferences are enabled.
The static CSS/image experience is the fallback.
- Open the repository.
- Edit or upload the changed files.
- Commit the changes.
- If using the included Actions workflow, GitHub automatically deploys the new version after the commit reaches
main.
git clone https://github.com/YOUR-GITHUB-USERNAME/YOUR-REPOSITORY-NAME.git
cd YOUR-REPOSITORY-NAMEReplace the project files with your updated NOCTURNE files, then:
git add .
git commit -m "Update NOCTURNE"
git push origin mainThe GitHub Pages workflow will deploy the update automatically.
Add the new issue to:
js/data/issues.js
Add its stories to:
js/data/stories.js
Add its gallery data to:
js/data/gallery.js
Then add the corresponding assets:
assets/images/issues/017/
├── cover.jpg
├── hero.jpg
├── story-01.jpg
├── story-02.jpg
├── story-03.jpg
└── gallery/
├── 01.jpg
├── 02.jpg
└── 03.jpg
Run:
npm testbefore publishing.
- HTML5
- CSS3
- Vanilla JavaScript ES Modules
- Three.js
0.160.0via jsDelivr - WebGL / GLSL
- IntersectionObserver
- Web Audio-compatible browser APIs where used
- Responsive CSS
- Reduced-motion support
- GitHub Pages
- GitHub Actions
No backend or database is required.
This repository contains the supplied NOCTURNE project and its bundled assets. Before distributing the repository publicly, make sure you have the rights to publish every image, font, video, texture and other asset you include.