← All templates

Photo Sharing

Content & Social · React + Node (Express) · 17 @molecule/* packages

Flickr-like photo community with albums, galleries, and EXIF — with built-in Stripe-backed subscription tiers

Open in Molecule

What is inside

  • auth
  • albums
  • galleries
  • exif
  • image-upload
  • tags
  • comments
  • favorites
  • subscriptions

Screens (15)

  • Landing /
  • Login /login
  • Signup /signup
  • ForgotPassword /forgot-password
  • ResetPassword /reset-password
  • Explore /explore (signed in)
  • PhotoDetail /photos/:id (signed in)
  • Albums /albums (signed in)
  • MyPhotos /my-photos (signed in)
  • Upload /upload (signed in)
  • Favorites /favorites (signed in)
  • Settings /settings (signed in)
  • AlbumDetail /albums/:id (signed in)
  • Profile /u/:handle (signed in)
  • Galleries /galleries (signed in)

Data model (13 tables)

  • album_photos — id, album_id, photo_id, sort_order, created_at
  • albums — id, owner_id, title, description, cover_photo_id, photo_count, visibility, created_at, …
  • comments — id, resourceType, resourceId, userId, parentId, body, editedAt, createdAt, …
  • devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
  • favorites — id, user_id, photo_id, created_at
  • follows — id, followerId, targetType, targetId, createdAt, updatedAt
  • galleries — id, owner_id, title, description, cover_photo_id, visibility, created_at, updated_at, …
  • gallery_photos — id, gallery_id, photo_id, sort_order, created_at
  • photos — id, owner_id, album_id, title, description, caption, original_url, large_url, …
  • payments — id, createdAt, updatedAt, userId, transactionId, productId, platformKey, data, …
  • reactions — id, resourceType, resourceId, userId, type, createdAt, updatedAt
  • resource_tags — id, tagId, resourceType, resourceId, createdAt
  • tags — id, name, slug, color, description, createdAt, updatedAt

API (5 handlers)

  • albums api/src/handlers/albums.ts
  • galleries api/src/handlers/galleries.ts
  • photos api/src/handlers/photos.ts
  • profiles api/src/handlers/profiles.ts
  • uploads api/src/handlers/uploads.ts

Subscription tiers

free / pro / team — gated by: maxAlbums, maxPhotos, advancedFeatures, canExport, retentionDays

Built from 17 @molecule/* packages

Browse all @molecule/* packages →

Required secrets

  • DATABASE_URL PostgreSQL connection string
  • S3_BUCKET S3 bucket for photo uploads
  • S3_ACCESS_KEY_ID S3 access key
  • S3_SECRET_ACCESS_KEY S3 secret key

The @molecule/* packages are Apache-2.0. The app you build from this template is yours to export and self-host. Licensing