Personal Directory PlatformSpecifications & Pricing
← home
Custom build · Specifications

A personal database
that belongs to you.

Take an export — from Facebook, from Google Contacts, from anywhere — and turn it into a private, themeable, fully-editable directory that lives on your domain. Fast, beautiful, and built around how you actually work with your people.

4,841
Friends indexed
9,843
Contacts merged
1,675
Posts archived
4
Visual themes
0 ms
Server roundtrip

01What it does

Pulls your Facebook export and your Google Contacts CSV into one searchable, sortable, editable archive that loads instantly and runs entirely in your browser.

📋

Two views, one dataset

Toggle between a dense spreadsheet-style table and a card grid showing every detail per person. Sort, filter, paginate.

📝

Edit in place

Click any cell, type, move on. Changes save instantly to your browser. No "Save" button, no server roundtrip.

🔀

Drag to rearrange

Reorder columns by dragging. Resize them by dragging the right edge. Pin the name column so it stays visible as you scroll.

🎨

Four built-in themes

Burnt orange, light, dark, teal. One click to switch. Theme choice carries across every page in the site.

🔍

Full-text search

Search across name, note, city, email, mutuals, anything. Sub-second response on 5,000+ records.

📈

Computed insights

Birthday wishes sent, comments left, last interaction, ranked by mutual count. Computed live from the export.

🔗

Auto-built social links

Facebook, X, Instagram, YouTube, LinkedIn, TikTok, Threads, Bluesky — all pre-populated from name, override anytime.

📞

Click-to-call & email

Phone numbers open the dialer. Emails launch your mail client. Addresses link straight to Google Maps.

🔒

Private by design

Sensitive sections behind basic auth. Robots locked out by meta tag. SSL via Let’s Encrypt. No third-party trackers.

02The numbers

A working sample of what's running today on this domain.

03How it’s built

Plain HTML, CSS, JS — no framework, no build pipeline, no NPM install. Loads from a single static page, runs entirely client-side.

Frontend
Vanilla JS & CSS
No framework. No bundler. Each page is a single HTML file. Loads in milliseconds, works on any browser from the last 5 years.
Data
JSON files
Parsed once on page load. No SQL, no API calls. The whole 5K-friend dataset is under 1.2 MB compressed.
Edits
Browser localStorage
Every edit, column reorder, width adjustment, and theme choice persists across sessions on the same browser. No backend required.
Hosting
DigitalOcean droplet + nginx
Static files served from a $6/mo VPS. Let’s Encrypt for HTTPS. Nightly backup to Backblaze B2 ($0.005/GB/mo).
Auth
nginx basic auth
Sensitive sections (contacts with phone numbers, private notes) behind basic-auth login. No user database, no JWT complexity.
Import
Python parsers
Custom parsers for Facebook HTML exports and Google Contacts CSV. One-shot import; subsequent edits stay in the browser.

04Use cases

Anywhere you have a list of people, places, things, or events that you'd like to look at, sort through, and add notes to without paying $30 a month for someone else's SaaS.

👋

Personal CRM

Friends, family, mentors, professional contacts — all in one place, with the notes you'd never put in Salesforce.

🏠

Property managers

Tenants, leases, payment histories, repair notes — private, auditable, exportable.

📚

Authors & researchers

Sources, characters, places — cross-referenced and searchable.

🎟

Event organizers

Attendees, RSVPs, mailing lists, contributor history.

Small congregations

Members, families, ministries, give-history — private, no SaaS subscription.

🎨

Artists & collectors

Works, owners, provenance, exhibitions — private archive that's actually browsable.

05What you get

A complete custom build deployed to your domain, parsed from your data, themed your way.

Starter

$1,500 one-time
  • One data source (CSV / JSON / FB export)
  • Up to 2,000 records
  • Standard 4-theme system
  • Deployed to your domain
  • 30 days of email support

Bespoke

From $7,500
  • Unlimited data sources & records
  • Custom integrations (Stripe, Calendly, etc.)
  • Server-side persistence (optional)
  • Multi-user access controls
  • Mobile-app companion (optional)
  • Ongoing support retainer

Hosting is your responsibility (any $5–10/mo VPS will do); I'll set it up if you don't already have one. Subsequent updates billed at $150/hr or by quote.

Try it now

The friend directory is open. The contacts directory is behind a password (sensitive PII).

Open friend list → Open timeline → Open contacts (login: paul / Testpass1944) →

06Why I built this

SaaS pricing turns sentimentality into rent. I wanted my own database back — my friends, my family, my houses, my history — without monthly tribute to whoever owns the database vendor this year.

Most off-the-shelf "personal CRM" tools either charge $20/mo per user, lock you into a closed format, or stop being maintained when their funding runs out. This project is intentionally the opposite: plain files, plain JS, your data, your domain, your pace. If I'm hit by a bus, you can keep editing it forever.

The same architecture works for any directory. If you have a spreadsheet you wish acted like a real tool — let's talk.

Want one of your own?

Send me what you've got — CSV, export, screenshot of a spreadsheet — and I'll quote the build by Friday.

paul@wholetech.com →

Built by

WholeTech

Independent web development since 1996. Austin, TX. wholetech.com