Storage Configuration
EverTask supports multiple storage providers for task persistence. This guide covers all available options and how to implement custom storage.
Overview
Storage providers persist tasks and their state, enabling task recovery after application restarts, task history tracking, audit trails, and scheduled/recurring task management.
Storage Topics
Storage Overview
Learn about the available storage providers, their characteristics, and how to choose the right one for your use case.
Audit Configuration
Configure audit trail levels to control database bloat from high-frequency tasks. Learn about Full, Minimal, ErrorsOnly, and None audit levels.
In-Memory Storage
Fast, zero-setup storage for development and testing. Tasks are lost on restart.
SQL Server Storage
Storage for production with DbContext pooling, stored procedures, and schema management.
PostgreSQL Storage
Relational, open-source storage for production with DbContext pooling, schema-aware migrations, and writable-CTE optimizations, comparable to the SQL Server provider.
SQLite Storage
Lightweight, file-based storage ideal for small-scale production and single-server deployments.
Custom Storage
Learn how to implement custom storage providers for Redis, MongoDB, or any other database.
Serialization
How tasks are serialized with System.Text.Json, the payload contract, polymorphic payloads, and upgrade notes.
Best Practices
Storage selection guidelines, connection string management, migration strategies, and cleanup tasks.
Quick Start
Development Setup
builder.Services.AddEverTask(opt =>
{
opt.RegisterTasksFromAssembly(typeof(Program).Assembly);
})
.AddMemoryStorage();
Production Setup (SQL Server)
builder.Services.AddEverTask(opt =>
{
opt.RegisterTasksFromAssembly(typeof(Program).Assembly);
})
.AddSqlServerStorage(
builder.Configuration.GetConnectionString("EverTaskDb")!,
opt =>
{
opt.SchemaName = "EverTask";
opt.AutoApplyMigrations = true;
});
Production Setup (SQLite)
builder.Services.AddEverTask(opt =>
{
opt.RegisterTasksFromAssembly(typeof(Program).Assembly);
})
.AddSqliteStorage("Data Source=evertask.db");
Production Setup (PostgreSQL)
builder.Services.AddEverTask(opt =>
{
opt.RegisterTasksFromAssembly(typeof(Program).Assembly);
})
.AddPostgresStorage("Host=localhost;Database=evertask;Username=evertask;Password=***");
Next Steps
- Configuration Reference - All storage configuration options
- Architecture - How storage integrates with EverTask
- Getting Started - Setup guide with storage configuration
- Monitoring - Monitor storage performance