Emet is a Vite project. Installing it means cloning the repository and running npm install; there’s nothing to scaffold and no database to set up.
What you’ll need#
- Node.js 22.12 or later, with npm.
- A Hugo site to point it at. For local development this can be any folder on disk; for a deployed CMS it needs to be a GitHub repository.
- For a deployed CMS, a GitHub App so people can sign in. You don’t need this to run Emet locally, so skip it for now and come back to GitHub App setup when you’re ready to deploy.
Cloning and installing#
git clone https://github.com/dmyates/emetcms.git
cd emetcms
npm installThat’s the whole install.
Running it locally#
The dev server runs against a Hugo site on your local filesystem, with no GitHub login at all. Point it at your site with HUGO_ROOT:
HUGO_ROOT=/path/to/your/hugo/site npm run devThe path must be absolute. Open http://localhost:5173 and you should see your site’s content sections in the sidebar.
On first run, the dev server scans the Hugo site and writes admin/site.yaml and admin/cms.yaml into it. These describe your sections, fields and shortcodes, and you’ll want to look them over; see Configuration. If the files already exist, Emet leaves them alone.
InfoWhat happens withoutHUGO_ROOT: Emet assumes it has been checked out inside a Hugo site atstatic/emetcms/and looks two directories up for the site. If it doesn’t find one there either, it starts in a mock mode with some demo content, which is handy for poking at the UI but not much else.
Building for deployment#
A production build is the same npm run build, with one difference: it needs your GitHub App’s client ID baked in at build time.
VITE_GITHUB_CLIENT_ID=Iv23.your_client_id npm run buildThe result in dist/ is a static site plus the OAuth token exchange in functions/, ready for Cloudflare Pages. See Deployment for the details, including what to do if you’re not on Cloudflare.
Where next?#
- Quick start walks through editing a real site end to end.
- Setup wizard explains the config generation that happens when you connect a GitHub repository.