Home
Softono
alinea

alinea

Open source MIT TypeScript
849
Stars
38
Forks
30
Issues
6
Watchers
6 days
Last Commit

About alinea

[![npm](https://img.shields.io/npm/v/alinea.svg)](https://npmjs.org/package/alinea) [![install size](https://packagephobia.com/badge?p=alinea)](https://packagephobia.com/result?p=alinea) <br /> <a href="https://vercel.com/oss"> <img alt="Vercel OSS Program" src="https://vercel.com/oss/program-badge.svg" /> </a> <br /> # [Alinea CMS](https://alineacms.com) Alinea is a modern content management system. - Content is stored in flat files and committed to your repository - Content is easily queryable through an in-memory database - Content is fully typed ## Get started Install Alinea in your project directory ```sh npm install alinea ``` Initialize Alinea's config file ```sh npx alinea init ``` Open the dashboard to have a look around ```sh npx alinea dev ``` [Start configuring types and fields →](https://alineacms.com/docs/configuration) ## Coding agents If you are working in a project that depends on `alinea`, a handbook is included in the npm distribution at `./llms-full.txt`. ## Configure Con ...

Platforms

Web Self-hosted

Languages

TypeScript

npm install size


Vercel OSS Program

Alinea CMS

Alinea is a modern content management system.

  • Content is stored in flat files and committed to your repository
  • Content is easily queryable through an in-memory database
  • Content is fully typed

Get started

Install Alinea in your project directory

npm install alinea

Initialize Alinea's config file

npx alinea init

Open the dashboard to have a look around

npx alinea dev

Start configuring types and fields →

Coding agents

If you are working in a project that depends on alinea, a handbook is included in the npm distribution at ./llms-full.txt.

Configure

Configure Alinea in cms.ts

import {Config, Field} from 'alinea'

const BlogPost = Config.document('Blog post', {
  fields: {
    title: Field.text('Blog entry title'),
    body: Field.richText('Body text')
  }
})

const Blog = Config.document('Blog', {
  contains: [BlogPost]
})

Type options and fields →

Query

Retrieve content fully-typed and filter, order, limit as needed.
Select only the fields you need.

import {Query} from 'alinea'

console.log(
  await cms.get({
    type: Blog,
    select: {
      title: Blog.title,
      posts: Query.children({
        type: BlogPost,
        select: {
          title: BlogPost.title
        }
      })
    }
  })
)

See the full api →

Content is available during static site generation and when server side querying.
Content is bundled with your code and can be queried with zero network overhead.

How alinea bundles content →

Deploy anywhere

Alinea supports custom backends that can be hosted as a simple Node.js process or on serverless runtimes.

Setup your backend →

How to contribute to this project

Have a question or an idea? Found a bug? Read how to contribute.