• 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
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
/
docs
/
plan.md
Code
/
docs
/
plan.md
Search
…
Viewing readonly version of main branch: v85
View latest version
plan.md

Photo Frame MVP Plan

Product Direction

Build a photo frame web app intended to run well on Val Town using a no-build Deno/Hono architecture.

The app should:

  • Let users pick multiple photos from their device
  • Show a simple setup screen with thumbnails
  • Allow removing photos before playback
  • Allow adding captions to photos
  • Start a fullscreen-style slideshow without depending on the Fullscreen API
  • Auto-advance through photos with configurable timing
  • Support manual next/previous navigation
  • Show captions while photos are presented
  • Auto-hide presentation controls when the mouse is idle
  • Persist collection metadata and slideshow settings

Architecture

Server

  • Deno runtime
  • Hono HTTP app
  • Hono JSX renders the HTML shell
  • Hono serves the client JavaScript and CSS files

Client

  • Plain browser JavaScript in static/app.js
  • Direct DOM rendering for setup and player modes
  • No Preact runtime
  • No Vite build step

Storage

  • IndexedDB stores image blobs and local collection metadata for reliable browser-side persistence
  • localStorage stores lightweight UI preferences only
  • A remote storage adapter will later support Val Town blob storage for cross-device persistence

Data Model

Collection

  • id
  • name
  • createdAt
  • updatedAt
  • settings
  • photoIds

Photo

  • id
  • name
  • caption
  • width
  • height
  • size
  • createdAt
  • file

Settings

  • intervalSeconds
  • fitMode
  • shuffle
  • loop
  • crossfade

MVP Scope

Phase 1

  • Hono app shell
  • Plain client-side JavaScript
  • Photo upload
  • Thumbnail preview list
  • Caption editing
  • Remove photo
  • Play mode
  • Auto-advance
  • Manual controls
  • Caption overlay
  • Crossfade transition option
  • Auto-hiding player controls
  • Local persistence in browser

Phase 2

  • Val Town blob upload adapter
  • Collection metadata sync
  • Resume saved collections across devices

Phase 3

  • Image compression on upload
  • Multiple collections
  • Shareable saved frame URLs
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.