Schema-centered next-generation web framework for Rust, Node.js and Python.
Quickstart • Official website • Docs • Blog • Discord
Teo is a schema-centered next-generation web framework for Rust, Node.js and Python.
- Innovative schema definition inspired by GraphQL and Prisma
- Auto database migration
- Supports Rust, Node.js and Python
- Supports MySQL, PostgreSQL, SQLite and MongoDB
- Generated ORM types and interfaces
- Generated query clients for frontend
- Very efficient and performant
- Data sanitization, transformation and validation
- Builtin user sessions
- Builtin permission check
- First in last out middlewares
- Custom routes and handlers
The fastest way to get started with Teo is by following the Quickstart guide.
Install Node.js edition.
npm install @teocloud/teo
Install Python edition.
pip install teo
Install Rust edition.
cargo install teo
To write a server is quite simple with Teo. Create a file named schema.teo
.
Specify which database to connect and which port to listen.
connector {
provider: .sqlite,
url: "sqlite::memory:"
}
server {
bind: ("0.0.0.0", 5050)
}
model User {
@id @autoIncrement @readonly
id: Int
@unique @onSet($if($presents, $isEmail))
email: String
name: String?
@relation(fields: .id, references: .authorId)
posts: Post[]
}
model Post {
@id @autoIncrement @readonly
id: Int
title: String
content: String?
@default(false)
published: Bool
@foreignKey
authorId: Int
@relation(fields: .authorId, references: .id)
author: User
}
Start the server with teo serve
command. Now you can create, update, delete,
read, aggregate and group by. Read our
Query client guide
for detailed usage.
We prepared a Beginner tutorial series to help you learn and understand Teo.
Welcome to submit issues in this repo.
TEO is under Apache 2.0 license.