Back to projects

Case Study

Own product

MemoryLog

A private memory-sharing platform that connects mobile, web, admin, and API workflows through shared TypeScript contracts for photos, records, and albums.

A product we planned, launched, and operate ourselves. Read these as evidence of technical range and operating practice.

Project Overview

MemoryLog is an in-development private platform for storing and sharing photos, records, and albums with connected members. Expo Router clients for iOS, Android, and web are connected to NestJS, Prisma, and PostgreSQL services through shared Zod schemas and API types. The product includes relationship and album permissions, media-library flows, drafts and notifications, and separate web and admin operations paths.

Product screens

Home for exploring albums shared with connected members
Home for exploring albums shared with connected members
Home logbook for quickly reviewing record status by day
Home logbook for quickly reviewing record status by day
Album list with descriptions, members, record counts, and sorting
Album list with descriptions, members, record counts, and sorting
Media library for exploring a travel album in a photo grid
Media library for exploring a travel album in a photo grid
Multi-select screen for preparing album moves, downloads, and deletions
Multi-select screen for preparing album moves, downloads, and deletions
Private memory record detail combining photo, date, location, and story
Private memory record detail combining photo, date, location, and story
Editor for composing and publishing records with formatted text and photos
Editor for composing and publishing records with formatted text and photos
Mobile photo gallery for browsing images and attaching them to records
Mobile photo gallery for browsing images and attaching them to records

Key Challenges

  • Applying relationship, album, and record permissions consistently across private sharing flows
  • Keeping mobile, web, admin, and API changes aligned through shared Zod schemas and API types
  • Protecting media upload, download, recovery, and storage-accounting paths
  • Separating deployment and external-provider checks from code-level verification

Key Outcomes

  • Built a TypeScript workspace spanning mobile, web, admin, API, and shared contracts
  • Implemented private record, album, relationship, draft, notification, storage, and payment-domain flows
  • Defined recoverable trash handling and protected media-read paths for stored assets
  • Documented verification boundaries across tests, type checks, and PostgreSQL/GCS integrations

Technologies

Expo RouterReact NativeTypeScriptNestJSPrismaPostgreSQLZodGoogle Cloud RunCloud Storage