Local-first Windows desktop productivity for software engineers. Tasks, projects, Pomodoro, daily planning, notes, snippets, bookmarks, environments, goals, habits, calendar, and analytics live in one WinForms shell — data stays on your machine.
English and Persian (RTL). Dark, Light, and System themes.
- Tasks & projects with priorities, tags, checklists, and project workspaces
- My Day, Daily Plan, Daily Review for a focused work loop
- Focus / Pomodoro with tray notifications
- Notes, Knowledge Base, snippets, bookmarks, environments
- Goals, habits, calendar, and productivity analytics
- Global search (
Ctrl+K) and Quick Add (Ctrl+Shift+Space) - Local-first — SQL Server / LocalDB, import/export, SQL backup helpers
- Persian RTL and English LTR from Settings
| Tasks | Focus |
|---|---|
![]() |
![]() |
| Notes | Settings |
|---|---|
![]() |
![]() |
More mockups and the design system live in docs/design.
Download DevDesk-Setup.exe from the latest GitHub Release.
The installer is self-contained (no .NET SDK required). SQL Server Express LocalDB (or SQL Server) is required at runtime.
git clone https://github.com/HadiSiavashi/DevDesk.git
cd DevDesk
dotnet restore
dotnet build
dotnet run --project DevDesk.WinFormsOr open DevDesk.sln in Visual Studio and set DevDesk.WinForms as the startup project.
First launch migrates the database, seeds demo data when empty, then shows onboarding (name, language, theme, work hours, Pomodoro).
- Windows 10/11
- .NET 10 SDK (source builds only)
- SQL Server LocalDB or SQL Server (Express/Developer/full)
- Visual Studio 2022/2026 or
dotnetCLI
DevDesk.sln
├── DevDesk.WinForms Presentation (thin forms/controls, theme, localization)
├── DevDesk.Application Use cases, DTOs, validators, Quick Add parsing
├── DevDesk.Domain Entities, enums, domain rules, productivity score
├── DevDesk.Infrastructure Serilog, browser, notifications, backup, Windows helpers
├── DevDesk.Persistence EF Core DbContext, configurations, migrations, seed
└── DevDesk.Tests Domain/application/persistence tests (xUnit)
Business logic lives in Domain/Application. WinForms coordinates UI and calls application services asynchronously.
Naming note: The task entity is
WorkTask(tableTasks) and status enum isWorkTaskStatusto avoid collisions withSystem.Threading.Tasks.Task/TaskStatus.
Connection string is read from DevDesk.WinForms/appsettings.json (never hard-coded in source):
{
"ConnectionStrings": {
"DevDesk": "Server=(localdb)\\mssqllocaldb;Database=DevDesk;Trusted_Connection=True;TrustServerCertificate=True;MultipleActiveResultSets=true"
},
"Database": {
"AutoMigrate": true,
"SeedDemoData": true
}
}Override with environment variables if needed, for example:
ConnectionStrings__DevDesk=Server=localhost;Database=DevDesk;Trusted_Connection=True;TrustServerCertificate=True;
Do not commit secrets or password-based connection strings.
Initial migration ships under DevDesk.Persistence/Migrations.
With Database:AutoMigrate set to true (default in appsettings), pending migrations apply on startup.
Manual apply:
dotnet ef database update --project DevDesk.Persistence --startup-project DevDesk.WinFormsDesign-time factory: DevDeskDbContextFactory (uses LocalDB or DEVDESK_CONNECTION_STRING).
Install EF tools if missing:
dotnet tool install --global dotnet-efThe app never calls EnsureDeleted() and never auto-drops user data.
Produces a self-contained win-x64 publish plus Inno Setup DevDesk-Setup.exe:
.\scripts\Build-Installer.ps1Or Build-Setup.bat from the repo root. Output: publish\installer\DevDesk-Setup.exe.
A per-user portable copy (no Setup.exe) is also available:
.\scripts\Install-DevDesk.ps1dotnet testTests cover task lifecycle, focus recovery, Pomodoro, daily planning, productivity score, Quick Add parsing, and import/export validation/round-trip (EF InMemory).
| Shortcut | Action |
|---|---|
Ctrl+K |
Global search |
Ctrl+Shift+Space |
Quick Add |
Ctrl+N |
New item |
Ctrl+S |
Save |
Esc |
Close overlay/dialog |
Space |
Complete selected task |
Ctrl+Shift+F |
Start focus |
Ctrl+, |
Settings |
F1 |
Shortcut help |
- Requires SQL Server/LocalDB; there is no embedded SQLite mode.
- Snippet syntax highlighting is lightweight (plain monospace editor), not a full IDE highlighter.
- Desktop notifications use tray balloons via a 5-minute pending poll plus event-driven Pomodoro/focus alerts (not a cloud push service).
- SQL backup helper needs sufficient SQL Server permissions; failures surface clear instructions rather than pretending success.
- Always on Top / Start minimized / Start with Windows are available in Settings; Start with Windows is off by default.
- Calendar Month/Week/Day modes are list-centric around
MonthCalendar(not a full custom grid calendar control). - Charting in Analytics uses simple WinForms bar visualizations (no third-party chart suite).
- Import merge skips nested checklists/tags/habit records (top-level entities only).
- NuGet may report
NU1903advisories for transitiveSystem.Security.Cryptography.Xmlfrom EF Core packages.
See CONTRIBUTING.md. Security reports: SECURITY.md.
MIT © 2026 Mohammad Hadi Siavashi




