Sylin.Sora.App 0.2.20

There is a newer version of this package available.
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
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Sylin.Sora.App" Version="0.2.20" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Sylin.Sora.App" Version="0.2.20" />
                    
Directory.Packages.props
<PackageReference Include="Sylin.Sora.App" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Sylin.Sora.App --version 0.2.20
                    
#r "nuget: Sylin.Sora.App, 0.2.20"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Sylin.Sora.App@0.2.20
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Sylin.Sora.App&version=0.2.20
                    
Install as a Cake Addin
#tool nuget:?package=Sylin.Sora.App&version=0.2.20
                    
Install as a Cake Tool

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 just EntityController<T>

  • Escape hatches everywhere
    Drop to raw SQL, custom controllers, or provider-specific features

  • Modular by design
    Add SQLite, MongoDB, Redis, RabbitMQ, AI providers, or vector search as you grow

  • AI-ready
    Built-in streaming chat, embeddings, vector search, and RAG patterns

  • Production ready
    Health checks, OpenAPI docs, observability, and message reliability built-in

  • Predictable
    Convention over configuration, but configuration always wins

Core philosophy

  • Start simple, grow smart
    Begin with basics, add complexity only when needed

  • Familiarity first
    Uses patterns you already know (Controllers, DI, EF-style entities)

  • Developer experience
    Clear error messages, helpful defaults, minimal friction

  • Everything 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 todos
  • POST /api/todos - Create new todo
  • GET /api/todos/{id} - Get specific todo
  • PUT /api/todos/{id} - Update todo
  • DELETE /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

  1. Documentation - Read the engineering front door and reference pages
  2. Examples - Explore real applications in the samples/ directory
  3. 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
There are no supported framework assets in this package.

Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.