Build Beautiful Web Applications
A modern, expressive web framework that combines the elegance of Ruby with the performance of Rust. Build faster, ship sooner, sleep better.
class Post extends Model {
// Validations
validates("title", {
"presence": true,
"min_length": 3
})
validates("author_id", { "presence": true })
// Relationships via methods
fn author() -> Any {
return User.find(this.author_id);
}
fn comments() -> Any {
return Comment.where(
"doc.post_id == @id",
{ "id": this.id }
);
}
}
<!-- ERB-style templates -->
<h1><%= @title %></h1>
<div class="posts">
<% for post in @posts %>
<article>
<h2><%= post["title"] %></h2>
<p><%= post["excerpt"] %></p>
<a href="/posts/<%= post["id"] %>">
Read more
</a>
</article>
<% end %>
</div>
class PostsController extends Controller {
fn index(req) {
let posts = Post
.where("doc.status == @s", { "s": "published" })
.order("created_at", "desc")
.limit(10)
.all();
return render("posts/index", {
"title": "Latest Posts",
"posts": posts
});
}
fn create(req) {
let result = Post.create(req["params"]);
if result["valid"] {
return redirect("/posts");
}
return render("posts/new");
}
}
Why Soli?
Everything you need to build modern web apps
Stop wrestling with configuration. Soli includes batteries, so you can focus on building.
Blazing Fast
Bytecode compiled execution with optional JIT. Handle 170k+ requests per second on a single machine.
Secure by Default
Built-in CSRF protection, XSS prevention, SQL injection guards, and secure session handling.
Hot Reload
Instant feedback with hot reload for controllers, views, and middleware. Never restart your server.
Built-in ORM
Elegant Active Record-style ORM with migrations, validations, relationships, and query builder.
Scaffold Generator
Generate complete MVC resources with models, controllers, views, tests, and migrations in seconds.
Developer Experience
Beautiful error pages, helpful CLI tools, and convention over configuration for rapid development.
Scaffold Generator
Generate complete MVC resources in seconds
$ soli generate scaffold blog_posts title:string content:text author:string published:boolean Success! Created scaffold for blog_posts # Generated files: app/models/blog_posts_model.soli app/controllers/blog_posts_controller.soli app/views/blog_posts/index.html.erb app/views/blog_posts/show.html.erb app/views/blog_posts/new.html.erb app/views/blog_posts/edit.html.erb app/views/blog_posts/_form.html.erb tests/models/blog_posts_test.soli tests/controllers/blog_posts_controller_test.soli db/migrations/*create_blog_posts_*.soli ✓ Routes added to config/routes.soli
Ready to build something amazing?
Join thousands of developers who are already building faster with Soli.