Getting Started with Accent

This walkthrough takes you from a fresh checkout to your first published edit through the admin UI. The full reference docs live next to it; this page is the canonical 1.0 onboarding.

Install

curl -fsSL https://accentcms.dev/install.sh | sh

On Windows:

irm https://raw.githubusercontent.com/AccentCMS/accent/main/install.ps1 | iex

Manual downloads and verification: github.com/AccentCMS/accent.

Confirm the install with accent --help.

Initialise a site

accent init my-site
cd my-site

init lays out the starter template: a config.yaml, a content/ directory with a homepage, and the default theme under themes/.

Start the dev server

accent serve

Visit http://localhost:4400. The home page is live. Editing any markdown file under content/ triggers a browser refresh in under a second.

Editing your first page in the admin Standard

The admin UI runs alongside the public site at /_admin/. Two gates must be true for the shell to mount: the binary must be built with the admin cargo feature (the default for Standard and Pro editions), and admin.enabled in config.yaml must be true.

  1. Enable the admin and set a token. Add an admin section to config.yaml:

    admin:
      enabled: true
      token: "your-secret-admin-token-min-32-bytes"
    

    The token can also be supplied through the ACCENT_ADMIN_TOKEN environment variable, which takes precedence over the value in config.yaml. In production, use at least 32 bytes of entropy; a startup warning is logged for tokens shorter than 16 characters.

  2. Start the server:

    accent serve
    
  3. Open http://localhost:4400/_admin/login and enter your token. It is compared in constant time against the configured token; on success you land on the dashboard. Failed attempts re-render the form with an inline error; only failed attempts count toward the rate limit of 10 per minute, so a burst of legitimate logins never locks you out.

  4. Browse the dashboard. It lists the five most recently modified pages and a validation summary bucketed by severity, so you can see at a glance what changed and whether anything needs attention.

  5. Open a page from the pages list. Click Pages to reach /_admin/pages – a paginated, filterable list of every page – and open the page you want to edit. The editor opens in edit mode with one input per frontmatter field.

  6. Edit a field and watch the live preview. As you change a field, the editor re-renders a live preview from your current form values, giving immediate visual feedback before you commit the change.

  7. Save the page. The save path validates your input, checks for concurrent edits, writes the file, and appends an entry to the admin audit log. The cache layer invalidates automatically, so the public site reflects your change on the next request.

  8. Move the page through the workflow. The editor shows only the transitions legal from the page’s current state, so the available buttons depend on where the page is. New pages start as Published, so to send one into the editorial flow you choose Unpublish (back to Draft) or Archive. From Draft the flow runs Submit for review to Review, then Approve to Published. Published pages are publicly visible (subject to any date constraints); drafts and pages in review stay hidden from the public site.

Shareable by default

Every page the default theme renders ships complete Open Graph and Twitter Card tags, a build-safe canonical link, and a page-specific description, so links unfurl as rich cards on Slack, LinkedIn, X, Mastodon, and friends with no extra work. To make those cards as good as possible, set a few site-wide values in config.yaml:

site:
  name: My Site
  url: https://example.com        # required for absolute canonical / og:url
  description: A short site-wide description used when a page has none.
  meta:
    twitter:site: "@mysite"        # any platform tag is just a key

structured_data:
  default_image: /assets/social-card.png   # branded fallback card image

Per page, set description:, image:, or a meta: block in frontmatter to override the defaults. See Social Sharing and SEO Metadata for the full system.

What’s next