Back to rankings

coderamp-labs/pad.ws

TypeScriptpad.ws

Whiteboard as an IDE, draw and code in your browser

clouddevtoolwhiteboard
Star Growth
Stars
4.2k
Forks
237
Weekly Growth
โ€”
Issues
19
2k4k
Sep 25Dec 25Apr 26Jul 26
Artifactsnpmnpm install pad.ws
README

pad.ws - whiteboard as an IDE ๐ŸŽจ

Pad.ws Canvas IDE

pad.ws is a whiteboard app that acts as a dev environment in your browser

โœจ Features

  • ๐ŸŽจ Interactive Whiteboard - Draw, sketch and visualize your ideas with Excalidraw
  • ๐Ÿ’ป Fully fledged IDE - Access terminals and VS Code directly within the whiteboard
  • โ˜๏ธ Browser friendly - Access your dev env from any device
  • ๐Ÿ”„ Seamless Workflow - Switch between visual ideation and coding
  • ๐Ÿ› ๏ธ Use your own tools - Access your VM from your desktop client (VS Code & Cursor supported)

This uses Excalidraw for the whiteboard interface while Coder powers the cloud development environments.

Try it online ๐ŸŒ

Visit pad.ws for an official managed instance. During this beta, we offer free ubuntu dev environments without any setup

Self-Hosting ๐Ÿ› ๏ธ

โš ๏ธ IMPORTANT NOTICE: This repository is in early development stage. The setup provided in docker-compose.yml is for development and testing purposes only. This simplified example lets you host pad on localhost but is not safe for real-life use without further configurations โš ๏ธ

โœ… Prerequisites

1๏ธโƒฃ .env

  • Copy and review the default values
    cp .env.template .env
    

2๏ธโƒฃ PostgreSQL ๐Ÿ˜

Ensure persistence for the whole deployment (canvases and configs)

  • Run the PostgreSQL container using the provided configuration (e.g., in your docker-compose.yml)

    docker compose up -d postgres 
    

3๏ธโƒฃ Redis ๐Ÿ”„

In-memory data store for caching and session management with password authentication

  • Run the Redis container with password authentication
    docker compose up -d redis
    
  • The Redis password is configured in your .env file using the REDIS_PASSWORD variable

4๏ธโƒฃ Keycloak ๐Ÿ”‘

OIDC provider for access and user management (within coder and pad app)

  • Run the Keycloak container
    docker compose up -d keycloak 
    
  • Access the Keycloak admin console http://localhost:8080
  • Create a Realm: Name it appropriately (e.g., pad-ws)
  • Create a Client:
    • Give it a Client ID (e.g., pad-ws-client)
    • Enable Client Authentication
    • Add * to the valid redirect urls
    • You can leave other settings as default for now
  • Get Credentials:
    • Navigate to Clients -> [Your Client ID] -> Credentials tab
    • Note the Client secret.
    • Update your environment variables file (.env) with:
      OIDC_REALM=your_oidc_realm
      OIDC_CLIENT_ID=your_client_id 
      OIDC_CLIENT_SECRET=your_client_secret 
      
  • Create a User:
    • Navigate to Users -> Create user
    • Fill in the details
    • Important: Tick Email verified
    • Go to the Credentials tab for the new user and set a password
  • Create an Audience:
    • Navigate to Clients -> [Your Client ID] -> Client Scopes
    • Click on the dedicated scope of your Client ([clientid]-dedicated)
    • Click on Configure a new mapper
    • Then click on Audience
    • Ensure Included Client Audience matches your Client ID
    • Ensure Add to access token is On

