Skip to content

Getting started

Getting started

This guide walks you from installing GENNAI to publishing your first media site. It assumes version 0.2.0.

Requirements

GENNAI's authoring environment runs on Docker. Make sure your machine has the following:

  • Docker (Docker Desktop or Docker Engine)
  • Docker Compose v2 (the docker compose command)
  • Git

On startup, containers for the admin (Laravel 12), the front end (Next.js 14) and the database (MySQL) come up. Because the public site is made of static files, you don't need a PHP or database server to serve it.

Installation

Clone the repository and run the installer.

Terminal
git clone <repository URL> my-media
cd my-media
./install.sh

The installer prepares the configuration files, then builds and starts the Docker containers. The first run takes a few minutes to build the images. When it finishes, the setup wizard URL (…/setup) is shown in the terminal.

If the ports clash with other services, you can change them with options.

Example: installing with custom ports
./install.sh --site-id my-media --cms-port 48080 --frontend-port 43000 --db-port 43306
Run ./install.sh --help to see all available options.

Setup wizard

Open the displayed URL in your browser to start the 8-step wizard. Follow the on-screen instructions.

  1. 1

    Site basics

    Register the foundational details of your site, such as its name and public URL.

  2. 2

    Administrator

    Create the administrator account used to sign in to the admin.

  3. 3

    Operator information and publishing rules

    Set your operator information and rules such as banned words for public pages.

  4. 4

    Theme and brand

    Choose a theme and set your logo and brand colors.

  5. 5

    Analytics (GA4, GTM, Search Console)

    Set up web analytics and search performance tracking.

  6. 6

    Referral CTA

    Set the referral destination for readers and the button text.

  7. 7

    Plugins

    Choose the plugins you want and enable them.

  8. 8

    Review and finish

    Review your settings and complete the setup.

Writing and publishing articles

Once the wizard is done, create articles from the admin. Publishing works like this:

  1. Create and edit articles and parts in the admin
  2. Run a build to export the entire site as static HTML (Next.js static export)
  3. At the end of the build, every page is checked automatically (banned words, 404 page, internal links)
  4. Deploy the HTML that passed the checks to a static host such as S3 + CloudFront
If the automatic checks find a violation, the build stops right there, so nothing is ever published in violation. The check rules (such as banned words) can be edited through the admin GUI.

Plugin basics

A plugin consists of two halves: the Laravel side (admin and API) and the Next.js side (public site). Plugins can be enabled or disabled from the admin, and disabled plugins are left out of the site.

Directory structure
laravel/plugins/<id>/          # Laravel side (required)
frontend/src/plugins/<id>/     # Next.js side (optional)

You can generate a scaffold with a command.

Scaffold a plugin
docker compose exec laravel php artisan plugin:make my-feature --frontend

Add --frontend to also scaffold the Next.js side. Use --name="Display name" to set the name shown in the admin.

Theme basics

A theme bundles all the files that affect the look into a single directory. Themes can be switched in the admin.

Theme structure
frontend/themes/my-theme/
├── theme.json      # Theme name, version, parts to swap
├── tokens.css      # Design tokens: colors, spacing, typography
├── overrides.css   # Optional: CSS overrides for components
└── components/     # Optional: swap parts such as the header and footer

The quickest start is to copy the default theme's tokens.css and change the values. Whether to show an ad disclosure (PR label), and its wording, is set in the admin's site settings; themes can change how it looks.

Working with AI agents

Articles, parts, tasks and the wiki can be operated through an HTTP API (MCP). Give an AI agent a token issued in the admin, and it can create and update articles and organize tasks.

The automatic pre-publish checks apply equally to changes made through the API, which makes it easy to combine agents with a workflow where people do the final review.

Want to talk about adoption or migration?

From setting up your environment to how you run things day to day, feel free to get in touch.

Talk to us