Getting started¶
This guide takes a new operator from a checkout to a usable local Cmsify instance and a token for an integration.
Prerequisites¶
- Docker Desktop with Compose support
- Git
- PowerShell, Bash, or an equivalent shell
Run the local stack¶
From the repository root:
The API listens on http://localhost:5000 and the admin UI on http://localhost:5001. Swagger is at http://localhost:5000/swagger.
Cmsify applies migrations on API startup. It also creates the default workspace and the first admin user when the database is empty. The seeded values come from Seed:DefaultWorkspace:* and Seed:Admin:* configuration keys; the sample password is for local development only.
Before defining your first model, read Content modeling. It explains the roles of templates (content-type schemas), components (reusable inline schemas), and content items (the authored, publishable instances).
Sign in and create an API client¶
- Open the admin UI and sign in with
Seed:Admin:EmailandSeed:Admin:Password. - Change the temporary password when prompted.
- Create an API client from the API client/settings area.
- Give the client the smallest role and workspace scope it needs. A server-side content reader normally needs the
Readerrole and one workspace. - Copy the returned
cmsify_...token immediately. Cmsify stores only a hash and never shows the raw token again.
Use the token only from a server-side process or secret store. Do not put it in browser JavaScript, a public environment variable, a committed .env file, or a client-side bundle.
Slugs¶
Workspace, template, component, picklist, and content slugs use lowercase ASCII letters and digits, with single - or _ separators between alphanumeric segments. They are limited to 100 characters. For example, blog-post and blog_post_2 are valid; Blog/Post, blog post, and blog--post are not. Content slugs are optional, but follow the same rule when supplied.
Verify the API¶
Set the URL, token, and workspace ID/slug in your application, then call a read endpoint. The TypeScript example is the shortest path:
For an application example, see examples/nextjs-app-router/cmsify.ts and the integration guide.
Stop and reset local data¶
Stop the stack with Ctrl+C. The development database and media are stored under local/, which is ignored by Git. Remove those directories only when you intentionally want to recreate the local database and uploaded files.