Sylin.Sora.App
0.2.20
See the version list below for details.
dotnet add package Sylin.Sora.App --version 0.2.20
NuGet\Install-Package Sylin.Sora.App -Version 0.2.20
<PackageReference Include="Sylin.Sora.App" Version="0.2.20" />
<PackageVersion Include="Sylin.Sora.App" Version="0.2.20" />
<PackageReference Include="Sylin.Sora.App" />
paket add Sylin.Sora.App --version 0.2.20
#r "nuget: Sylin.Sora.App, 0.2.20"
#:package Sylin.Sora.App@0.2.20
#addin nuget:?package=Sylin.Sora.App&version=0.2.20
#tool nuget:?package=Sylin.Sora.App&version=0.2.20
Sora Framework
Building backend services should feel like playing with Legos, not assembling puzzles with missing pieces.
Sora is designed to having a conversation with your code rather than wrestling with it. Start with a three-file API, add vector search when you need it, scale to enterprise patterns when you're ready.
What makes Sora different?
Start simple, grow smart
Your first API can be three files. When you need CQRS, messaging, AI, or vector search, they're there—but they don't get in your way until you're ready.Familiar, but better
Controllers work like you expect. Configuration follows .NET conventions. No magic, no surprises—just the good parts of what you already know, refined.Batteries included, assembly optional
Health checks, OpenAPI docs, flexible data access, message handling, and AI integration all work out of the box. Use what you need, ignore the rest.
// This is a complete, working API with persistence
using Sora.Web;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSora();
var app = builder.Build();
app.UseSora();
app.Run();
Why choose Sora?
Zero to API in minutes
Real CRUD endpoints with justEntityController<T>
Escape hatches everywhere
Drop to raw SQL, custom controllers, or provider-specific featuresModular by design
Add SQLite, MongoDB, Redis, RabbitMQ, AI providers, or vector search as you growAI-ready
Built-in streaming chat, embeddings, vector search, and RAG patternsProduction ready
Health checks, OpenAPI docs, observability, and message reliability built-inPredictable
Convention over configuration, but configuration always wins
Core philosophy
Start simple, grow smart
Begin with basics, add complexity only when neededFamiliarity first
Uses patterns you already know (Controllers, DI, EF-style entities)Developer experience
Clear error messages, helpful defaults, minimal frictionEverything is optional
Data providers, messaging, AI, vector search—add what you need, when you need it
Real-World Example
First, install the essential packages:
dotnet add package Sora.Core
dotnet add package Sora.Web
dotnet add package Sora.Data.Sqlite # or your preferred data adapter
Then write your code:
// Define your model
public class Todo : Entity<Todo>
{
public string Title { get; set; } = string.Empty;
public bool IsDone { get; set; }
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
}
// Get a full REST API
[Route("api/[controller]")]
public class TodosController : EntityController<Todo> { }
// Use it naturally
var todo = await new Todo { Title = "Learn Sora" }.Save();
var todos = await Todo.Where(t => !t.IsDone);
That's it. You now have:
GET /api/todos
- List all todosPOST /api/todos
- Create new todoGET /api/todos/{id}
- Get specific todoPUT /api/todos/{id}
- Update todoDELETE /api/todos/{id}
- Delete todo- Automatic health checks at
/health
That's it. Real data, clean routing, and production patterns—all working.
And now, what if I want to see my API specs?
Add interactive API documentation with one package:
dotnet add package Sora.Web.Swagger
Now visit /swagger
to explore and test your endpoints interactively. No additional configuration needed; Swagger auto-discovers your controllers and generates beautiful, interactive docs.
Need more? Just add it
Want AI chat and embeddings?
dotnet add package Sora.AI
dotnet add package Sora.Ai.Provider.Ollama
Now you have /ai/chat
with streaming and /ai/embed
endpoints working with local models.
Need vector search?
dotnet add package Sora.Data.Weaviate
Your entities can now be embedded and searched semantically.
Want reliable messaging?
dotnet add package Sora.Messaging.RabbitMq
Send messages, handle failures, and process with inbox patterns.
GraphQL from your REST models?
dotnet add package Sora.Web.GraphQl
Your EntityController<T>
now serves both REST and GraphQL automatically.
Getting started
- Documentation - Read the engineering front door and reference pages
- Examples - Explore real applications in the
samples/
directory - Docs style - See
docs/engineering/docs-style-and-checklist.md
for contribution rules
Built for
- Rapid prototyping - Get ideas into code fast, add AI features with a single line
- Microservices - Lightweight, focused services with built-in messaging and observability
- Modern APIs - REST + GraphQL from the same models, with vector search when you need it
- Enterprise applications - Scales to complex patterns (CQRS, Event Sourcing, AI workflows)
Community & support
- GitHub Issues - Bug reports and feature requests
- Discussions - Questions and community help
- Contributing - See our guidelines
Built with ❤️ for .NET developers who want to focus on solving problems, not fighting frameworks.
License: Apache 2.0 | Requirements: .NET 9 SDK | Current: v0.2.18
Quick links
- Engineering front door:
/docs/engineering/index.md
- Architecture principles:
/docs/architecture/principles.md
Learn more about Target Frameworks and .NET Standard.
-
net9.0
- Sylin.Sora (>= 0.2.0 && < 0.3.0)
- Sylin.Sora.Web (>= 0.2.0 && < 0.3.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last Updated | |
---|---|---|---|
0.4.0 | 196 | 9/5/2025 | |
0.2.20 | 210 | 8/22/2025 | |
0.2.16 | 272 | 8/18/2025 | |
0.2.15 | 266 | 8/18/2025 | |
0.2.14-ge8cb666a29 | 264 | 8/18/2025 | |
0.2.14-g5c28563fed | 369 | 8/18/2025 |