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

ishbrzero

PhotoFrame

Public
Like
PhotoFrame
Home
Code
7
docs
1
src
2
static
2
README.md
deno.json
deno.lock
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
…
Viewing readonly version of main branch: v82
View latest version
README.md

Photo Frame

A no-build photo frame web app built for a Val Town/Deno deployment model.

The app uses Hono for the HTTP server, Hono JSX for the HTML shell, 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

docs/ plan.md static/ app.js styles.css deno.json main.tsx

Getting Started

Check the app:

deno task check

Start the development server:

deno task dev

Start the server without watch mode:

deno task start

Then open:

http://localhost:8000

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.

Product Direction

The target product shape is:

  • Val Town-friendly no-build app structure
  • local-first slideshow setup
  • simple fullscreen-style playback
  • optional remote persistence via Val Town blob storage
  • later support for cross-device saved collections

The current planning document lives in docs/plan.md.

Notes

  • There is no Vite build step.
  • There is no Preact runtime.
  • The browser app logic lives in static/app.js.
  • The server entrypoint is main.tsx.
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.