5๏ธโƒฃ Coder ๐Ÿง‘โ€๐Ÿ’ป

  • Find Docker Group ID: You'll need this to grant necessary permissions
    getent group docker | cut -d: -f3 
    
  • Update your .env file with the DOCKER_GROUP_ID:
    DOCKER_GROUP_ID=your_docker_group_id 
    
  • Run the Coder container.
    docker compose up -d coder
    
  • Access Coder UI: Open localhost:7080 in your browser
  • First Login: Create an administrator user (e.g., admin)
  • Create a Template:
    • Use the "Start from template" option.
    • Choose a base image (e.g., docker-containers or a simple Ubuntu). Configure it as needed
  • Generate API Key:
    • Click your profile picture (top right) -> Account -> API Keys
    • Generate a new token
    • Update your .env
      CODER_API_KEY=your_coder_api_key 
      
  • Get Template ID:
    • Visit http://localhost:7080/api/v2/templates in your browser (or use curl)
    • Find the id of the template you created
    • Update your .env
      CODER_TEMPLATE_ID=your_coder_template_id # Example: 85fb21ba-085b-47a6-9f4d-94ea979aaba9
      
  • Get Default Organization ID:
    • Visit http://localhost:7080/api/v2/organizations in your browser (or use curl)
    • Find the id of your organization (usually the default one)
    • Update your .env:
      CODER_DEFAULT_ORGANIZATION=your_organization_id # Example: 70f6af06-ef3a-4b4c-a663-c03c9ee423bb
      
  • If you use a custom name for your workspace:
    • You need to provide the name as CODER_WORKSPACE_NAME in your .env. Otherwise, it will assume your workspace name is the default we chose: ubuntu.

6๏ธโƒฃ Pad App ๐Ÿ“

The fastAPI app that both serves the build frontend and the backend API to interface with Coder

  • Run the Application:
    • Ensure all environment variables in your .env file are correctly set

    • Run the pad application container

      docker compose up -d pad 
      

๐ŸŽ‰ Congratulations! You should now be able to access and login to your self-hosted pad at localhost:8000

๐Ÿšง Did you have any issue while following this guide?

Please let us know so we can improve the onboarding flow

๐Ÿš€ Project Growth

Star History Chart

Related repositories
awesome-selfhosted/awesome-selfhosted

A list of Free Software network services and web applications which can be hosted on your own servers

Otherselfhostedawesome
awesome-selfhosted.net
307.3k14.4k
localstack/localstack

๐Ÿ’ป A fully functional local AWS cloud stack. Develop and test your cloud & Serverless apps offline

PythonPyPIOtherawslocalstack
localstack.cloud
65.1k4.8k
minio/minio

MinIO is a high-performance, S3 compatible object store, open sourced under GNU AGPLv3 license.

GoGo ModulesGNU Affero General Public License v3.0gostorage
61.4k7.7k
pi-hole/pi-hole

A black hole for Internet advertisements

ShellOtherpi-holead-blocker
pi-hole.net
60k3.3k
hashicorp/terraform

Terraform enables you to safely and predictably create, change, and improve infrastructure. It is a source-available tool that codifies APIs into declarative configuration files that can be shared amongst team members, treated as code, edited, reviewed, and versioned.

GoGo ModulesOthergraphinfrastructure-as-code
developer.hashicorp.com/terraform
49.3k10.5k
HeyPuter/puter

๐ŸŒ The Internet Computer! Free, Open-Source, and Self-Hostable.

TypeScriptnpmGNU Affero General Public License v3.0desktopdesktop-environment
puter.com
42.8k4k
nextcloud/server

โ˜๏ธ Nextcloud server, a safe home for all your data

PHPPackagistGNU Affero General Public License v3.0open-sourcefile-sharing
nextcloud.com
36.2k5.1k
cloudreve/cloudreve

๐ŸŒฉ Self-hosted file management and sharing system, supports multiple storage providers

GoGo ModulesGNU General Public License v3.0file-sharingfile
cloudreve.org
28.4k3.9k
pulumi/pulumi

Pulumi - Infrastructure as Code in any programming language ๐Ÿš€

GoGo ModulesApache License 2.0infrastructure-as-codeserverless
pulumi.com
25.5k1.4k
krayin/laravel-crm

Free & Opensource Laravel CRM solution for SMEs and Enterprises for complete customer lifecycle management.

BladeMIT Licensephplaravel
krayincrm.com
23.4k1.5k
cloudreve/Cloudreve

๐ŸŒฉๆ”ฏๆŒๅคšๅฎถไบ‘ๅญ˜ๅ‚จ็š„ไบ‘็›˜็ณป็ปŸ (Self-hosted file management and sharing system, supports multiple storage providers)

GoGo ModulesGNU General Public License v3.0file-sharingfile
cloudreve.org
22.5k3.5k
jhipster/generator-jhipster

JHipster is a development platform to quickly generate, develop, & deploy modern web applications & microservice architectures.

TypeScriptnpmApache License 2.0angularspring-boot
jhipster.tech
22.4k4.2k