PhotoBlad

Self-hosted photo library

Your photos stay home.

PhotoBlad is a self-hosted photo library. It runs on a computer you control, reads the folders your photos already live in and shows them in a web gallery, without ever changing a file.

Phases 1–8, editing, storage, AI, Mac & Windows packages, moments & memories, duplicates, stacks, albums, connections, Google Photos Picker and Fix photo done; moving, export and the home network built for the next release; store releases under way. Server 0.15.1 · phone apps 0.5.1. The repository is private for now.

IllustrationThe PhotoBlad web gallery at localhost:5180, drawn in HTML with generated sample scenes.

PhotoBlad

Låt bladet vara. Let the leaf be.

The name

Blad is Swedish for a leaf, and for a sheet of paper. PhotoBlad keeps each photograph whole, and leaves it where you put it.

What it is

A photo library that runs on your own computer

PhotoBlad is an alternative to Google Photos that you host yourself. Point it at your photo folders and it builds a library you browse and search in your web browser, with thumbnails, photo details, albums, moments, On this day memories and a justified grid. Your family can back up photos and videos to it from their browsers or automatically from the iPhone and Android apps, privately unless they choose to share.

It’s built with .NET 10 and Microsoft Aspire. The web app is Blazor WebAssembly, the phone apps are Avalonia 12, the library is a SQLite database in PhotoBlad’s own data folder, copied every night, and videos are processed by FFmpeg when it’s installed. Run it from source, from a notarized package on a Mac or a native package on Windows with a menu-bar or system-tray icon and one-click updates, or as two containers with Docker or Podman Compose — reached through Caddy on your own domain (configured in Settings → Public address or Compose) or privately through Tailscale.

Privacy and security in detail
  • Your originals stay as they are

    Photo folders are only ever read, and a backup is written once and never changed. What you delete waits in a trash, 30 days by default, and only PhotoBlad’s own copies are ever deleted: never a file in your folders, and nothing on your phone unless you ask the app to free up space and confirm it.

  • On hardware you control

    PhotoBlad runs on your own computer or server. Your library, your family’s backups, the database and the thumbnails stay on that machine.

  • Private until you share

    What you back up is yours alone, hidden even from the owner, until you share it with the family. Anything you can’t see answers exactly as if it didn’t exist.

  • Sessions you can end

    Each browser and phone signed in has its own session on the server. Settings → Devices lists them, and signing one out ends it at once.

  • Nothing loaded from elsewhere

    The web app gets everything from your server, fonts included. Where a photo was taken shows as coordinates under the nearest town, from a list kept on your server: no map service is ever asked.

  • No email addresses

    Accounts use a username, and PhotoBlad never sends email. The owner makes a new sign-in link for a member who forgets their password; the owner’s own is reset from the command line on the server.

Features

What works today, and what comes next

Available now

