Getting started
shipdot has three pieces: Markdown entries in your repository, the CLI that compiles them into shipdot.json, and the <ship-dot> web component that shows them in your app. You need Node.js 24 or newer for the CLI.
1. Create the config and a first entry
Section titled “1. Create the config and a first entry”Run this in the root of your web app:
npx @shipdot/cli initIt creates:
shipdot.config.jsonwith sensible defaults (outDirispublic/, orstatic/if that folder exists)..shipdot/entries/<today>-welcome.md, an example entry.
Existing files are never overwritten. Add --locales en,es if you plan to translate.
2. Write entries and build
Section titled “2. Write entries and build”An entry is a Markdown file with frontmatter:
---date: 2026-10-14type: new # new | improved | fixedtitle: Export to Exceltarget: "#btn-export" # optional: puts a hotspot on this element---You can now export any report to Excel with one click.Compile the entries:
npx @shipdot/cli buildThis validates every entry, renders Markdown to sanitized HTML and writes public/shipdot.json, public/llms.txt and public/llms-full.txt. Add it to your build script so the feed is always fresh:
{ "scripts": { "build": "shipdot build && vite build" }, "devDependencies": { "@shipdot/cli": "^0.1.0" }}3. Add the widget
Section titled “3. Add the widget”From a CDN:
<script type="module" src="https://unpkg.com/shipdot@0.1"></script><ship-dot src="/shipdot.json"></ship-dot>Or from npm (npm install shipdot), then import it once on the client:
import 'shipdot'That’s it. Users see a bell with an unread count. When an unread entry has a target, a pulsing dot appears on that element.
Next steps
Section titled “Next steps”- Let shipdot draft entries from your pull requests.
- Automate it with the GitHub Action.
- See the framework guides for React, Vue, Svelte, Astro and Next.js.
- Customize colors and the trigger in Theming.