fastschema is a free, open source content management systems (cms) project written in Go and released under MIT. It has 573 GitHub stars, 55 forks and 32 open issues, and was last pushed 2 months ago. On this registry it ranks #44 of 47 tracked projects in Content Management Systems (CMS), with 5 head-to-head comparisons available.

What is fastschema?

FastSchema is an MIT-licensed, Go-based Backend as a Service and web framework that turns a declared schema into database tables and RESTful CRUD APIs, built for developers and no-code teams creating headless CMS platforms and dynamic web applications.

What it is

FastSchema is an all-in-one backend platform that combines Backend as a Service convenience with headless CMS capabilities, written in Go and distributed under the MIT licence. Its foundation is the schema, a blueprint that outlines the structure of your content; from that single definition, FastSchema builds database tables and generates API endpoints automatically. The project also ships as a Go web framework, importing as github.com/fastschema/fastschema, so the same platform can power a no-code content backend or serve as the basis for a hand-built application.

The concrete problem it solves is the repetitive backend work that sits between a content model and a working API. Rather than hand-writing database migrations, CRUD endpoints, and admin tooling, a team defines models and lets FastSchema generate the database and expose RESTful APIs. It occupies the space of a self-hosted backend framework inside the Go ecosystem, and it replaces the manual assembly of a database layer, an API layer, and a content management interface that would otherwise be built and wired together by hand.

Key capabilities

  • Schema-driven generation: a single schema definition produces both the database tables and the API endpoints, so content models and APIs stay in sync.
  • Ready-to-use RESTful CRUD APIs generated from content models, supporting API-first development without hand-written endpoint code.
  • A database ORM exposed through github.com/fastschema/fastschema/db, providing methods to query, create, update, and delete records.
  • Resources as access points to data, allowing custom endpoints and customised API behaviour beyond the generated defaults.
  • Hooks that run before or after operations, in three forms: resolver hook, database hook, and application hook.
  • A built-in setup and dashboard flow served from /dash/setup/ and /setup, gated by a setup token printed to the terminal.
  • Default SQLite storage at /fastschema/data/fastschema.db, with the application key managed through APP_KEY and persisted to /fastschema/data/.env.

Who uses it and how

  • No-code and low-code teams building a headless CMS, defining content models and creating content without writing code.
  • Go developers who want a framework for web applications, extending generated APIs with custom Resource definitions and Hook logic.
  • Teams adopting API-first development, where content models are declared first and RESTful APIs are generated from them.
  • Operators deploying via Docker who pull ghcr.io/fastschema/fastschema:latest, map port 8000, and persist state through a ./data:/fastschema/data volume.

Getting started

The quickest path is Docker: pull ghcr.io/fastschema/fastschema:latest and run it with -p 8000:8000 and -v ./data:/fastschema/data, then open the setup URL printed in the terminal. Go projects can instead import github.com/fastschema/fastschema and construct an application with fastschema.New(&fs.Config{...}).

How it compares

No comparable products are named in the facts provided, and the registry does not list paid alternatives that this project replaces. On the evidence available, FastSchema stands alone in this registry.

When to use it — and when not to

A self-hoster must operate the runtime and its storage, including the default SQLite database file and the .env file holding the application key, or supply their own database configuration. Teams that need a stable, production-hardened platform should note that FastSchema is explicitly in beta and under active development, so interfaces may still change. It is a poor fit for anyone unwilling to run and maintain a backend service themselves, since there is no hosted option described in the facts.

project readme (upstream, from github) — read inline

FastSchema

Mentioned in Awesome Go Go.Dev reference go report card codecov test status MIT license

Contributing Guidelines · Submit an Issue

FastSchema is a Backend as a Service (BaaS) and Go web framework for building dynamic web applications. Designed to simplify backend development, FastSchema automates the generation of databases, provides ready-to-use CRUD APIs, and offers tools for managing structured content effortlessly

Table of Contents

Introduction

Check out our introduction video to get a quick overview of FastSchema:

FastSchema Introduction

Try it out

Launch a complete backend in seconds or utilize it as a versatile web framework. FastSchema combines the ease of a Backend as a Service with the flexibility to manage real-time data and structured content seamlessly.

Run the Docker Container:

docker pull ghcr.io/fastschema/fastschema:latest
docker run \
  -p 8000:8000 \
  -v ./data:/fastschema/data \
  ghcr.io/fastschema/fastschema:latest

Example output:

> APP_KEY is not set. A new key is generated and saved to /fastschema/data/.env
> Using the default sqlite db file path: /fastschema/data/fastschema.db
> Visit the following URL to setup the app: http://localhost:8000/dash/setup/?token=lUDRgoTUUNDsjCcitgGFTqwMZQPmYvlU

