Sora.Media.Core
0.4.0
dotnet add package Sora.Media.Core --version 0.4.0
NuGet\Install-Package Sora.Media.Core -Version 0.4.0
<PackageReference Include="Sora.Media.Core" Version="0.4.0" />
<PackageVersion Include="Sora.Media.Core" Version="0.4.0" />
<PackageReference Include="Sora.Media.Core" />
paket add Sora.Media.Core --version 0.4.0
#r "nuget: Sora.Media.Core, 0.4.0"
#:package Sora.Media.Core@0.4.0
#addin nuget:?package=Sora.Media.Core&version=0.4.0
#tool nuget:?package=Sora.Media.Core&version=0.4.0
Sora Framework
Build services like you're talking to your code, not fighting it.
Sora is a backend framework for .NET developers who value clarity, comfort, and the ability to grow. Whether you're spinning up a quick prototype or scaling into enterprise-grade patterns, Sora keeps the path clear. Start with a three-file API. Add messaging, vector search, or AI when you're ready. Nothing more, nothing less.
🧱 From First Line to First Endpoint
Let’s start simple:
dotnet add package Sora.Core
dotnet add package Sora.Web
dotnet add package Sora.Data.Sqlite
Then:
public class Todo : Entity<Todo>
{
public string Title { get; set; } = "";
public bool IsDone { get; set; }
}
[Route("api/[controller]")]
public class TodosController : EntityController<Todo> { }
That’s a full REST API:
GET /api/todos
POST /api/todos
PUT /api/todos/{id}
- Health checks at
/health
It works. Right now. No ceremony.
🌱 A Framework That Grows With You
Sora isn’t trying to impress you with magic. It earns trust by staying out of your way—until you need more.
- Add AI? One line.
- Need vector search? Drop in a package.
- Ready for messaging? Plug it in.
- CQRS? Recipes exist.
You never pay for complexity you didn’t ask for.
dotnet add package Sora.Web.Swagger # Interactive docs
dotnet add package Sora.AI # Local LLMs with Ollama
dotnet add package Sora.Data.Weaviate # Semantic search
dotnet add package Sora.Messaging.RabbitMq # Production messaging
dotnet add package Sora.Web.GraphQl # REST + GraphQL side-by-side
Everything integrates naturally. No glue scripts. No boilerplate.
🧭 Philosophy: Start Simple, Grow Smart
Sora is designed by developers who’ve scaled codebases and lived to talk about it.
- Minimal friction: Build a real service in a single file.
- Clear structure: Follow .NET conventions, not opinions.
- Honest complexity: Add what you need, skip what you don’t.
- Escape hatches everywhere: Drop to raw SQL, write custom controllers, or override behavior freely.
🔧 The Pillars Behind the Curtain
Sora is modular by nature. Each of its components works independently—and shines together.
Pillar | Purpose |
---|---|
Core | Unified runtime, secure defaults, health checks, observability |
Web | REST and GraphQL from your models, Swagger UI, clean routing |
Data | Unified access to SQL, NoSQL, JSON, and vector DBs |
Storage | File/blob handling from local to cloud with profiles |
Media | First‑class uploads, bytes/HEAD endpoints (range/conditional), variants/derivatives, transforms |
Messaging | Reliable queues via RabbitMQ, Redis, or in-memory |
AI | Embeddings, vector search, chat, and RAG via local or remote models |
Recipes | Best-practice bundles for reliability, telemetry, and scale |
Orchestration | DevHost CLI to export/run local deps via Docker/Podman (Compose v2) |
Orchestration | DevHost CLI to export/run local deps via Docker/Podman (Compose v2) |
🧪 Real Use, Not Just Hello World
Sora is already being used to build:
- Microservices with event sourcing and inbox/outbox patterns
- Developer tools with built-in AI assistance
- Internal apps with rapid UI prototyping and Swagger docs
It’s ready for you too.
var todo = await new Todo { Title = "Learn Sora" }.Save();
var todos = await Todo.Where(t => !t.IsDone);
🛠 Getting Started
- Clone or create a new project with the Sora template
- Explore the
samples/
directory - Browse documentation under
/docs/engineering
- Try something real—you’ll know in 10 minutes if it clicks
❤️ For developers who love clarity
Sora is open-source, MIT-licensed, and community-friendly. We welcome contributions, ideas, and questions. Built by folks who got tired of choosing between simplicity and power.
- GitHub Issues for bugs/requests
- GitHub Discussions for questions
- See CONTRIBUTING.md to jump in
License: Apache 2.0 Requirements: .NET 9 SDK Current version: v0.2.18
🚀 Orchestration & CLI quickstart
Run local dependencies and export Compose via the Sora CLI (single-file binary published to dist/bin/Sora.exe
). See docs/reference/sora-cli.md
.
# Install/publish the CLI into dist/bin and add to PATH
./scripts/cli-all.ps1
# Validate engine and environment
Sora doctor --json
# Export a Compose v2 file (writes .sora/compose.yml)
Sora export compose --profile Local
# Bring services up and wait for readiness (health when defined)
Sora up --profile Local --timeout 300
# Inspect status and endpoints; view logs
Sora status
Sora logs
# Tear down and prune data
Sora down --prune-data
More: docs/reference/orchestration.md
and docs/reference/sora-cli.md
.
📦 Media at a glance
Add first-class media to your app with consistent semantics and HTTP endpoints.
- Model-centric API: Upload, Get, Open, Url, Derivatives, RunTask/StreamTask
- HTTP bytes/HEAD endpoints with range/conditional support and cache-control
- Transform pipeline (resize/rotate/type-convert) with strictness and placement options
- Storage integration for key safety, profiles (hot/cold), and presigned URLs when supported
See: docs/reference/media.md
.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net9.0
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.8)
- Microsoft.Extensions.Options (>= 9.0.8)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 9.0.8)
- SixLabors.ImageSharp (>= 3.1.11)
- Sora.Data.Core (>= 0.4.0)
- Sora.Media.Abstractions (>= 0.4.0)
- Sora.Storage (>= 0.4.0)
- Sora.Web (>= 0.4.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 | 56 | 9/5/2025 |
See release notes: https://github.com/sylin-labs/sora-framework/releases