Skip to content

LLM ready

/en/lab/forja-plugins.md

Title:
Forja Plugins

Forja Plugins

Official registry and monorepo of Forja plugins: clock, Pomodoro and Markdown tasks, on a shared SDK with the plugin API types. Each plugin declares the permissions it uses, and a script generates the registry that Forja consults to install.

Problem

Forja needed to grow without every new feature landing in the app core. A plugin system only solves that if there are real plugins exercising the API, and a way to distribute them.

Decisions

Monorepo with pnpm, one plugin per folder and a shared SDK, so they all speak the same typed API. Each plugin declares in a manifest the permissions it asks for (theme, notifications, file read and write), and a script validates the manifests before the build. Styles use only Forja's CSS variables, so the plugin follows the app theme. The registry is a generated JSON published on GitHub Pages, with the download link for each version.

Outcome

Three plugins published, with twenty releases in total and tests in Vitest. The Pomodoro and the Markdown tasks show up on Forja's own screen.

Links

---
title: Forja Plugins
url: https://nandomoreira.dev/en/lab/forja-plugins
collection: lab
tech:
  - TypeScript
  - Vite
  - pnpm
  - Vitest
date: 2026-03-26
---

# Forja Plugins

Official registry and monorepo of Forja plugins: clock, Pomodoro and Markdown tasks, on a shared SDK with the plugin API types. Each plugin declares the permissions it uses, and a script generates the registry that Forja consults to install.

## Problem

Forja needed to grow without every new feature landing in the app core. A
plugin system only solves that if there are real plugins exercising the API,
and a way to distribute them.

## Decisions

Monorepo with pnpm, one plugin per folder and a shared SDK, so they all speak
the same typed API. Each plugin declares in a manifest the permissions it
asks for (theme, notifications, file read and write), and a script validates
the manifests before the build. Styles use only Forja's CSS variables, so the
plugin follows the app theme. The registry is a generated JSON published on
GitHub Pages, with the download link for each version.

## Outcome

Three plugins published, with twenty releases in total and tests in Vitest.
The Pomodoro and the Markdown tasks show up on Forja's own screen.

## Links

- Repo: https://github.com/nandomoreirame/forja-plugins

Ready to share.