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.
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())
}
Documentation
For more information on how to get started with FastSchema, check out our documentation.
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: