FastSchema

具有无头CMS功能的一体化后端即服务。「All-in-One Backend as a Service with Headless CMS Power」

Github星跟蹤圖

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.

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/integration
docker compose up -d

To run the tests, execute the following command:

go test ./...

You can skip the integration tests by running tests for packages only.

./tests/test.sh ./schema

Dependencies

FastSchema is built using the Go programming language and leverages a number of open-source libraries to provide its
core functionality. Some of the key dependencies include:

Contributing

Feel free to dive in! Open an issue or submit PRs.

Guidelines for
contributing.

We welcome contributions from the community and encourage developers to get involved in the project. Whether you're a seasoned developer or just getting started, there are plenty of ways to contribute to FastSchema.

Community

Join the conversation and help the community.

License

MIT © Nguyen Ngoc Phuong and Contributors

Enjoy using FastSchema? Give our repo a shiny star :star:!

主要指標

概覽
名稱與所有者fastschema/fastschema
主編程語言Go
編程語言 (語言數: 6)
平台
許可證MIT License
所有者活动
創建於2024-04-02 04:58:55
推送於2025-03-28 12:42:16
最后一次提交2025-03-28 19:41:57
發布數23
最新版本名稱v0.6.5 (發布於 2025-03-28 19:42:11)
第一版名稱v0.0.1 (發布於 2024-04-03 13:00:36)
用户参与
星數423
關注者數5
派生數37
提交數370
已啟用問題?
問題數18
打開的問題數8
拉請求數131
打開的拉請求數8
關閉的拉請求數52
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?