• Blog
  • Docs
  • Pricing
  • We’re hiring!
Log inSign up
ishbrzero

ishbrzero

PhotoFrame

Public
Like
PhotoFrame
Home
Code
6
static
2
views
1
README.md
auth.ts
deno.json
H
main.tsx
Connections
Environment variables
3
Branches
1
Pull requests
Remixes
History
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
Sign up now
Code
/
README.md
Code
/
README.md
Search
…
README.md

Photo Frame

A photo frame web app built for Val Town.

The app uses Hono for the HTTP server, JSX for the views, and a plain browser JavaScript file for client-side interactivity.

The current implementation supports:

  • selecting multiple photos from the local device
  • previewing them in a setup screen
  • naming the current collection
  • removing photos from the collection
  • adding a caption to each photo
  • saving collection data and image files locally in the browser
  • starting a fullscreen-style slideshow player
  • showing captions over presented photos
  • auto-hiding slideshow controls when the mouse is idle
  • changing slideshow settings like interval, fit mode, shuffle, loop, and crossfade

Status

This project is in active MVP development.

What works now:

  • Deno/Hono server entrypoint
  • local upload flow
  • local collection persistence with IndexedDB
  • lightweight settings persistence with localStorage
  • slideshow playback with next, previous, and exit controls
  • photo captions
  • optional crossfade transitions

What is planned next:

  • Val Town blob storage integration
  • remote collection metadata persistence
  • image compression/resizing on upload
  • support for multiple collections

Tech Stack

  • Deno
  • Hono
  • Hono JSX for the server-rendered page shell
  • Plain browser JavaScript for client-side behavior
  • CSS served directly by Hono
  • IndexedDB for local photo storage
  • localStorage for simple UI preferences

Project Structure

views/ index.html static/ app.js styles.css deno.json main.tsx README.md

Current Storage Model

The app intentionally does not store image data in localStorage. That storage is too small for real photo usage.

Instead:

  • image files are stored in IndexedDB
  • collection metadata is stored in IndexedDB
  • slideshow preferences are stored in localStorage

The remote Val Town blob persistence layer has not been wired yet.

FeaturesVersion controlCode intelligenceCLIMCP
Use cases
TeamsAI agentsSlackGTM
DocsShowcaseTemplatesNewestTrendingAPI examplesNPM packages
AboutAlternativesPricingBlogNewsletterCareers
We’re hiring!
Brandhi@val.townStatus
X (Twitter)
Discord community
GitHub discussions
YouTube channel
Bluesky
Open Source Pledge
Terms of usePrivacy policyAbuse contact
© 2026 Val Town, Inc.