pad.ws tackles the challenge of bringing together two distinct workflows: visual ideation on a collaborative whiteboard and cloud-based coding environments. Instead of treating these as separate tools, it creates a browser-based IDE where drawing and development coexist, letting teams visually brainstorm and immediately jump into coding within the same platform.
bridging visual collaboration and cloud development environments
At its core, pad.ws integrates Excalidraw, a popular open-source collaborative whiteboard, with Coder’s cloud development environments. This combination produces an online IDE that supports both freeform drawing and code editing in tandem. The architecture is centered around a FastAPI backend service, known as the “pad app,” which acts as the orchestrator.
This backend is responsible for serving the Excalidraw frontend, managing user sessions, and provisioning Coder workspaces dynamically based on user actions or whiteboard states. The stack includes several critical components for a robust deployment:
- PostgreSQL stores persistent data like saved canvases and configuration.
- Redis handles caching and session management with password authentication.
- Keycloak serves as the OpenID Connect (OIDC) provider for authentication and user management.
- Coder provisions and manages the cloud IDE workspaces themselves.
The system is designed to run on Linux hosts (tested on Ubuntu), leveraging Docker Compose for local development and testing deployments. However, this setup is explicitly marked as early development and not yet production-ready.
architecture highlights and tradeoffs
What stands out about pad.ws is the architectural bridging between a graphical collaboration tool and a cloud IDE orchestration backend. The FastAPI service here is not just a typical REST API but also the glue that maps visual elements on the Excalidraw canvas to workspace contexts in Coder.
This means the backend must manage the lifecycle of ephemeral or persistent workspaces, handle authentication flows with Keycloak, and synchronize state changes from the whiteboard to the code environments. This coupling is non-trivial and requires careful coordination between frontend events and backend workspace provisioning APIs.
The tradeoff is clear: this multi-component architecture offers a flexible and unified user experience but introduces complexity in setup and maintenance. The need to manually configure Keycloak realms, clients, and secrets, plus create Coder workspace templates and API keys, raises the bar for adoption. The current Docker Compose setup is labeled “development only,” emphasizing that much of the infrastructure plumbing is still manual and brittle.
From a code quality perspective, the project is organized around the FastAPI app that encapsulates all orchestration logic. While the codebase is early and evolving, the separation of concerns is clear: frontend (Excalidraw) is kept distinct from backend orchestration, and external dependencies like database, cache, and authentication are well isolated.
how to start self-hosting pad.ws
The repo provides a development-focused Docker Compose setup with explicit instructions to get a local instance running on a Linux host. Here’s the exact process from the README for self-hosting:
# 1. Copy environment variables template
cp .env.template .env
# 2. Start PostgreSQL container for persistence
docker compose up -d postgres
# 3. Start Redis container for caching and sessions
docker compose up -d redis
# 4. Start Keycloak container for OIDC
docker compose up -d keycloak
After Keycloak is up, you must manually configure a Realm and Client via the Keycloak admin console at http://localhost:8080. This includes setting a client ID, enabling client authentication, and adding redirect URLs.
You then retrieve the client secret and update your .env file accordingly:
OIDC_REALM=your_oidc_realm
OIDC_CLIENT_ID=your_client_id
OIDC_CLIENT_SECRET=your_client_secret
From there, you’ll need to create Coder workspace templates and generate API keys to enable the FastAPI backend to provision cloud IDE environments.
This manual configuration reflects the project’s early state and the complexity involved in securely integrating multiple services.
who should consider pad.ws and final thoughts
pad.ws is a niche but intriguing project for teams and developers who want to unify visual ideation and actual coding in one browser-based platform. Its approach to orchestrating cloud IDE workspaces from whiteboard elements via a FastAPI backend is worth understanding for anyone building collaborative developer tools.
However, it’s clearly an early-stage project with significant setup overhead. The self-hosting experience demands Linux familiarity, Docker Compose skills, and comfort with configuring identity providers like Keycloak.
For those seeking a turnkey, production-ready solution, this isn’t it yet. But for early adopters who want to experiment with bridging visual collaboration and cloud IDEs, pad.ws offers a working foundation. The architecture is modular and clean, and with maturity, it could become a useful tool for remote teams blending design and development workflows.
Related Articles
- Xboard: A high-performance Laravel panel system with React and Vue3 frontends — Xboard is a Laravel 11 panel system leveraging Octane, React, and Vue3 with Docker deployment. It balances high performa
- Navigating NixOS and Flakes with a community-driven beginner’s guide — A practical look at the “NixOS & Flakes Book,” an unofficial, community-driven guide demystifying NixOS and its experime
- OpenAI Codex CLI: local-first AI coding assistant with ChatGPT integration — OpenAI Codex CLI brings AI coding assistance local to your terminal, integrating with ChatGPT plans for powerful hybrid
- SiYuan: A modular, privacy-first self-hosted knowledge management system with a TypeScript and Go hybrid stack — SiYuan is a self-hosted personal knowledge system blending TypeScript frontend and Go backend, offering block-level refe
- Ollama: a unified CLI and API platform for local large language models — Ollama simplifies running and managing open-source large language models locally with a unified CLI and REST API, suppor
→ GitHub Repo: coderamp-labs/pad.ws ⭐ 4,105 · TypeScript