Adding photos
Photos are how ItemTrack becomes useful. Without a photo, an inventory entry is just a name. With a photo, you can identify the thing without opening anything.
Where photos can live
- Items. Up to several photos per item, depending on your plan. Item photos are the main case.
- Boxes. A box can have a "what does this box look like" photo. Most users skip this — the items inside are what matters.
- Closets and locations — not yet supported. (Coming in a future update.)
Two upload buttons
When you go to add a photo, there are two buttons side by side:
- 📷 Take Photo — opens the camera app directly so you can take a fresh photo. Mobile only.
- 📁 Choose Files — opens the gallery / file picker. Mobile and desktop.
On desktop, the Take Photo button is hidden — the OS doesn't have a sensible camera capture for desktop browsers, and a button that does nothing useful is worse than no button at all.
See Take Photo vs Choose Files for more on this distinction.
File formats
JPEG, PNG, WebP, or HEIC. Up to 12 MB per photo. The file must be a real image — we sniff the actual file bytes (magic bytes), not just the extension, so you can't upload a .jpg that's secretly a video.
HEIC support (iPhone default): as of the v13.6 update, HEIC photos upload directly without conversion. The server decodes them and re-encodes to JPEG for browser compatibility. Earlier you needed to either change Settings → Camera → Formats to "Most Compatible" or use the camera-roll picker (which auto-converts on iOS); both still work but neither is necessary anymore.
If you do see an HEIC error message, it means the server doesn't have an HEIC decoder available in this environment. The fallback message in the upload error explains the workaround (camera-roll picker). This is rare — the standard ItemTrack server has HEIC support.
Storage and bandwidth
Each photo you upload produces three sizes on the server:
- Original — your photo, downscaled to ≤2400 pixels on the long edge. Detailed enough to read serial numbers and labels but a fraction of the original camera bytes.
- Medium (800px) — used for single-photo views, lightboxes, list-mode thumbnails.
- Thumbnail (240px) — used for grid tiles on box and item lists.
Pages serve the right size for the context, so when you're scrolling a list of 40 boxes you're loading 40 × ~25 KB thumbnails, not 40 × 4 MB originals. Mobile data and battery thank you.
EXIF stripping: photos taken on phones often include GPS coordinates in their metadata. We strip all EXIF data on upload so your home address isn't embedded in your couch photo. Camera-orientation data is honoured (so portrait shots stay portrait), then deleted.
Where photos appear
- Item view page. A gallery of all the item's photos. Click any thumbnail to open it fullscreen in a lightbox — click the backdrop, press Escape, or click the × in the corner to close.
- Item card on lists (
/items/). The first/primary photo as a thumbnail. - Box detail page. The Photos card was simplified — the upload form is collapsed behind a "+ Photo" button so it doesn't clutter the page. Click it to upload.
- Box list page (
/boxes/). The little 40×40 icon next to each box's name is now a thumbnail collage: up to 4 photos of items inside the box, arranged in a small grid. Boxes without items, or with items that have no photos, still show the green box icon as a fallback. The collage gives you visual recognition of which box is which at a glance. - Share view (
/s.php?...). Public photo gallery — photos ARE included in shares. - Marketplace listings. Public photos shown to potential buyers.
If you want a photo to not be shared, don't upload it. There's no per-photo privacy flag right now.
Viewing a photo full-size
Click any photo thumbnail on an item or share page. A fullscreen lightbox opens with the photo as large as your screen allows. To close:
- Click anywhere on the dimmed backdrop around the photo.
- Press Escape on your keyboard.
- Click the × button in the top-right corner.
The lightbox loads the same image file as the thumbnail (no separate "large" version yet), so opening it is instant on a fresh page load and uses zero extra bandwidth — your browser already had the file cached.
The primary / cover photo
The first photo you upload becomes the primary. It's what shows in lists and as the share preview. To change which photo is primary: open the item view page, hover/tap a photo, click "Set as primary" (if available — currently desktop-only; mobile coming soon).
Photo storage
Photos are stored on the server, encrypted at rest at the file-system level (TransIP shared hosting handles encryption). Each photo gets a unique ID; the URL to fetch one is /photos/serve.php?id=... and requires authentication or a valid share token.
We do NOT use a third-party CDN. If your server is offline, photos don't load. (We're considering CloudFront or similar for v15.)
Deleting a photo
Open the item view page. Click the small × on the photo you want to remove. Confirm. The photo is soft-deleted (marked deleted_at = NOW()) and disappears from the UI immediately. It stays in the database for 30 days in case you ask us to restore it via support, then it's permanently purged.