Skip to content

Repository files navigation

DevDesk

License: MIT .NET Platform UI

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.

Features

  • 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

Screenshots

Dashboard

Tasks Focus
Tasks Focus
Notes Settings
Notes Settings

More mockups and the design system live in docs/design.

Install

Windows Setup (recommended)

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.

Run from source

git clone https://github.com/HadiSiavashi/DevDesk.git
cd DevDesk
dotnet restore
dotnet build
dotnet run --project DevDesk.WinForms

Or 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).

Requirements

  • Windows 10/11
  • .NET 10 SDK (source builds only)
  • SQL Server LocalDB or SQL Server (Express/Developer/full)
  • Visual Studio 2022/2026 or dotnet CLI

Architecture

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 (table Tasks) and status enum is WorkTaskStatus to avoid collisions with System.Threading.Tasks.Task / TaskStatus.

SQL Server configuration

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.

Migrations

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.WinForms

Design-time factory: DevDeskDbContextFactory (uses LocalDB or DEVDESK_CONNECTION_STRING).

Install EF tools if missing:

dotnet tool install --global dotnet-ef

The app never calls EnsureDeleted() and never auto-drops user data.

Building the installer

Produces a self-contained win-x64 publish plus Inno Setup DevDesk-Setup.exe:

.\scripts\Build-Installer.ps1

Or 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.ps1

Running tests

dotnet test

Tests cover task lifecycle, focus recovery, Pomodoro, daily planning, productivity score, Quick Add parsing, and import/export validation/round-trip (EF InMemory).

Keyboard shortcuts

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

Known limitations

  • 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 NU1903 advisories for transitive System.Security.Cryptography.Xml from EF Core packages.

Contributing

See CONTRIBUTING.md. Security reports: SECURITY.md.

License

MIT © 2026 Mohammad Hadi Siavashi

About

Local-first Windows productivity app for developers (WinForms, .NET 10, English + Persian RTL).

Topics

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages