# penpot | Penpot | Knowledge Base | Instagit

Penpot: The open-source design tool for design and code collaboration

GitHub Stars: 46.9k

Repository: https://github.com/penpot/penpot

---

## Articles

### [How the Penpot Backend Configures the Integrant Dependency Injection System](/penpot/penpot/how-is-the-integrant-dependency-injection-system-configured-in-the-backend)

Discover how Penpot's backend configures the Integrant dependency injection system. Learn about its three-stage pipeline for database pools, HTTP servers, and background workers. Master Penpot's architecture.

- Tags: internals
- Published: 2026-04-28

### [How Penpot Implements Feature Flags Using the flags.cljc Module](/penpot/penpot/how-are-feature-flags-implemented-using-the-flags-cljc-module)

Discover how Penpot implements feature flags with the flags.cljc module. Learn about Clojure sets dynamic vars and a parse DSL for managing application features efficiently.

- Tags: internals
- Published: 2026-04-28

### [How Penpot's Audit Logging System Tracks User Actions](/penpot/penpot/how-does-the-audit-logging-system-track-user-actions)

Learn how Penpot's audit logging system tracks user actions. Discover how Penpot captures operations, enriches them with metadata, and stores them for comprehensive tracking.

- Tags: internals
- Published: 2026-04-28

### [How the Penpot Undo/Redo System Works: Deep Dive into the Undo-Stack Data Structure](/penpot/penpot/how-does-the-undo-redo-system-work-with-the-undo-stack-data-structure)

Explore Penpot's robust undo redo system. Discover how its immutable vector stack and cursor index efficiently manage history, prevent memory issues, and ensure a smooth user experience.

- Tags: deep-dive
- Published: 2026-04-28

### [How to Manage Components and Variants in Penpot Design Libraries: A Technical Guide](/penpot/penpot/how-are-components-and-variants-managed-in-design-libraries)

Learn to manage Penpot design libraries components and variants. Discover how Penpot uses UUID-keyed maps and automatic sync for efficient design asset management.

- Tags: how-to-guide
- Published: 2026-04-28

### [How the Font Handling System Works in Penpot's Render-WASM Module](/penpot/penpot/how-does-the-font-handling-system-work-in-the-render-wasm-module)

Explore Penpot's render wasm module font handling. Learn how Skia registers, stores, and resolves fonts for seamless paragraph layout using WebAssembly and FontCollection.

- Tags: internals
- Published: 2026-04-28

### [How Penpot Configures and Triggers Webhooks for External Integrations](/penpot/penpot/how-are-webhooks-configured-and-triggered-for-external-integrations)

Learn how Penpot configures and triggers webhooks for external integrations using its robust three layer architecture for reliable delivery.

- Tags: how-to-guide
- Published: 2026-04-28

### [How Pen pot Builds Database Queries with the next.jdbc Wrapper: Architecture and Implementation](/penpot/penpot/how-are-database-queries-built-with-the-next-jdbc-wrapper-in-the-backend)

Discover how Penpot's backend builds database queries using a custom next.jdbc wrapper for efficient SQL generation and PostgreSQL integration. Learn about its architecture and implementation.

- Tags: architecture
- Published: 2026-04-28

### [How the Penpot Exporter Module Uses Playwright for Headless Export](/penpot/penpot/how-does-the-exporter-module-use-playwright-for-headless-export)

Discover how the Penpot exporter module leverages Playwright for headless export, rendering design files to PNG, JPEG, SVG, and more through isolated browser contexts.

- Tags: internals
- Published: 2026-04-28

### [How Flex and Grid Layouts Are Computed in Penpot’s Geometry Module](/penpot/penpot/how-are-flex-and-grid-layouts-computed-in-the-geometry-module)

Discover how Penpot computes flex and grid layouts through an 11-step pipeline. Learn about bounds, tracks, space distribution, alignment, and transform modifiers for precise positioning.

- Tags: internals
- Published: 2026-04-28

### [How the Penpot Common Module Uses Reader Conditionals for Cross‑Platform Code](/penpot/penpot/how-does-the-common-module-use-reader-conditionals-for-cross-platform-code)

Discover how Penpot's common module uses reader conditionals for cross-platform code. Learn to share JVM and JavaScript sources with platform-specific implementations.

- Tags: internals
- Published: 2026-04-28

### [How Penpot Generates SVG, CSS, and HTML Code Exports in Inspect Mode](/penpot/penpot/how-are-svg-css-and-html-code-exports-generated-in-inspect-mode)

Discover how Penpot generates SVG, CSS, and HTML code exports using inspect mode. Learn about the process of traversing shape trees and transforming models into client-side code.

- Tags: internals
- Published: 2026-04-28

### [How the Penpot Plugin System Extends Functionality: A Technical Deep Dive](/penpot/penpot/how-does-the-plugin-system-extend-penpots-functionality)

Discover how Penpot's plugin system boosts functionality with SES protected JavaScript extensions and a robust penpot API for content manipulation and UI interactions.

- Tags: deep-dive
- Published: 2026-04-28

### [How Penpot Frontend State Management Works with Potok Events](/penpot/penpot/how-does-the-frontend-state-management-work-with-potok-events)

Discover how Penpot handles frontend state management using Potok events. Explore the ClojureScript architecture and typed events that drive UI interactions and side effects for a robust application.

- Tags: internals
- Published: 2026-04-28

### [How the Penpot MCP Server Enables AI Workflow Integration: Technical Architecture](/penpot/penpot/how-does-the-mcp-server-enable-ai-workflow-integration)

Discover how the Penpot MCP server integrates AI workflows. It connects LLMs to design files, allowing AI agents to execute JavaScript, export assets, and manipulate designs on Penpot.

- Tags: architecture
- Published: 2026-04-28

### [How Penpot Manages and Syncs Design Tokens Between Design and Code](/penpot/penpot/how-are-design-tokens-managed-and-synced-between-design-and-code)

Discover how Penpot seamlessly manages and syncs design tokens between design and code using an immutable TokensLib and Clojure functions for automatic updates between UI and backend.

- Tags: how-to-guide
- Published: 2026-04-28

### [How Penpot Implements Real-Time Collaboration: WebSocket Architecture Explained](/penpot/penpot/how-does-penpot-implement-real-time-collaboration-between-users)

Discover how Penpot leverages WebSocket architecture for real-time collaboration. Learn about its custom protocol, Transit, V-thread concurrency, and broadcasting for seamless editing synchronization.

- Tags: internals
- Published: 2026-04-28

### [How Penpot Schedules and Executes Background Tasks with Cron in the Backend](/penpot/penpot/how-are-background-tasks-scheduled-and-executed-with-cron-in-the-backend)

Discover how Penpot schedules and executes background tasks with cron. Learn about its Clojure backend, database locking, and ensuring efficient task management across instances.

- Tags: internals
- Published: 2026-04-28

### [How the Penpot render-wasm Module Uses Skia for High-Performance Canvas Rendering](/penpot/penpot/how-does-the-render-wasm-module-use-skia-for-high-performance-canvas-rendering)

Discover how Penpot's render-wasm module leverages Skia's GPU-accelerated pipeline via Rust bindings for high-performance canvas rendering and efficient raster operations. Explore the tech powering faster graphics.

- Tags: internals
- Published: 2026-04-28

### [How Penpot Manages Database Migrations in Its PostgreSQL Backend](/penpot/penpot/how-are-database-migrations-managed-in-the-postgresql-backend)

Penpot manages PostgreSQL database migrations using a Clojure runner executing SQL and Clojure functions. Discover how Penpot ensures ordered, idempotent schema evolution.

- Tags: internals
- Published: 2026-04-28

### [How Penpot's RPC Command System Works in the Clojure Backend](/penpot/penpot/how-does-penpots-rpc-command-system-work-in-the-clojure-backend)

Explore how Penpot's RPC command system functions within the Clojure backend. Learn how HTTP endpoints invoke public API operations, managed by a declarative registry with automatic cross-cutting concerns.

- Tags: internals
- Published: 2026-04-28

