{"id":29117211,"url":"https://github.com/fastschema/fastschema","last_synced_at":"2026-01-22T09:15:55.375Z","repository":{"id":231269113,"uuid":"780750224","full_name":"fastschema/fastschema","owner":"fastschema","description":"All-in-One Backend as a Service with Headless CMS Power","archived":false,"fork":false,"pushed_at":"2025-12-19T08:36:40.000Z","size":2764,"stargazers_count":525,"open_issues_count":28,"forks_count":48,"subscribers_count":3,"default_branch":"develop","last_synced_at":"2025-12-22T02:49:33.696Z","etag":null,"topics":["backend","backend-as-a-service","cms","framework","golang","headless-cms","low-code","no-code","rbac","react"],"latest_commit_sha":null,"homepage":"https://fastschema.com","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fastschema.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-04-02T04:58:55.000Z","updated_at":"2025-12-21T16:19:19.000Z","dependencies_parsed_at":"2024-04-03T08:26:04.177Z","dependency_job_id":"876db46f-7a9e-4c38-ba21-bbdcedcd088c","html_url":"https://github.com/fastschema/fastschema","commit_stats":null,"previous_names":["fastschema/fastschema"],"tags_count":43,"template":false,"template_full_name":null,"purl":"pkg:github/fastschema/fastschema","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastschema%2Ffastschema","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastschema%2Ffastschema/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastschema%2Ffastschema/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastschema%2Ffastschema/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fastschema","download_url":"https://codeload.github.com/fastschema/fastschema/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastschema%2Ffastschema/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28660203,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-22T01:17:37.254Z","status":"online","status_checked_at":"2026-01-22T02:00:07.137Z","response_time":144,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backend","backend-as-a-service","cms","framework","golang","headless-cms","low-code","no-code","rbac","react"],"created_at":"2025-06-29T11:14:16.688Z","updated_at":"2026-01-22T09:15:55.355Z","avatar_url":"https://github.com/fastschema.png","language":"Go","readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://fastschema.com\"\u003e\n    \u003cpicture\u003e\n      \u003csource height=\"125\" media=\"(prefers-color-scheme: light)\" srcset=\"https://fastschema.com/fastschema-logo-small.svg\"\u003e\n      \u003cimg height=\"125\" alt=\"FastSchema\" src=\"https://fastschema.com/fastschema-logo-small.svg\"\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/avelino/awesome-go\" target=\"_blank\" rel=\"noopener\"\u003e\n    \u003cimg src=\"https://awesome.re/mentioned-badge.svg\" alt=\"Mentioned in Awesome Go\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://pkg.go.dev/github.com/fastschema/fastschema#section-readme\" target=\"_blank\" rel=\"noopener\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/go.dev-reference-blue?logo=go\u0026logoColor=white\" alt=\"Go.Dev reference\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://goreportcard.com/report/github.com/fastschema/fastschema\" target=\"_blank\" rel=\"noopener\"\u003e\n    \u003cimg src=\"https://goreportcard.com/badge/github.com/fastschema/fastschema\" alt=\"go report card\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://codecov.io/gh/fastschema/fastschema\" target=\"_blank\" rel=\"noopener\"\u003e\n    \u003cimg src=\"https://codecov.io/gh/fastschema/fastschema/graph/badge.svg?token=TPU5QN6E4Z\" alt=\"codecov\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/fastschema/fastschema/actions\" target=\"_blank\" rel=\"noopener\"\u003e\n    \u003cimg src=\"https://github.com/fastschema/fastschema/actions/workflows/ci.yml/badge.svg\" alt=\"test status\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://opensource.org/licenses/MIT\" target=\"_blank\" rel=\"noopener\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/license-MIT-brightgreen.svg\" alt=\"MIT license\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"CONTRIBUTING.md\"\u003eContributing Guidelines\u003c/a\u003e\n  ·\n  \u003ca href=\"https://github.com/fastschema/fastschema/issues\" target=\"_blank\" rel=\"noopener\"\u003eSubmit an Issue\u003c/a\u003e\n  \u003cbr\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cem\u003eFastSchema 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\u003c/em\u003e\n\u003c/p\u003e\n\n## Table of Contents\n\n- [Introduction](#introduction)\n- [Try it out](#try-it-out)\n  - [Run the Docker Container](#run-the-docker-container)\n- [Overview](#overview)\n- [Use Cases](#use-cases)\n- [Web Framework](#web-framework)\n- [Features](#features)\n- [Documentation](#documentation)\n- [Roadmap](#roadmap)\n- [Testing](#testing)\n- [Dependencies](#dependencies)\n- [Contributing](#contributing)\n- [Community](#community)\n- [License](#license)\n\n## Introduction\n\nCheck out our introduction video to get a quick overview of FastSchema:\n\n[![FastSchema Introduction](https://img.youtube.com/vi/SQTo1ZngMRA/maxres1.jpg)](https://www.youtube.com/watch?v=SQTo1ZngMRA)\n\n## Try it out\n\nLaunch 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.\n\n### Run the Docker Container:\n\n```bash\ndocker pull ghcr.io/fastschema/fastschema:latest\ndocker run \\\n  -p 8000:8000 \\\n  -v ./data:/fastschema/data \\\n  ghcr.io/fastschema/fastschema:latest\n```\n\n**Example output:**\n\n```\n\u003e APP_KEY is not set. A new key is generated and saved to /fastschema/data/.env\n\u003e Using the default sqlite db file path: /fastschema/data/fastschema.db\n\u003e Visit the following URL to setup the app: http://localhost:8000/dash/setup/?token=lUDRgoTUUNDsjCcitgGFTqwMZQPmYvlU\n```\n\nNow you can access to the FastSchema setup page by\nvisiting [http://localhost:8000/setup?token=\\{token\\}](http://localhost:8000?token={token}) (The setup token is\ndisplayed in the terminal).\n\n\u003e **Note:** FastSchema is currently in beta and under active development. We welcome feedback, contributions, and\n\u003e suggestions from the community to help improve the platform and make it more robust and feature-rich.\n\n## Overview\n\nFastSchema core features are built on top of `schema`, a blueprint that outlines the structure of your content. This\nschema acts as the foundation upon which FastSchema builds your database tables and API endpoints, streamlining the\ndevelopment process and allowing you to focus on creating rich, dynamic content.\n\n\u003cp style=\"text-align: center;\"\u003e\n  \u003cimg src=\"https://fastschema.com/static/images/fastschema.png\" alt=\"FastSchema Overview\" /\u003e\n\u003c/p\u003e\n\n## Use Cases\n\n- **A BaaS platform with Headless CMS capabilities (No-Code Solution).**\n\n  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.\n\n  It is designed to support API-first development, allowing you to define your content models and generate RESTful APIs\n  effortlessly.\n\n  With two line of commands, you can create a new project, define your content models, and start creating content\n  instantly.\n\n- **A Framework for web development**\n\n  FastSchema is designed to be used as a framework for building web applications. It provides a set of tools and\n  packages that simplify the development process.\n\n  `Resource` is a core concept that represents an access point to your data. By defining resources, you can create\n  custom endpoints and customize the behavior of your APIs.\n\n  `Hooks` are functions that are executed before or after an operation is performed on a resource. A `Hook` can be\n  a `resolver hook`, `database hook`, or `application hook`. They allow you to add custom logic to your APIs and extend\n  the functionality of FastSchema.\n\n  `ORM` is a powerful tool that simplifies the interaction with your database. It provides a set of methods for\n  querying, creating, updating, and deleting records in your database.\n\n## Web Framework\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\t\"log\"\n\n\t\"github.com/fastschema/fastschema\"\n\t\"github.com/fastschema/fastschema/db\"\n\t\"github.com/fastschema/fastschema/fs\"\n)\n\nfunc main() {\n\tapp, _ := fastschema.New(\u0026fs.Config{\n\t\tSystemSchemas: []any{Tag{}, Blog{}},\n\t})\n\n\tapp.API().Add(fs.Post(\"/blogvote\", func(c fs.Context, vote *Payload) (*Response, error) {\n\t\t_, err := db.Mutation[Blog](app.DB()).\n\t\t\tWhere(db.EQ(\"id\", vote.ID)).\n\t\t\tUpdate(c.Context(), fs.Map{\n\t\t\t\t\"$expr\": fs.Map{\"vote\": \"vote + 1\"},\n\t\t\t})\n\n\t\treturn \u0026Response{\n\t\t\tSuccess: err == nil,\n\t\t\tMessage: fmt.Sprintf(\"Vote for %d: %v\", vote.ID, err),\n\t\t}, nil\n\t}))\n\n\tlog.Fatal(app.Start())\n}\n```\n\n## Features\n\nFastSchema offers a comprehensive suite of features designed to streamline and simplify the process of building and\nmanaging dynamic web applications.\n\n- **Automated Database Generation:** FastSchema automatically generates the necessary database tables based on your\n  schema definition with flexible relationships model, eliminating the need for manual setup.\n\n- **RESTful API Generation:** RESTful APIs are automatically generated based on the schema definition. Whenever you\n  create or update a schema, the corresponding API endpoints are updated accordingly.\n\n- **Dynamic Content Modeling:** Easily create and modify content models through the intuitive admin UI, with changes\n  reflected instantly in the schema definition file.\n\n- **Built-in File Management:** FastSchema provides a built-in file manager to manage media assets, enabling you to\n  upload, organize, and serve files seamlessly.\n\n- **Built-in Admin Control Panel:** FastSchema comes with a built-in admin control panel that allows you to manage\n  content, users, manage permissions, and more.\n\n- **Database Support:** MySQL, PostgreSQL, SQLite.\n\n- **Role-Based Access Control:** Define roles and permissions to control access to content and features.\n\n- **OpenAPI Specification (OAS) Generation:** FastSchema automatically generates OpenAPI Specification (OAS)\n  documentation for your APIs, making it easy to understand and consume your APIs.\n\n- **Extensible and Flexible:** Extend and customize FastSchema with Go code, build extensive features by leveraging the\n  power of Resources, Hooks, ORM, and more.\n\n- **Real-time Updates:** FastSchema supports real-time updates, allowing you to build dynamic web applications that\n  update in real-time without the need for manual refresh.\n\n- **Plugin System:** FastSchema comes with a plugin system that allows you to extend the functionality of the platform with custom plugins.\n\n## Documentation\n\nFor more information on how to get started with FastSchema, check out our [documentation](https://fastschema.com).\n\n## Roadmap\n\n- [x] Improve documentation and testing.\n- [x] Add auth provider.\n- [x] OpenAPI generator.\n- [x] Real-time updates.\n- [x] Plugin system.\n- [ ] GraphQL support.\n- [ ] Webhooks.\n- [ ] Client SDKs.\n    - [x] [JavaScript SDK](https://fastschema.com/docs/sdk/javascript-sdk).\n\n## Testing\n\nFastSchema comes with a suite of automated tests to ensure the stability and reliability of the platform.\n\n_FastSchema come with integration tests that require a database connection. You can use the following command to create\nDB containers._\n\n```bash\ncd tests/integration\ndocker compose up -d\n```\n\nTo run the tests, execute the following command:\n\n```bash\ngo test ./...\n```\n\nYou can skip the integration tests by running tests for packages only.\n\n```bash\n./tests/test.sh ./schema\n```\n\n## Dependencies\n\nFastSchema is built using the Go programming language and leverages a number of open-source libraries to provide its\ncore functionality. Some of the key dependencies include:\n\n- [Fiber](https://gofiber.io/)\n- [Ent](https://entgo.io/)\n- [Rclone](https://rclone.org/)\n- [Zap](https://pkg.go.dev/go.uber.org/zap)\n- [Next.js](https://nextjs.org/)\n- [Shadcn](https://ui.shadcn.com/)\n- [TipTap](https://www.tiptap.dev/)\n\n## Contributing\n\nFeel free to dive in! [Open an issue](https://github.com/fastschema/fastschema/issues/new) or submit PRs.\n\nGuidelines for\n[contributing][contributing].\n\nWe 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.\n\n## Community\n\nJoin the conversation and help the community.\n\n- [Discord][discord]\n- [X (formerly Twitter)](https://x.com/fastschema)\n- YouTube: *updating*\n- StackOverflow: *updating*\n\n## License\n\n[MIT](LICENSE) © Nguyen Ngoc Phuong and Contributors\n\n**Enjoy using FastSchema? Give our repo a shiny star :star:!**\n\n[contributing]: CONTRIBUTING.md\n[discord]: https://discord.gg/Auy2Zr3Ycf\n","funding_links":[],"categories":["Web Frameworks","\u003ca name=\"Go\"\u003e\u003c/a\u003eGo","Web框架"],"sub_categories":["Utility/Miscellaneous","实用程序/Miscellaneous"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffastschema%2Ffastschema","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffastschema%2Ffastschema","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffastschema%2Ffastschema/lists"}