Introduction
Teo is a schema-centered next-generation web framework for Rust, Node.js and Python.
Highlights & Features
- 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
Getting started
The fastest way to get started with Teo is by following the Quickstart guide.
Installation
Install Node.js edition.
Install Python edition.
Install Rust edition.
Write a schema-only server
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.
Tutorials
We prepared a Beginner tutorial series to help you learn and understand Teo.
Issues
Welcome to submit issues in this repo.
License
TEO is under Apache 2.0 license.