PulseDash – Analytics Dashboard Kit
Every link, tool, and bookmark. One dashboard, self-hosted.
A personal and team dashboard that replaces scattered browser bookmarks — organize resources into collections, arrange a widget grid, jump to anything with Ctrl+K, and pull in an RSS reader, all backed by your own PocketBase instance.
Install
~60 secondsgit clone https://github.com/yashthakur1/dash.git pulsedash
cd pulsedash
npm installAlready wired, so you can skip to features.
Customizable widget dashboard
Arrange bookmarks, collections, and tools into a widget grid you rearrange to match how you actually work.
Collections & resource organization
Group links and tools into collections instead of drowning in browser bookmarks. Backed by PocketBase/SQLite.
Built-in authentication
PocketBase-backed accounts and access control, so team dashboards stay private.
Self-hosted, single PocketBase binary
No managed backend to pay for — PocketBase runs as one executable alongside the app and jobs service.
Every dependency has a reason.
- Next.jsReact frontend and API routes for the dashboard UI and Ctrl+K search.
- PocketBaseSingle-binary backend — SQLite storage, auth, and a real-time API with nothing extra to deploy.
- Tailwind CSSUtility-first styling for the widget grid, collections, and theming/wallpapers.
- Node.js jobs serviceSeparate background process that fetches RSS feeds and runs scheduled monitoring.
Here's every env var, labeled.
Copy to .env.local. The included first-run script refuses to boot if any of them are missing — you'll know immediately.
NEXT_PUBLIC_PB_URL=http://127.0.0.1:8090
NEXT_PUBLIC_APP_URL=http://127.0.0.1:3000Zero to first deploy.
This is the exact sequence we'd run from a blank directory. Steps are reproducible — if one fails, we want to know.
1. Set up PocketBase (backend)
Download the PocketBase v0.30.4 executable for your OS into the pocketbase/ directory, then run migrations and start the server — it serves the API on http://127.0.0.1:8090.
./pocketbase migrate --dir ./pb_data --migrationsDir ./pocketbase/pb_migrations ./pocketbase serve --dir ./pb_data --migrationsDir ./pocketbase/pb_migrations2. Start the jobs service
In a separate terminal, install and run the background jobs service that handles RSS fetching and monitoring.
cd jobs npm install npm run dev3. Configure and run the Next.js app
Back in the repo root, install dependencies, add a .env.local pointing at your PocketBase instance, and start the dev server.
npm install npm run dev
The stuff that ate our afternoons.
Things we'd have wanted a heads-up on. Logged as we hit them.
- !All three processes — PocketBase, the jobs service, and Next.js — need to be running at once, or RSS/monitoring silently stops updating even though the dashboard still loads.
- !Run PocketBase migrate before serve on a fresh pb_data directory, or the app fails to boot with a missing-schema error.
- !Two-factor auth ships via speakeasy — back up your PocketBase pb_data volume before rotating secrets or enabling it for a team.
If you just need one shared bookmarks list, this is more than you need — the collections, widgets, and RSS layer add real setup overhead (three processes to run). This kit is for people who want one page that replaces ten browser tabs.
Got stuck, or want this shipped end-to-end for you? bitroot.club builds custom products for founders. →