Skip to content
André Paul Grandsire edited this page Aug 7, 2026 · 3 revisions

Do It - Developer Documentation

This document provides an overview of the Do It project architecture and how to navigate its source code.

Project Overview

Do It is a GNOME task manager application written in TypeScript, using GTK4 and libadwaita. It targets Linux/GNOME only.

Architecture

src/
├── actions/           # Gio SimpleAction handlers
├── managers/          # Stateful managers (e.g., project-manager.ts)
├── persistence/       # Data storage implementation (gio-persistence.ts)
├── views/             # UI code counterparts (e.g., doit.ts)
├── widgets/           # UI components (`.ui` files)
├── utils/             # Utility functions and settings
└── *.ts               # App entry points and shared types

Key Concepts

Shared Types (src/)

  • app.types.ts: Types like ITask, ITaskView
  • app.enums.ts: Enums like SortingField, SortingStrategy, AppSignals
  • app.strings.ts: Localized strings
  • app.static.ts: Static configuration

Actions (src/actions/)

Gio SimpleAction handlers that wire UI interactions to application behavior.

Views (src/views/)

GTK widget implementations that display tasks and manage the UI (e.g., doit.ts, task-item.ts).

Widgets (src/widgets/)

GTK4 .ui templates loaded via GResource.

Persistence (src/persistence/)

File-based JSON storage using Gio (gio-persistence.ts).

Managers (src/managers/)

Stateful managers that coordinate app-wide state and emit signals (e.g., project-manager.ts discovers projects from the task store).

Utils (src/utils/)

Helper functions: settings access (settings.ts), sorting logic (sort.ts, tasks.sort.ts), logging (log-manager.ts), and the build-time generated application.js.

Import Aliases

The project uses a single TypeScript path alias (defined in tsconfig.json):

  • ~src

Building

  • Use Meson (meson setup build && ninja -C build)
  • Use yarn dev for development

Resources