Voltar ao ranking

coderamp-labs/pad.ws

TypeScriptpad.ws

Whiteboard as an IDE, draw and code in your browser

clouddevtoolwhiteboard
Crescimento de estrelas
Estrelas
4.2k
Forks
237
Crescimento semanal
Issues
19
2k4k
set. de 25dez. de 25abr. de 26jul. de 26
Artefatosnpmnpm 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

Repositórios relacionados
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