Riot documentation

A bold, colourful neo-brutalist Ghost theme for creator newsletters, paid communities and personal brands.
Thank you for choosing Riot. This guide covers everything from uploading the theme to setting up paid memberships. If something is not covered here, write to support@codememory.com — we answer within one working day.
- Version1.0.0
- Ghost6.0.0 or later
- Live demoriot.ghostcms.templates.codememory.com
- AuthorCode Memory
Highlights
- Sticker-covered homepage hero with a big subscribe form
- Personal photo frame with a spinning star and a name sticker
- Tilted, animated topic marquee
- 'Start here' grid of your featured posts in rotating candy colours
- Issue list with dates, topic stickers and lock badges
- Colour-block post header that takes the colour of the post's tag
- No-image post template for text-only issues
- Subscribe box, author card and previous/next issue after every post
- Topics page with bright colour cards
- Membership page with tiers and a monthly/yearly switch
- Styled paywall for members-only and paid issues
- Sign in, sign up and account pages
- Light, dark and system modes with a reader toggle
- Reading progress bar and image lightbox
- Self-hosted fonts (Bricolage Grotesque, Space Mono)
- Fully translatable, 19 theme settings, no jQuery
What is in the download
themeforest-riot-ghost-theme/
├── documentation/ ← you are here
└── riot_1.0.0_for_ghost_6.0.0_or_later/
├── riot.zip ← upload this file to Ghost
└── riot/ ← the same theme, unzipped, with source files
You only need riot.zip to use the theme. The unzipped folder is there for developers who
want to change the code (see Development).
Installation
- Sign in to your Ghost admin (
yoursite.com/ghost). - Go to Settings → Design & branding → Customize → Change theme.
- Click Upload theme and choose
riot.zipfrom theriot_1.0.0_for_ghost_6.0.0_or_laterfolder. Do not upload the whole download. - Click Activate.
Updating
When a new version is released, download it from your ThemeForest Downloads page and upload the new
riot.zip the same way. Ghost asks whether to overwrite the existing theme — choose
Overwrite. Your content, navigation and theme settings are kept.
If you edited the theme files yourself, keep a copy of your changes first: an update replaces every file.
Quick setup (10 minutes)
To make your site look like the demo, do these steps in order. Each one is explained in detail further down.
- Brand: Settings → Design & branding → set the Accent colour, upload a logo and a site icon.
- Navigation: Settings → Navigation → add your main links (see Navigation).
- Pages: create the pages in Pages and templates and pick the matching template.
- Membership: Settings → Membership → turn on signups; add paid tiers and connect Stripe (see Membership).
- Theme settings: Design & branding → Theme tab (see Theme settings).
- Hero image: upload a photo of yourself in Hero image (Homepage tab). A portrait photo of at least 900 × 1100 px works best.
- Tag colours: give each main tag a colour in Tags → Edit → Color. Post headers, cards and topic cards use it.
- Featured posts: mark 3 posts as Featured for the 'Start here' section.
Logo, colours and fonts
Accent colour
Settings → Design & branding → Accent colour. Riot uses it for buttons, links, highlights and the reading-progress bar. Riot's default accent is hot pink (#FF5F9E), used for the main buttons, list bullets and focus rings. Card colours come from each tag's colour.
Logo
Upload a logo in Design & branding → Brand. Without a logo, Riot shows the site title in the theme's display font. A transparent PNG or SVG around 400 × 100 px works best. If your logo is dark, upload a light version in the Theme tab under Logo for dark mode.
Fonts
Riot ships its own fonts (Bricolage Grotesque, Space Mono), hosted inside the theme — no requests to Google. To use different fonts, pick a Heading font and Body font in Design & branding → Brand. The theme follows your choice everywhere. Choose Theme default to go back.
Light and dark mode
In the Theme tab, Color scheme sets the default: Light, Dark or System (follows the reader's device). Readers can switch with the moon/sun button in the header or the switch in the menu; their choice is remembered on that device.
Theme settings
Settings → Design & branding → Customize. Theme settings are split between the Site wide, Homepage and Post tabs. Every setting:
| Setting | Group | Type | Default | What it does |
|---|---|---|---|---|
| Color scheme | Site wide | select | Light (Light / Dark / System) | Default colour scheme. Readers can still switch with the toggle. |
| Logo for dark mode | Site wide | image | — | A light version of your logo, shown in dark mode. |
| Hero title | Homepage | text | Weekly notes on making things and getting paid for them. | Big homepage headline. Empty = site title. |
| Hero text | Homepage | text | One honest, useful email every Tuesday: real numbers, real templates and real stories from people who make things for a living. | Text under the headline. Empty = site description. |
| Hero image | Homepage | image | — | Photo beside the headline (for example your portrait). Empty = the site cover image. |
| Hero sticker | Homepage | text | New issue every Tuesday | Tilted sticker above the headline. |
| Image sticker | Homepage | text | Hi, I'm Maya! | Sticker on the corner of the hero photo. |
| Social proof | Homepage | text | Join 24,000+ curious readers | |
| Show start here | Homepage | boolean | On | Three featured posts under the hero. |
| Start title | Homepage | text | Start here | |
| Premium title | Homepage | text | Get the good stuff | Premium block at the end of the homepage (only when paid tiers exist). |
| Premium text | Homepage | text | Deep dives, templates and the full archive. Cancel anytime. | |
| Show next story | Post | boolean | On | Previous/next issue links at the end of each post. |
| Show share buttons | Post | boolean | On | Share buttons (X, Facebook, LinkedIn, copy link) under posts. |
| Show author box | Post | boolean | On | Author photo and bio under posts. |
| Show related posts | Post | boolean | On | Three posts from the same tag under each post. |
| Show reading progress | Post | boolean | On | Progress bar at the top of the screen while reading a post. |
| Footer cta | Site wide | text | Don't miss the next issue. | Headline of the subscribe box in the footer. |
| Footer text | Site wide | text | empty | Short text in the footer. Empty = the site description. |
Homepage
- Hero — your headline (Hero title), a short line (Hero text), a subscribe form and a line of social proof (Social proof). The photo on the right is Hero image (or the site cover image). Hero sticker and Image sticker set the two small labels.
- Topic marquee — your ten biggest public tags scroll past in a tilted band. It stops when a reader hovers over it, and stays still for readers who turn on reduce motion.
- Start here — your three newest featured posts as colour cards. Settings: Show start here, Start title.
- Latest issues — every post as a dated row, with Load more.
- Premium box — shown to visitors and free members when paid memberships are on. Settings: Premium title, Premium text.
Tag colours
Riot is built on six candy colours. Cards in a grid rotate through them automatically. When a post's primary tag has a colour (Tags → Edit → Color), that colour is used instead: in the post header box, on its card and on the tag page header.
Choose bright, light colours so black text stays readable. The demo uses #FFD23F, #3DDC97, #C3A3FF, #FF85C8, #7B9BFF and #FF9150.
Posts
A post opens with a big colour box holding the tag stickers, title, excerpt and byline, then the feature image in a thick frame. Choose the No image template to hide the feature image for text-only issues (it is still used on cards and when shared).
After the post, readers get the share bar, a subscribe box, the author card and previous/next issue links. Each can be turned off in the Post settings tab.
Pages and templates
Riot includes page templates for the pages every membership site needs. Create a page in Ghost (Pages → New page), set its URL in the page settings, then choose the Template in the same panel.
| Template | Suggested URL | Use |
|---|---|---|
Membershipcustom-membership.hbs | /membership/ | Your tiers with a monthly/yearly switch. The page body (for example a FAQ made of toggle cards) appears below. |
Topicscustom-topics.hbs | /topics/ | Every public tag as a bright colour card with its issue count and description. |
Writerscustom-writers.hbs | /writers/ | Every author with at least one post, as cards that light up on hover. |
Signincustom-signin.hbs | /signin/ | Email sign-in form (magic link). The page's feature image sits in a tilted frame. |
Signupcustom-signup.hbs | /signup/ | Free signup form with name and email. The page's feature image sits in a tilted frame. |
Accountcustom-account.hbs | /account/ | Signed-in members see their plan, renewal date, card and links to manage billing and newsletters. |
Tip: the membership page shows your tiers automatically. Anything you write in the page body appears underneath — the demo uses toggle cards for a FAQ.
Post templates
Choose a template per post in the post settings panel → Template.
| Template | Use | |
|---|---|---|
No imagecustom-no-image.hbs | The colour header without the feature image below it. Good for short or text-only issues. |
Membership, tiers and payments
Riot is built for Ghost's members features: free and paid signups, tiers, a paywall and the Portal popup.
1. Turn on signups
Settings → Membership → Access → Who should be able to subscribe? → Anyone can sign up.
2. Connect Stripe
Settings → Membership → Tiers → Connect with Stripe. Use test mode first, then switch to live mode when you are ready to take real payments.
3. Create tiers
Settings → Membership → Tiers. Add a name, monthly and yearly prices, a description and benefits. Riot shows every public tier on the membership page with a monthly/yearly switch, and marks the second tier as Most popular.
4. Members-only content
In a post's settings set Post access to Members only, Paid-members only or
specific tiers. Readers without access see the start of the post and a paywall box that invites them to join
or upgrade. To choose where the preview stops, add a Public preview divider in the editor
(type /public).
5. Sign-up forms and buttons
Subscribe forms in the theme create free members and send a confirmation email. Every Subscribe, Sign in and Account button opens Ghost's Portal popup, so members can change plans, update cards and cancel without leaving your site.
config.production.json.Reading features
- Reading progress bar on posts, in the post's topic colour (can be turned off in the Post tab).
- Image lightbox: click any image or gallery photo in a post to see it full screen; use the arrow keys to move through a gallery.
- Every editor card is styled: images (regular, wide, full), galleries, quotes, callouts, toggles, bookmarks, buttons, videos, audio, files, products, headers and signups. Create a page with every card to check your brand — the demo's style guide shows them all.
Posts per page
The home, tag and author pages load 10 posts, then a
Load more button fetches the next set without reloading the page. To change the number, edit
"posts_per_page" in package.json, zip the theme folder and upload it again.
Translation
Every word in the theme can be translated.
- In the unzipped theme folder, copy
locales/en.jsonto a new file named after your language code, for examplelocales/fr.json. - Translate the values (the text on the right). Keep the keys (the text on the left) and anything in
{curly braces}unchanged. - Zip the theme folder and upload it.
- Settings → General → Publication language → enter the same code (
fr).
Custom CSS
Small style changes do not need a new theme upload. Settings → Code injection → Site header:
<style>
:root { --b: 2px solid var(--ink); --shadow: 4px 4px 0 var(--ink); }
.marquee { transform: none; }
</style>
Development
For larger changes, work on the unzipped riot/ folder. You need Node.js 20 or later.
cd riot npm install # once npm run dev # rebuild CSS/JS on every change npm run build # one-off build npm test # check the theme with gscan npm run zip # dist/riot.zip, ready to upload
CSS lives in src/css (one file per area, joined by main.css); JavaScript in
src/js. Built files go to assets/built. Templates are Handlebars files in the theme root
and in partials/.
Questions
The homepage looks empty after I activated the theme.
The home sections use your posts, featured posts and tags. Publish a few posts, mark some as Featured and add tags. 'Start here' appears once some posts are featured.
The membership page shows no prices.
Paid tiers only appear once Stripe is connected and the tiers are public (Settings → Membership → Tiers).
Sign-in emails do not arrive.
Check your email settings (self-hosted: Mailgun or SMTP in the config file). Ask readers to look in their spam folder.
How do I remove "Published with Ghost" from the footer?
Delete the link from partials/footer.hbs in the unzipped theme, zip the folder and upload it again.
Can I use the theme on more than one site?
A Regular licence covers one site (one end product). Buy one licence per site.
Are the demo images included?
No. Demo photos come from Pixabay and are only used on the demo site. The theme itself contains no stock photos.
Support
Support is included with your purchase and covers: answering questions about the theme's features, and fixing bugs. It does not cover custom changes or problems with third-party code.
Email support@codememory.com with your purchase code and your site address. See the changelog for what changed in each version and third-party materials for credits.