inicontent

A modern, offline-first content management platform built with Nuxt 4, featuring page and email builder, file and data management, and client-side document processing
2,643 6
Install
npm install inicontent
Latest Version:1.5.0
Vue:3
License:Apache-2.0
Last Updated:Oct 11, 2026
Links: GitHub  ·  npm
Maintainer: inicontent

Inicontent CMS

npmjs License Activity GitHub stars

License: Inicontent CMS is open source under the Apache License 2.0. This repository contains the client layer only — the Inicontent backend API (inicontent/api) is proprietary.

Introduction

Inicontent CMS is a content management system built using Nuxt as its framework. It leverages modern tools such as:

  • Naive UI for a sleek component library.
  • Tabler Icons for intuitive and attractive icons.
  • Tiptap for a powerful Rich Text Editor.

Features

  • Multi-database admin - manage one or many databases from a single /admin interface.
  • Rich text editing via Tiptap.
  • Sleek UI built with Naive UI and Tabler Icons.
  • PWA-ready out of the box.
  • Drop-in as a Nuxt Layer, or clone and customize directly.

Custom blocks

Block types don't have to ship with the CMS. Declare one in app/components/Block/customBlocks.ts — a config schema, a Liquid template, and optional CSS — and it appears in the builder's block picker, the design picker, the config editor, and page rendering, with no component to write and no registry to edit.

Templates can read their own config fields ({{ heading }}), the row a dynamic page matched ({{ item.column }}), and loop over table rows ({% for %}). Output is HTML-escaped unless you pipe through | raw.

See AGENTS.md for the full contract.

Ecosystem

  • inicontent/starter — the minimal layer app to build on: a starting point with routing and the project wiring already done.
  • @inicontent/mcp — the MCP server that connects code agents (ChatGPT, Claude, Cursor, OpenCode, …) to a database: REST tools, context resources (the query language, table schemas and flows, authentication, custom-route registration), and starter scaffolding. This replaced the in-app AI assistant and chatbot, and is where the AI-agent context now lives.
  • inicontent/api (private) — the server behind https://api.inicontent.com/: REST CRUD per table, authentication, assets.

REST API & authentication (short version)

Every database gets a public REST API at https://api.inicontent.com/{databaseSlug}:

  • PUT {db}/auth/signin with { "username": ..., "password": ... } → returns a sessionID; pass it on every request as the {db}_sid query param.
  • Table data: GET/POST/PUT/DELETE {db}/{table} — list pagination/projection live in the Inison-stringified options query param and filters in where.
  • Structure: GET/POST/PUT/DELETE inicontent/databases/{db}[/{table}] for metadata, schemas, flows (onRequest/onResponse), and table CRUD.
  • AI access goes through the @inicontent/mcp server (there are no in-app /ai endpoints): its inicontent_* tools wrap the endpoints above and scaffold inicontent/starter for custom code.

For the full reference — query language, schema field types, flows, routing — connect a client to the @inicontent/mcp server, which serves it as context resources.

Usage

There are two ways to use this project:

1. Recommended Method: Install from npm and Add as a Nuxt Layer

The easiest way to integrate Inicontent CMS is to install it from npm and use it as a Nuxt Layer.

Steps:

  1. Install the package:
    npm install inicontent
    
    (or pnpm add inicontent, yarn add inicontent, bun add inicontent)
  2. Add it as a layer in your nuxt.config file:
    // nuxt.config.ts
    export default defineNuxtConfig({
      extends: ["inicontent"]
    });
    
  3. Remove your existing app.vue file to avoid conflicts.
  4. To override specific admin routes, create corresponding files in the pages directory. These will automatically override the default routes provided by the CMS.

Database Configuration:

  • By default, the CMS is a multi-database manager.
    • When no database is set in .env, the admin interface (/admin) will display all available databases. Users can then navigate to a specific database's admin panel at /admin/<dbName>.
    • If a database is specified in .env, the /admin route will directly display the tables for the specified database, removing the need to include the database name in the path.
# .env
database=DATABASE_SLUG

This method keeps your project clean and makes updates to the CMS easy: you stay on the inicontent version pinned in your package.json and upgrade intentionally with npm update inicontent.

2. Advanced Method: Clone and Edit the Repository

If you need extensive customization, clone the repository and modify it directly.

git clone https://github.com/inicontent/inicontent.git
cd inicontent
pnpm install

Environment Variables

Variable Required Default Description
database No inicontent Database slug the admin panel targets directly.
apiBase No https://api.inicontent.com/ Base URL for the Inicontent API.
idOne No (built-in default) Public identifier used by the API client.

Copy these into a local .env file as needed; none are required to start the dev server.

Setup

Install the dependencies to get started (any package manager works — npm, pnpm, yarn, or bun):

npm install

Development

Start the development server at http://localhost:3434:

npm run dev

Production

Build the application for production:

npm run build

Preview the production build locally:

npm run preview

Linting

This project uses Biome for linting and formatting:

pnpm lint    # check
pnpm format  # check and write

Contributing

Contributions are welcome. See CONTRIBUTING.md for setup, branch/commit conventions, and the PR process.

Related Packages

@revenexx/editor

revenexx hard fork of blökkli — interactive page building experience for Nuxt. I...

3,495
@corraya/cms-editor

Blokowy edytor wizualny treści dla aplikacji Vue 3 — kanwa, konspekt, panel właś...

820
nuxt-studio

Nuxt Studio for Nuxt Content

275,567 740
vue-page-composer

Visual page editor and renderer for Vue. Register the components you already shi...

1,731 0
vue-tiptap-editor

A Vue Editor Component based on Tiptap

591

Version History

Version Released License
1.5.0 Apache-2.0
1.4.0 Apache-2.0
1.3.0 Apache-2.0
1.2.0 Apache-2.0
1.1.0 Apache-2.0