This repository contains a minimal OpenIntegration example for paperlesspaper.
The current UI layer is a simple GitHub username widget:
- render.html displays the configured GitHub username.
- settings.html lets the host app edit the
githubUsernamesetting throughpostMessage.
If you want a fully consistent GitHub integration, those two files should be updated next.
The integration is split into two pages:
- render.html receives integration data from the host app and renders the configured GitHub username.
- settings.html receives initial settings from the host app, lets the user edit them, and posts
UPDATE_SETTINGSandSET_HEIGHTmessages back.
The settings page follows the expected paperlesspaper message flow:
- listen for
INIT - apply incoming settings
- post
UPDATE_SETTINGSwhen the input changes - post
SET_HEIGHTso the host can size the settings iframe correctly
- render.html: Render page shown inside the integration.
- settings.html: Settings UI for editing the GitHub username.
- config.json: Integration manifest currently still using the older XKCD name and defaults.
- api/xkcd.js: Legacy serverless XKCD proxy kept from the earlier sample.
- INSTRUCTIONS.md: Prompt-style implementation notes for generating simple OpenIntegrations.
- vercel.json: Vercel routing and deployment configuration.
Run the project locally with Vercel:
- Install the Vercel CLI:
npm i -g vercel - Start the dev server:
vercel dev
The project will usually be available at http://localhost:3000.
Useful local URLs:
/render.htmlfor the render preview/settings.htmlfor the settings preview/config.jsonfor the integration manifest
Deploy the repository and use the deployed config.json URL as the custom integration URL inside paperlesspaper.
Example:
https://your-deployment.example/config.json
Because the manifest still contains XKCD metadata, the integration may appear under that older name until config.json is updated.
This project is set up for Vercel hosting with static pages plus serverless API routes.
Deploy with Vercel and make sure these files remain publicly available:
If you are building a new integration from this repo, use the GitHub-related UI files as the reference for host communication and update the manifest and API layer to match the final integration behavior.