Buddy the Frog

Buddy Pond SDK

Use any Buddy Pond App inside any existing Web Page

Embed the Buddy Pond JavaScript file

<script src="https://buddypond.com/bp.js"></script>

Initialize the SDK, then you may open apps

<script>
document.addEventListener('DOMContentLoaded', async (event) => {
    await bp.init();
    bp.open('fluid-simulation', {
      panel: '.targetDiv1'   // optional, default mode is Window
    });
    bp.open('taskbar');      // taskbar app defaults fixed bottom
  });
</script>

BuddylistOpen Buddylist Instant Messaging Chat Window

await bp.open('buddylist'); // opens BuddyList in Window
Jump to API Documentation Below

.targetDiv1 Click and Drag mouse to create fluid particles

App StoreBuddy Apps Store

Hosted Apps for Buddy Pond

await bp.open('apps');

ProfileMy Profile

Manage your profile and settings

await bp.open('profile');

CoinsBuddy Coins

Manage your virtual currency

await bp.open('coin');

PortfolioPortfolio

Track your investments and assets

await bp.open('portfolio');

TweetsTweets

View and post tweets

await bp.open('tweets');

PaintPaint App

A Classic Retro Style Image Editor

await bp.open('paint');

Interdimensional
            CableInterdimensional Cable

Watch and browse Interdimensional Cable

await bp.open('youtube');

PianoPiano App

A virtual piano keyboard

await bp.open('piano');

FluidFluid Simulation App

A fluid simulation application

await bp.open('fluid-simulation');

PainterroPainterro App

Easy to use image editing tool

await bp.open('painterro');

MiniPaintMiniPaint App

A simple and easy to use paint application

await bp.open('minipaint');

Bubble PopBubble Pop

A fun and addictive bubble popping game

await bp.open('bubblepop');

Vision HarpVision Harp

Play music using hand gestures

await bp.open('vision-harp');

Jutsu CasterJutsu Caster

Cast Jutsu spells using hand gestures

await bp.open('jutsu-caster');

ChalkboardChalkboard

Draw and write on a virtual chalkboard

await bp.open('chalkboard');

PatatapPatatap

Create music and animations with touch and keyboard input

await bp.open('patatap');

Sound RecorderSound Recorder

Record and save audio clips

await bp.open('soundrecorder');

SamplerSampler

Create and mix audio samples

await bp.open('sampler');

Audio PlayerAudio Player

Play and manage audio files

await bp.open('audio-player');

VS Code EditorVisual Studio Code

A powerful code editor

await bp.open('editor');

MinesweeperMinesweeper

Classic Minesweeper puzzle game

await bp.open('minesweeper');

ChessChess

Play chess online with friends

await bp.open('chess');

SolitaireSolitaire

Classic Solitaire card game

await bp.open('solitaire');

StickmanStickman

Control a stickman using body poses

await bp.open('stickman');

GlobeGlobe

Visualize global network data

await bp.open('globe');

SpellbookSpellbook

Manage scripts or commands

await bp.open('spellbook');

Hacker TyperHacker Typer

Simulate hacking with a typing game

await bp.open('hacker-typer');

Screen RecorderScreen Recorder

Record your screen activity

await bp.open('screen-recorder');

File ViewerFile Viewer

View files in various formats

await bp.open('file-viewer');

CameraCamera

Capture photos and videos

await bp.open('camera');

Hex EditorHex Editor

Edit files in hexadecimal format

await bp.open('hex-editor');

MantraMantra

Experimental Game Engine

await bp.open('mantra');

Buddy Pond API

bp.load(appName | path)

Loads an app or resource. This will call App.init() if available.
It can also load external files (JS, HTML, CSS, JSON).

Examples

await bp.load(appName)
await bp.load('./path/to/script.js')
let html = await bp.load('./path/to/fragment.html')
let css = await bp.load('./path/to/styles.css')
let json = await bp.load('./path/to/data.json')

bp.open(appName, options)

Opens an app. This will call both app.init() and app.open().

Open App in Window

await bp.open('piano')

Open App in Panel

await bp.open('piano', { panel: '.targetDiv1' })

bp.window(options)

Opens a new window. Options may include position, size, parent, content, callbacks, etc.

bp.window.open('myApp', { title: "My Window", width: "500px", height: "400px" })
Available Options (with defaults)
title = "Window", // Title of the window
width = '400px', // Default width
height = '300px', // Default height
app = 'default', // default app
type = 'singleton', // Default type ( intended to not have siblings )
context = 'default', // Default context
content = '', // Default content
iframeContent = false,
position = null,
icon = '', // Default icon
x = 50, // Default x position
y = 50, // Default y position
z = 99, // Default z-index
parent = window.document.body, // Parent element to append to
id = `window-${idCounter}`, // Unique ID for the panel
onFocus = () => { }, // Callback when the window is focused
onClose = () => { }, // Callback when the window is closed
onOpen = () => { }, // Callback when the window is opened
onResize = () => { }, // Callback when the window is resized
onMessage = () => { }, // Callback when the window receives a message
onLoad = () => { }, // Callback when the window is loaded ( remote content )
className = '', // Custom classes for styling
resizeable = true, // Enable resizable feature
preventOverlap = true, // prevents direct overlap with other windows
canBeBackground = false // Can be set as background

bp.close(appName)

Closes an app by name.

bp.close('piano')

bp.set(key, value)

Saves a key/value pair to local storage.

bp.set('myKey', 'myValue')

bp.get(key)

Retrieves a value from local storage by key.

let value = bp.get('myKey')

bp.on(event, label, callback)

Registers an event listener for a specific event and label.

bp.on('app-opened', 'piano', (app) => { console.log('Piano app opened', app); })

bp.emit(event, data)

Emits a custom event with optional data.

bp.emit('my-event', { some: 'data' })

bp.off(event, label)

Removes an event listener for a specific event and label.

bp.off('app-opened', 'piano')