Phases 1–8, editing, storage, updates, Keep it safe, Find and tidy, AI, the Mac & Windows packages, where things live, moments & memories, Live & Motion Photos, duplicates & stacks, albums & connections, Google Photos Picker, Fix photo & ProRAW
  • Read-only scanning

    Point PhotoBlad at the folders your photos already live in. It reads them and never moves, renames, re-encodes or deletes a file.

  • JPEG, PNG, WebP, HEIC and DNG

    The date, camera, lens, exposure and GPS position are read from each photo’s EXIF data — HEIC, Apple ProRAW and DNG (.dng, marked with a RAW badge) included.

  • Quick rescans

    Files that haven’t changed are skipped without being read again. A renamed or moved photo — even one both moved and edited in another app — keeps its place and its ID, and identical copies are listed once.

  • Thumbnails, made once

    Small WebP thumbnails are made while indexing and kept in PhotoBlad’s data folder. Large previews are made the first time a photo is opened.

  • The Darkroom gallery

    A justified photo grid that only draws the rows on screen, and a lightbox you can step through with the arrow keys. It fits phone screens too.

  • Photo details

    When a photo was taken, with which camera and lens, its exposure, size and file. Where it was taken shows as coordinates under the nearest town, with no call to a map service.

  • Scans from the browser

    Start a scan from the web app and follow its progress live. The gallery reloads when the scan finishes.

  • Two services, one command

    Aspire starts the Server (web app and API) and the Indexer (scanning) together, with a dashboard for logs and health.

  • Accounts for your household

    An owner and family members share one library: the folders the owner scans. The owner invites members with single-use links.

  • Passwords and passkeys

    Sign in with a username and a password or a passkey. There’s no email address to give, and PhotoBlad never sends email.

  • A setup code on first run

    The first start prints a one-time setup code in the Server log. Enter it at /setup to create the owner account, so nobody else can claim a new install.

  • Backups from the browser

    Anyone signed in can back up photos and videos with the Upload button or the drop zone. Each file’s hash is checked first, so nothing you’ve backed up is sent twice.

  • Written once, in plain folders

    Backups are kept byte for byte, under their own names, in plain folders that open without PhotoBlad, ~/PhotoBlad/Uploads to begin with. PhotoBlad never changes or overwrites one.

  • Sharing, when you choose

    Your backups are private, even from the owner, until you share them in Settings → Sharing. The gallery shows Everything, the Family library or My backups.

  • A session for every device

    Each browser and phone signed in has a session of its own. Settings → Devices lists them and signs any one out at once, phones included.

  • Videos

    MP4, M4V, MOV, 3GP, WebM, MKV and AVI, with posters, playback in the browser and seeking. FFmpeg is optional: without it, videos are still backed up and listed.

  • Playback copies

    A video that not every browser can play gets an H.264 copy for playing, made in the background. The copy is disposable, and the original is never changed.

  • Live Photos and Motion Photos

    An iPhone Live Photo or an Android Motion Photo is one tile with a LIVE badge. Hover to preview on the web, or open it and press and hold to play the motion with sound and haptics; download the photo or its motion clip.

  • Download original

    Every photo and video you can see downloads exactly as it was stored, byte for byte.

  • Non-destructive editing

    Crop, rotate, straighten, four-corner perspective correction, light, colour and filters, previewed live as you drag. The edits are stored beside the photo and the edited look is made from the original, which is never modified.

  • Details you can correct

    Fix a date or a place, add a caption and tags, and mark favourites, which stay private to you. The camera’s own values are kept, and nothing is written into the file.

  • Video trims

    Keep just the part of a video you want. Download it as a quick lossless copy, or as an exact, frame-accurate one.

  • Versions beside the original

    Keep a photo you edited in another app, such as Lightroom, next to the original, and compare the two. Deleting a version never touches the original.

  • Download edited

    Download the edited photo at full size, upright and with its date and place, or the original exactly as it was stored.

  • Storage across drives

    Keep backups, imported photos and versions in folders on as many drives as you like, filed by month and person. The owner can dedicate a drive to one person; everything else goes to the first shared location with room. A drive that isn’t plugged in is offline, nothing is written there, and an on-demand Refresh or folder check in Settings → Storage verifies right away whether a drive is back online.

  • Verified moves

    When someone is given a drive, a drive comes back after being offline, or a location is drained or goes over its cap, files move by a copy that’s checked against its hash before the old one is removed. Every check reads the bytes from the drive itself, past the computer’s own cache, so a network share that only seemed to hold a whole copy is caught, and a new copy that turns out broken sends the library back to the old file. One at a time, paused during a scan or an import, and the bytes never change.

  • Import, and Google Takeout

    Copy a folder of photos and videos — or a Google Photos Takeout with its JSON dates, places and captions — into PhotoBlad’s storage, for the family or for one person, and follow its progress. What’s already stored is skipped by its content, and the source folder is left untouched.

  • Rebuilt from your folders

    After a lost database, storage rebuild reads every storage location, both folder layouts and each location’s manifest, and records the backups, versions, sealed files and their owners again. It never changes a file.

  • Docker and Podman Compose

    The Server and the Indexer run as two containers with one Compose command. FFmpeg is installed on a click, the containers run without privileges on a read-only root file system and publish nothing of their own, and you mount your photo folders read-only, so the operating system itself keeps them untouched.

  • Caddy, with automatic certificates

    Reach PhotoBlad at your own domain over HTTPS, with certificates that Caddy gets from Let’s Encrypt and renews itself, HTTP/3, and uploads and videos that stream straight through. On a Mac, Settings → Public address installs Caddy on a click, checks your DNS and router port forwarding, supports custom public HTTPS ports and local service port selection, and turns HTTPS on or off from the browser.

  • Tailscale, private to your devices

    Reach PhotoBlad at an address such as https://photoblad.<your-tailnet>.ts.net, which only the devices on your own tailnet can open, with certificates Tailscale provides and renews. Add it in Settings → Public address (or with photoblad address add), and nothing is exposed to the internet.

  • Health checks and backups from the command line

    doctor checks the installation: FFmpeg, photo decoding including HEIC, the data folder, every storage location, the database copies and the proxy settings. db backup copies the database safely while PhotoBlad runs.

  • FFmpeg on a click

    The owner can have PhotoBlad download FFmpeg, at first-run setup or in Settings → Updates: an approved build for this computer, checked against its SHA-256 and tried before it’s used. Installing it from a file, or yourself, works too.

  • Signed updates, and one-click Mac & Windows updates

    If the owner agrees at setup, PhotoBlad reads the project’s signed update feed once a day and says when a new version is out. On a Mac or Windows PC installed from the package, Settings → Updates (or photoblad update) verifies the download against the signed feed and restarts into the new version on your click.

  • A copy of the database every night

    The database, PhotoBlad’s settings and the key that keeps browsers signed in, in one zip in a storage location, checked before it counts. A week of nightly copies is kept, and a copy from each of the four weeks before. db restore puts one back.

  • Settings → Health

    One page for the owner: what needs them first, then the database copies, everyone’s phones and when each last backed up, storage, last night’s maintenance and recent warnings and errors. A full check of the installation runs on a click.

  • Nightly maintenance

    After the copy, PhotoBlad checks and tidies its database, cleans up its caches and logs, and reads every original again once a month to catch a failing disk. It warns when a drive will fill within 30 days, and never changes a photo.

  • HEIC in a helper

    HEIC photos are decoded by a small program of their own, started for each photo, so a damaged file fails alone and PhotoBlad carries on. Any file that crashed PhotoBlad twice while being read isn’t opened again.

  • Search, with fuzzy and compound queries

    Search file names, captions, tags, cameras, people, places and dates with typo tolerance and compound queries (such as "Maya Tokyo" or a person plus an AI scene), newest first. Live suggestions show matching people (with face thumbnails), places, tags and cameras as you type. / or ⌘K opens it.

  • Place names, kept at home

    Each photo’s location is headed by the nearest town or city within 50 km, from GeoNames’ list of places of 1,000 people or more, which PhotoBlad keeps on your server (CC BY 4.0). No other service is asked.

  • A jump bar through the years

    A bar at the right edge with the years along it. Drag to a month, or click a year, and the gallery goes there, even to months it hasn’t loaded yet. Search results get one too.

  • Select many at once

    Select photos one by one, Shift-click a range, or select them all. Then favourite, tag, hide, download or move them to the trash, shift their dates or set their location, in one go.

  • Download several

    A zip of up to 5,000 originals, byte for byte, made while it downloads and never kept on the server. A Live Photo’s motion comes with its photo.

  • Hide, and a trash

    Hide a photo from everyone else, or move it to the trash, where it waits 30 days unless the owner sets another period. Restoring it brings back its edits, tags and versions. Only PhotoBlad’s own copies are ever deleted: a photo in a folder you scan can only be hidden.

  • Search by what’s in a photo

    Find “beach at sunset” without a caption that says so, and photos like one you’re looking at. A model PhotoBlad runs itself, on your own server, installed only when the owner chooses.

  • Faces, active training and profile avatars

    The family’s people, named by the owner, and each person’s private people for their own backups, with an active-learning queue to confirm uncertain face matches on the web and phone. Link your own face (This is me), choose your profile avatar from your recognized face crops or any photo, or hide your face from everyone.

  • Descriptions, questions and removing an object

    A description of each photo, marked as written by AI and kept apart from your captions; questions you can ask about a photo; and removing an object, saved as a new version beside the original. Descriptions and questions use Ollama, on a computer you control.

  • PhotoBlad on a Mac and Windows

    Native server packages with the Server, the Indexer and the photoblad CLI inside — signed and notarized on macOS, and packaged for Windows (x64 and ARM64) with Task Scheduler auto-start. One command installs it into your account, starts it at login and restarts it if it stops. No developer tools, no Docker.

  • A menu-bar or system-tray icon

    Shows whether PhotoBlad is running and what needs the owner, with a notification for each new thing, if you want one. Open PhotoBlad, copy its address, restart or stop it from the menu. Hiding the icon never stops PhotoBlad.

  • Where PhotoBlad keeps things

    Settings → Storage lists every disk PhotoBlad writes to, with its free space and what it keeps there: backups, caches, add-ons, the database, the copies and the library folders. The caches and the add-ons can each move to a drive of their own; on a Mac, a command moves the database.

  • Move backups to another drive

    A guided move of everything on one drive to another, checked first against the room the new drive has. The old drive is retired once it’s empty. Files move by the same checked copy as before.

  • How backups are filed

    One folder per person, then year and month, or one folder per month. The owner chooses, and can re-file what’s already there, a few files at a time, with Pause and Resume. Nothing is lost if you stop halfway.

  • Library folders, looked after

    Settings → Library lists each scanned folder with its state. If a folder moves, Folder moved… finds the photos in the new place, checks some of them by their contents and keeps their edits, tags and favourites. Remove from library forgets a folder without touching it.

  • Moments

    Drag the jump bar, or rest on a month, and its moments appear beside it: each with its days, the place most of its photos were taken, the people named in them, the tags and a few covers. Choose one to see just those photos. On the phone, the same column stands beside the date scrubber.

  • Titles for moments

    Off until the owner turns it on, and only once descriptions are on. An AI on a computer you control writes a short title from the descriptions of the photos, their places and dates. No picture, name, caption or tag is sent, and nothing of a backup unless everyone who backed it up allows it.

  • Light mode

    The web app follows your computer’s light or dark setting, or you choose Light, Dark or System in the account menu. The choice stays in that browser.

  • Editing on the phone

    Rotate, flip, straighten, crop with four-corner perspective handles, Fix photo, light and colour, filters, Auto, removing an object and trimming a video, with the same Undo, Compare and Revert as the web app. The edits are stored beside the photo, so the web app shows them too.

  • Edits from Apple Photos

    An iPhone can also back up the edited picture Apple Photos keeps, as a version beside the original. It’s a setting in the app, off until you turn it on. The original is always sent first and is never replaced.

  • Fix photo, and bulk Fix photos

    One click straightens and crops a photographed print from its outline (including four-corner perspective warp when keystoned), turns it upright and balances its colour inside the crop — or select many photos at once and review before-and-after fixes in bulk before saving.

  • Duplicates, merged without deleting

    When the same photo arrives twice (an iPhone original and an imported copy), certain matches merge the second copy as a version beside the first without deleting a file. Possible matches wait in /duplicates on the web and on the phone for you to choose which copy to keep.

  • Similar photo stacks

    Burst frames and near-duplicate shots group into stacks in /stacks on the web and on the phone, with a suggested best shot from sharpness, resolution, favourites, edits and open eyes. A burst needs the time the camera recorded, never just the file’s date, and a pair waiting in the duplicates review isn’t offered again here. Stacked groups collapse to one tile with a count in the gallery.

  • Albums and shared albums

    Make albums for yourself, share them with chosen family members (who can add their own photos when you allow it), or share an album with a connected PhotoBlad server — and browse Shared with me albums (including Live Photo motion) on both the web and the phone, saving any photo to your own library.

  • Connections: offsite backup to another PhotoBlad

    Pair with a relative’s or friend’s PhotoBlad (over Tailscale today; from the next release also at its public https name, or on your home network once the owner allows it, with its certificate checked by the pairing): one owner makes an invite code, the other types it in, and both compare the same six words before anything is connected. Then send your backups (and Live Photo motion clips) to space they set aside for you, and, once they allow it, restore from them if your own drive is lost.

  • Sealed offsite backups

    Seal what you send to a connection with a key only your server holds, written down as a 24-word recovery phrase, so the host stores only opaque sealed files and can’t see your photos, names, dates, places or edits: only each file’s size and when it arrived.

  • Add from Google Photos

    Connect your Google account and pick photos and videos straight from Google Photos into your library from the web or the phone, streaming originals into storage and merging duplicates automatically.

  • On this day memories and fullscreen slideshow

    Revisit photos taken on today’s date in past years at the top of the gallery, and play a fullscreen slideshow (3s, 5s or 10s with loop) in the viewer or any album on the web and the phone.

  • Phone app lock and verified space cleanup

    Lock the phone app with Face ID, Touch ID or your device passcode (with an instant background privacy cover), and free up camera-roll space only after your server verifies each original and Live Photo is safely on disk.

  • Easy on the phone’s battery and data

    The phone apps scroll at up to 120 Hz only while your finger is moving the photos, and slower otherwise. Behind other apps they stop their polls and timers and let go of memory, while backup carries on. On mobile data or in Low Power Mode they load fewer pictures ahead and fetch a Live Photo’s motion only when you play it. Backup hashes each file as it copies it instead of reading it twice, waits while the phone is hot, and on Android looks for new photos less often while it finds none. The server compresses its large lists for them.

