Co-authored-by: exe-dev-bot <exe.dev@kwila.cloud> Co-committed-by: exe-dev-bot <exe.dev@kwila.cloud> |
||
|---|---|---|
| AGENTS.md | ||
| favicon.html | ||
| favicon.png | ||
| index.html | ||
| justfile | ||
| LICENSE | ||
| README.md | ||
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):
Usage
- Open
index.htmlin a modern browser (Chrome, Edge, or other Chromium-based browsers recommended for File System Access API support) - Click "New" to create a new address book, or "Open File" to open an existing
.sqlite3file - Edit your data in the spreadsheet interface
- Click "Save" or press
Ctrl+Sto 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.
nginx (recommended)
# 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.