No description
Find a file
exe-dev-bot 65a99db6dc feat: add favicon and justfile for regeneration (#8)
Co-authored-by: exe-dev-bot <exe.dev@kwila.cloud>
Co-committed-by: exe-dev-bot <exe.dev@kwila.cloud>
2026-01-05 22:23:56 -05:00
AGENTS.md docs: add git workflow instructions to AGENTS.md (#2) 2026-01-05 21:09:31 -05:00
favicon.html feat: add favicon and justfile for regeneration (#8) 2026-01-05 22:23:56 -05:00
favicon.png feat: add favicon and justfile for regeneration (#8) 2026-01-05 22:23:56 -05:00
index.html feat: add favicon and justfile for regeneration (#8) 2026-01-05 22:23:56 -05:00
justfile feat: add favicon and justfile for regeneration (#8) 2026-01-05 22:23:56 -05:00
LICENSE chore: update LICENSE copyright 2026-01-05 20:38:25 -05:00
README.md feat: add favicon and justfile for regeneration (#8) 2026-01-05 22:23:56 -05:00

Address Book

Address Book

A featureful address book app in a single HTML file. All data is persisted to a SQLite file on your local filesystem.

Demo: https://address-book.kwila.cloud

Features

  • Open, create, and save SQLite database files
  • Add, edit, and delete rows and columns
  • Column sorting (click header to cycle: ascending → descending → none)
  • Global search and per-column filtering
  • Drag-and-drop column reordering
  • Resizable columns
  • Hide/show columns
  • Print mailing labels (Avery 5909 format)
  • Auto-reconnect to last opened file
  • Dark mode support
  • Keyboard navigation (arrows, Tab, Enter)

Design

Everything lives in a single index.html file—HTML, CSS, JavaScript, and SVG icons. No build step required. Just open it in a browser or serve it from any static host.

External dependencies (loaded from CDN):

  • sql.js - SQLite compiled to WebAssembly
  • jsPDF - PDF generation for labels

Usage

  1. Open index.html in a modern browser (Chrome, Edge, or other Chromium-based browsers recommended for File System Access API support)
  2. Click "New" to create a new address book, or "Open File" to open an existing .sqlite3 file
  3. Edit your data in the spreadsheet interface
  4. Click "Save" or press Ctrl+S to save changes

Keyboard Shortcuts

Shortcut Action
Ctrl+S Save
Ctrl+O Open file
Ctrl+F Focus search
Enter Move to next row
Tab Move to next cell
Arrow keys Navigate cells

Development

A justfile is provided for common tasks:

just          # List available recipes
just favicon  # Regenerate favicon.png from favicon.html

Favicon

The favicon is generated from favicon.html using html2png.dev. Edit the HTML/CSS in favicon.html, then run just favicon to regenerate.

Deployment

This is a static site. Serve index.html and favicon.png from any web server.

# Install nginx
sudo apt install nginx

# Configure site (edit /etc/nginx/sites-available/default)
server {
    listen 8000;
    root /path/to/address-book;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

# Enable and start
sudo systemctl enable nginx
sudo systemctl start nginx

Quick local testing

# Python (not recommended for production)
python3 -m http.server 8000

# Or just open index.html directly in a browser

Note: Python's http.server is single-threaded and intended for development only. Use nginx or another production web server for real deployments.

Note: The File System Access API (used for opening/saving files) requires either localhost or HTTPS.