Under way

Built for the next release (N), and Phase 9, the public store releases
  • Move PhotoBlad to another computer

    Coming in the next release. Move PhotoBlad to another computer…, in Settings → Storage, opens a page that says what to bring and what to leave behind, and the exact steps for your install. On the new computer, first-run setup offers Restore from a PhotoBlad copy instead of a new owner account: everyone’s accounts, albums and edits come back, and the server keeps its identity, so connected PhotoBlads stay paired. On a Mac or Windows PC it’s one command, photoblad restore.

  • Export your library

    Coming in the next release. A way to leave PhotoBlad, or to keep a copy that needs no PhotoBlad to open: everything you can download, or a selection, as zips, or for the owner into a folder on the server. Originals byte for byte in year and month folders, a sidecar beside each photo with its caption, tags, date, place and people that other photo apps read, your albums, and a checksum for every file.

  • The home network, on the phone

    Coming in the next release, off until you turn it on. On your home Wi-Fi the app can talk to the server straight over the home network, at full speed and with no VPN, but only after checking that the server there is the very one you signed in to. Anywhere else, it uses the server’s usual https address.

  • Several servers on one phone

    Coming in the next release. Sign in to more than one PhotoBlad, say your own and your parents’, and switch between them in the Account sheet without losing anything. One of them backs up the camera roll; the others are for browsing and sharing.

  • The phone apps, in the stores

    The iOS and Android apps browse and search the library like the web app (fuzzy and compound search, photos or videos, dates, places, More like this, and search inside an album), train faces and set profile avatars, view albums and Shared with me albums, play videos, Live Photos, Motion Photos and slideshows, revisit On this day memories, review duplicates and stacks, select, save and share many photos at once, edit (with Fix photo and perspective handles), show a photo’s versions and ask about it, keep Hidden photos and the trash (the library’s too, for the owner), manage your profile, passwords, passkeys, devices and appearance, lock with Face ID or biometrics, save and switch between server addresses, and back up the camera roll automatically (with verified space cleanup). Version 0.5.1 is live for the family through TestFlight and Google Play internal testing; public store releases are under way.