Now you can access to the FastSchema setup page by visiting http://localhost:8000/setup?token={token} (The setup token is displayed in the terminal).

Note: FastSchema is currently in beta and under active development. We welcome feedback, contributions, and suggestions from the community to help improve the platform and make it more robust and feature-rich.

Overview

FastSchema core features are built on top of schema, a blueprint that outlines the structure of your content. This schema acts as the foundation upon which FastSchema builds your database tables and API endpoints, streamlining the development process and allowing you to focus on creating rich, dynamic content.

FastSchema Overview

Use Cases

  • A BaaS platform with Headless CMS capabilities (No-Code Solution).

    FastSchema is an ideal solution for building backend applications, including headless CMS, with dynamic content modeling and real-time capabilities—all without writing a line of code.

    It is designed to support API-first development, allowing you to define your content models and generate RESTful APIs effortlessly.

    With two line of commands, you can create a new project, define your content models, and start creating content instantly.

  • A Framework for web development

    FastSchema is designed to be used as a framework for building web applications. It provides a set of tools and packages that simplify the development process.

    Resource is a core concept that represents an access point to your data. By defining resources, you can create custom endpoints and customize the behavior of your APIs.

    Hooks are functions that are executed before or after an operation is performed on a resource. A Hook can be a resolver hook, database hook, or application hook. They allow you to add custom logic to your APIs and extend the functionality of FastSchema.

    ORM is a powerful tool that simplifies the interaction with your database. It provides a set of methods for querying, creating, updating, and deleting records in your database.

Web Framework

package main

import (
	"fmt"
	"log"

	"github.com/fastschema/fastschema"
	"github.com/fastschema/fastschema/db"
	"github.com/fastschema/fastschema/fs"
)

func main() {
	app, _ := fastschema.New(&fs.Config{
		SystemSchemas: []any{Tag{}, Blog{}},
	})

	app.API().Add(fs.Post("/blogvote", func(c fs.Context, vote *Payload) (*Response, error) {
		_, err := db.Mutation[Blog](app.DB()).
			Where(db.EQ("id", vote.ID)).
			Update(c.Context(), fs.Map{
				"$expr": fs.Map{"vote": "vote + 1"},
			})

		return &Response{
			Success: err == nil,
			Message: fmt.Sprintf("Vote for %d: %v", vote.ID, err),
		}, nil
	}))

	log.Fatal(app.Start())
}

Features

FastSchema offers a comprehensive suite of features designed to streamline and simplify the process of building and managing dynamic web applications.

  • Automated Database Generation: FastSchema automatically generates the necessary database tables based on your schema definition with flexible relationships model, eliminating the need for manual setup.

  • RESTful API Generation: RESTful APIs are automatically generated based on the schema definition. Whenever you create or update a schema, the corresponding API endpoints are updated accordingly.

  • Dynamic Content Modeling: Easily create and modify content models through the intuitive admin UI, with changes reflected instantly in the schema definition file.

  • Built-in File Management: FastSchema provides a built-in file manager to manage media assets, enabling you to upload, organize, and serve files seamlessly.

  • Built-in Admin Control Panel: FastSchema comes with a built-in admin control panel that allows you to manage content, users, manage permissions, and more.

  • Database Support: MySQL, PostgreSQL, SQLite.

  • Role-Based Access Control: Define roles and permissions to control access to content and features.

  • OpenAPI Specification (OAS) Generation: FastSchema automatically generates OpenAPI Specification (OAS) documentation for your APIs, making it easy to understand and consume your APIs.

  • Extensible and Flexible: Extend and customize FastSchema with Go code, build extensive features by leveraging the power of Resources, Hooks, ORM, and more.

  • Real-time Updates: FastSchema supports real-time updates, allowing you to build dynamic web applications that update in real-time without the need for manual refresh.

  • Plugin System: FastSchema comes with a plugin system that allows you to extend the functionality of the platform with custom plugins.

Documentation

For more information on how to get started with FastSchema, check out our documentation.

Roadmap

  • Improve documentation and testing.
  • Add auth provider.
  • OpenAPI generator.
  • Real-time updates.
  • Plugin system.
  • GraphQL support.
  • Webhooks.
  • Client SDKs.

Testing

FastSchema comes with a suite of automated tests to ensure the stability and reliability of the platform.

FastSchema come with integration tests that require a database connection. You can use the following command to create DB containers.

cd tests/integra

readme truncated — read the full docs on github

Frequently asked questions

Is fastschema free to use?

fastschema is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does fastschema do?

All-in-One Backend as a Service with Headless CMS Power

What is fastschema written in?

fastschema is primarily written in Go. Its source is publicly available at https://github.com/fastschema/fastschema, and it has 573 GitHub stars.