Start Menu, aka Start, is my personal dashboard for tracking:
I serve this on my local network and access it from multiple devices via a Tailscale VPN for private tunnelling. I remixed Daylight as a screensaver. I resurrected Nook to play Animal Crossing background music every hour. I also integrated Cap to record weekly vlogs. There's also a work mode with restricted data fetching to keep my personal data off the corporate VPN.
This app exists to make it easy to iterate on how I organize myself. Ideally, building a bespoke UX and feature set will encourage consistency in reflection and growth.
Start is built around a few core principles:
- Single source of truth - One app for all your personal organization
- Private - Self-hosted behind a homelab VPN network, no public internet
- Minimal friction - Quick to open, quick to use
- Visual clarity - Clean design with meaningful colours and icons
- Daily focus - Emphasizes today while tracking long-term progress
Track your daily habits with convenient rollup metrics.
- Sunday Reflection: Record an end-of-week video reflection using the built-in Loom SDK recorder
- Flexible categories: morning, night, exercise, health, weekdays, etc with icon differentiation and quick filtering
- Collapsible week views See weekly progress rolled up over time
- State tracking: Customizable states: ✅ Done, ❌ Failed, 🙂 Failed with exception, or 🫤 Succeeded Poorly
Daily task management separated by Life and Work. Inspired by https://tweek.so/
- Drag and drop - easily move tasks between status accordions, or to the graveyard
- Easy task punting - move incomplete tasks to the next day
- Days punted counter - display how many days I've procrastinated lol
- Task Graveyard - persist tasks without being assigned to a date for later
- Status sorting - unfinished tasks always appear first
- Work life balance - lol. Tasks are split into two columns: life and work. When
?wis added to the URL, only work tasks are shown/fetched.
Integrated Memos as an iFrame for quick thoughts and notes.
Better than a notes app where everything gets lost. Memos has search, hashtags, date-filters, and more.
Daily check-ins with thoughtful prompts worth asking every day.
Organize ideas and groups of thoughts that belong together. Looks like Todoist Kanban view. Perfect for: Groceries, Furniture ideas, Movie watchlists.
Google Keep-style cards for ideas on what to do next. Mosaic tile layout with variable colors and tile sizes.
Sun position visualizer as a screensaver.
Daylight by bakkenbaeck is a simple, beautiful sun position visualizer powered by sunCalc, a React library that returns the suns location based on your timezone, and I've been using their website for years. Since it's open source, I decided to fork it to add more color schemes, more icons, more sayings, and fixed lines to mark the 9-5 and bedtime. I also zoomed in a bit, which is really satisfying. It acts as a nice screensaver that you can leave on all day.
By the end of this setup, you'll have:
- Bun installed on your computer (runtime & package manager)
- PostgreSQL running in a Docker container
You'll need:
- Docker Desktop - for running PostgreSQL
Click to expand
-
Clone the repository
git clone <your-repo-url> cd start
-
Install Bun (if not already installed)
curl -fsSL https://bun.sh/install | bash -
Install dependencies
bun install --cwd client bun install --cwd server
-
Configure environment variables
Copy the example files and update the password:
cp .env.example .env && cp server/.env.example server/.env && cp client/.env.example client/.env.local
Then edit
.envandserver/.envto set your password (use the same password in both):- In
.env: updatePOSTGRES_PASSWORD=change-me - In
server/.env: update the password inDATABASE_URL=postgres://start:change-me@...
- In
-
Configure Google Calendar (Optional)
To display Google Calendar events, uncomment and configure in
server/.env:GOOGLE_APPLICATION_CREDENTIALS=./google-calendar-key.json GOOGLE_CALENDAR_ID=you-can-find-this-in-the-calendar-settings-usually-it-is-your-email-address
You'll need to:
- Create a Google Cloud project and enable the Calendar API
- Create a service account and download its JSON key to
server/ - Share your calendar with the service account email
See Server Documentation for detailed steps.
-
Start the app
./go.sh
This will:
- Start Docker Desktop automatically (macOS only)
- Start the PostgreSQL Docker container
- Wait for PostgreSQL to be healthy
- Start the API server on
http://localhost:3000 - Start the client on
http://localhost:5173 - Open your browser automatically
Note: Requires Docker Desktop to be installed.
That's it! If you're just running this locally on your own machine, you're done. 🎉
I want to own my data. Nothing is stored in the cloud—everything lives on my own hardware.
Tabular Data → PostgreSQL. Habits, todos, journal entries, and all other structured data lives in a PostgreSQL database running in Docker on my home server.
Video & Photos → Local storage with remote access (Cap/MinIO, Immich Server)
Video recordings from Cap and my personal photo library for Immich are both running as Docker containers on my local server, and the media is stored locally on my giant SSD.
Does this matter? Is this worth running your own VPS? Yes, it does, and yes, it is. The fact that any Loom employee, or bored Google Photos engineer, can access my personal content feels wrong. A value exchange I didn't really sign up for. What's worse is when companies process your content to train AI models or mine it for data like location, faces, and transcribe it for god knows why. I would rather go through an hour of setup (or days to build this app) once than have to deal with the continuous threat of overreach.
This means:
- No cloud subscriptions — free, no account management, no annoying sales emails
- No external dependencies — App works even when Cap Cloud, Immich Cloud, or Memos Cloud go down
- Videos stay local — All recordings are stored on a media drive attached to my home server
- Backups — Way easier to clone and zip local files than try to download them from a cloud platform
- Offine-first - no wifi no problem
| Section | Description |
|---|---|
| 📖 Client Documentation | Frontend setup, project structure, components, and features |
| 🔧 Server Documentation | API reference, database schema, and backend details |
| Layer | Technologies |
|---|---|
| Frontend | React, TypeScript, Vite, CSS Modules, Phosphor Icons |
| Backend | Express, TypeScript, Bun |
| Database | PostgreSQL (Docker) |
| Integrations | Google Calendar API, Cap + MinIO |
All data is stored in your own PostgreSQL database. Multi-device access uses Headscale/Tailscale for encrypted WireGuard tunnels - no data is exposed to the public internet. Nothing is sent to external servers except what you explicitly configure (like Loom for video reflections).
Open Source:
- Memos - For the note-taking experience (iframe)
- Daylight - For the sun position screensaver inspiration (remade)
- Cap - For the video recording experience (iframe)
- Immich - For the photo gallery experience (iframe)
Libraries:
- Phosphor Icons - For beautiful, consistent icons
- Loom SDK - For seamless video recording
- Google Calendar API - For calendar integration
Inspiration:
- Tweek - Todos
- BeaverHabits - Habit tracking
- Nook - Animal Crossing background music