Planned

Phase M, the map
  • A map

    A Places tab with a map beside the photos taken there. The map comes from OpenStreetMap and is kept and served by your own server, so no map company sees where you look. A heatmap comes later.

    Phase M

Screens

The lightbox, and the gallery on a phone

IllustrationOne photo with its details. This sample has no EXIF data, so the app shows its date, size and file; camera, lens and exposure appear when a photo has them.
IllustrationThe same gallery at phone width.

Roadmap

Developed, developing, unexposed

Phases 1–8 are done, and so are non-destructive editing (with Fix photo, perspective correction and bulk Fix photos), storage across drives (with on-demand drive and folder checks), dependencies and one-click Mac & Windows updates, Keep it safe, Find and tidy (with fuzzy and compound search), AI (with face training and profile avatars), server packages for macOS and Windows (with Settings → Public address for one-click Caddy HTTPS, custom public/local ports, DNS/port pre-flight checks, or Tailscale), a choice of where everything lives, moments, On this day memories and fullscreen slideshows, light mode, Live Photos and Android Motion Photos, duplicates and similar photo stacks, albums and shared albums, Add from Google Photos, and peer Connections with sealed offsite backups. Self-hosting with Docker or Podman, Caddy and Tailscale is included. The phone apps are built and shared with the family on TestFlight and Google Play internal testing; the newest builds are server 0.15.1 and phone apps 0.5.1, which do most of what the web app does and are easier on the battery. Public store releases, Phase 9, are under way. Built and waiting for the next release: moving PhotoBlad to another computer, exporting your library as plain files, phones that use the home Wi-Fi directly and hold several servers at once, and connections to other PhotoBlads at a public https name or on the home network. A map is planned next. Each phase gets its own plan before work starts. There are no target dates yet.

  1. Phase 1 Done

    Scaffolding

    The .NET 10 solution, the library’s data model, and the API contracts the web app shares with the phone apps to come.

  2. Phase 2 Done

    Storage and metadata

    EXIF for every supported format, HEIC included; WebP thumbnails; a SQLite database through EF Core.

  3. Phase 3 Done

    Indexer and API

    Scan jobs with exact progress, parallel processing and a single batched database writer, plus the photo and thumbnail API.

  4. Phase 3b Done

    Aspire services

    Microsoft Aspire runs the Server and a separate Indexer service, with health checks and a dashboard.

  5. Phase 4 Done

    Web gallery

    The Darkroom web gallery: a justified photo grid, a lightbox with each photo’s details, and scanning from the browser.

  6. Phase 5 Done

    Accounts and sign-in

    Accounts for an owner and family members, who share one library. Sign in with a password or a passkey.

  7. Phase 6 Done

    Backups, sharing, devices and video

    Backups from the browser, written once and private unless you share them; a session for every browser and phone; videos and Live Photos that play in the browser.

  8. Phase E Done

    Non-destructive editing

    Crop, straighten, light, colour and filters; corrected dates, places, captions and tags; video trims; versions edited elsewhere. All stored beside your photos, never in them.

  9. Phase S Done

    Storage across drives

    Backups, imported photos and versions kept in folders across several drives, with a drive set aside for anyone who wants one. Files move between drives only by a copy that’s checked first. Import copies a folder in and leaves it as it was.

  10. Phase 7 Done

    Self-hosting

    Docker and Podman Compose files that run PhotoBlad as two containers, with FFmpeg installed on the owner’s click, a health check and a database backup from the command line. Caddy serves it on your own domain with certificates that renew themselves, or Tailscale keeps it private to your devices. Built and tested with Podman; real Docker and a real Tailscale network are still to try.

  11. Phase 8 Done

    Mobile apps

    iOS and Android apps built with Avalonia: the whole library with a date scrubber, photos, videos and Live Photos, passkey sign-in, and the camera roll backed up automatically, over Wi-Fi by default. Shared with the family through TestFlight and Google Play internal testing; the public app stores come with Phase 9.

  12. Phase D Done

    Dependencies and updates

    The owner can have PhotoBlad download and check the FFmpeg it needs, from setup or Settings, and see when a new PhotoBlad is out. On a Mac or Windows PC installed from the package, Settings → Updates (or `photoblad update`) downloads, verifies and installs the new version and restarts PhotoBlad on the owner’s click.

  13. Phase K Done

    Keep it safe

    A copy of the database every night, and a command that puts one back. A Health page for the owner, with everyone’s phones. A nightly maintenance that checks the database, tidies caches and logs, reads originals again to catch a failing disk, and warns before a drive fills. HEIC decoded by a separate helper.

  14. Phase F Done

    Find and tidy

    Search with typo tolerance, compound queries (such as a person plus a place or AI scene) and place names kept on your own server; a jump bar through the years; selecting many photos to tag, re-date, hide, download or delete at once; and a trash that keeps what you delete for 30 days. Only PhotoBlad’s own copies are ever deleted: photos in your own folders can only be hidden.

  15. Phase A Done

    AI

    Search by what’s in a photo, faces and people with active-learning face training and profile avatars, descriptions and questions about a photo, and removing an object as a new version. Every model runs on computers you control, installed on the owner’s click: PhotoBlad’s own on your server, descriptions and questions in Ollama. People are the family’s, named by the owner, plus each person’s own, kept private; faces stay off until the owner turns them on.

  16. Phase T Done

    PhotoBlad on a Mac and Windows

    Native server packages for macOS (signed and notarized) and Windows (x64 and ARM64): no developer tools and no Docker, run as part of your account and started at login. A menu-bar or system-tray icon shows whether PhotoBlad is running and what needs you, updates install on a click, and Settings → Public address sets up Caddy with Let’s Encrypt HTTPS (including custom public/local ports and DNS/port pre-flight checks) or Tailscale from the browser.

  17. Phase W Done

    Where things live

    The owner decides where each part of PhotoBlad goes: the library’s folders (and what to do when one moves), the caches and add-ons on a drive of their own, how backups are filed (a folder per person, or per month), and a guided move of all of one drive’s backups to another. Settings → Storage lists every disk PhotoBlad writes to, with what it keeps there.

  18. Phase G Done

    Moments, memories and slideshow

    Drag the jump bar and see a month as its moments: the days, the place, the people and the photos that made it, plus an On this day memories strip for past years and a fullscreen slideshow mode on the web and on the phone. If the owner turns it on, an AI on a computer you control writes each moment a short title.

  19. Phase X Done

    Light mode, phone editing, Apple edits, Google Takeout and Google Photos Picker

    A light mode for the web app, next to the dark one. Editing on the phone: rotate, light and colour, filters, crop, removing an object, and a video’s trim. An iPhone can also back up the edited picture Apple Photos keeps as a version beside the original, anyone can pick photos straight from Google Photos via OAuth, and the owner can import a Google Takeout with its dates, places and captions.

  20. Phase L Done

    Live Photos and Motion Photos

    Android and Pixel Motion Photos read straight from the original file’s XMP, hover previews on the web grid, a sound switch in the viewer, and natural press-and-hold playback with haptics and Low Power Mode awareness on the phone.

  21. Phase D2 Done

    Duplicates and similar photo stacks

    Perceptual hashing and explainable rules that merge certain duplicate copies as versions without deleting a file, a review screen (`/duplicates` on the web and on the phone) for possible duplicates, and similar photo stacks (`/stacks`) that group burst frames and near-duplicates under a suggested best shot.

  22. Phase C Done

    Albums and Connections

    Albums shared with chosen family members or with another PhotoBlad server (browsed under Shared with me on both the web and the phone), plus pairing two PhotoBlad servers with six words so one hosts an offsite copy of the other’s backups — including a sealed encrypted mode protected by a 24-word recovery phrase.

  23. Phase P Done

    Fix photo, perspective and ProRAW

    One-click Fix photo (and bulk Fix photos for a selection) that finds a photographed print’s outline, straightens or rectifies keystoned perspective with four-corner handles, turns it upright and balances its colour inside the crop; plus Apple ProRAW and DNG (`.dng`) support.

  24. Phase 9 In progress

    Release automation

    Fastlane for TestFlight and Google Play testing, notarized macOS and self-contained Windows server packages with one-click updates, and server container images, released privately to family. The Mac and Windows packages (server 0.15.1) and the TestFlight and Google Play internal builds (phone apps 0.5.1) are live for the family; public store releases come next.

  25. Phase N In progress

    Moving, export, the home network and several servers

    Built, and coming in the next release. Move PhotoBlad to another computer by restoring a copy of its database there, keeping its accounts, edits and connections; export your library as plain files with sidecars, albums and checksums; phones that use the home Wi-Fi directly once they have checked it is the same server, and that hold several servers at once; and connections to other PhotoBlads at a public https name or on the home network, not only over Tailscale.

  26. Phase M Planned

    A map

    A Places tab with a map beside the photos, drawn from OpenStreetMap that your own server keeps and serves, so no map company sees where you look. A heatmap comes later.

Run it on your own machine

You need the .NET 10 SDK and access to the repository. FFmpeg is optional, for video posters and playback. The repository is private for now. [TBD: how to get access while the repository is private]

Run from source
git clone git@github.com:dustinblad/PhotoBlad.git
cd PhotoBlad
dotnet build PhotoBlad.sln
dotnet run --project src/PhotoBlad.AppHost --launch-profile http

Then open http://localhost:5180. To run it as containers on a server instead, see Self-hosting.