Our work
Memory Sharing App

Lifestory

Now GetMemoriz5,000+ downloadsView on Google Play

Memories, captured and shared as they happen — not filed away.

  • Flutter
  • Python / FastAPI
  • PostgreSQL (self-hosted)

Overview

Lifestory is a mobile app for capturing and sharing memories the way they actually happen — not as a flat camera roll, but as living timelines people build together. A trip, an engagement, a move to a new city: each becomes its own timeline that friends and family can be invited into, adding their own moments, voice notes, and photos to the same shared thread over time.

We built the Flutter app and FastAPI backend for Lifestory. The core design challenge was making capture effortless — open app, shoot, done — while making the organizing layer of timelines, albums, and collaborators feel meaningful rather than like folder management.

What we built

The complete cross-platform app

The full Flutter mobile app, backed by a Python FastAPI service.

  • Onboarding & auth

    Account creation and email login.

  • Feed

    A scrollable stream of moments from followed and personal timelines, supporting private posts, voice-note ("Story time") entries, likes, and rich photo posts.

  • Capture

    A dedicated camera flow for photos and video, built directly into the main navigation rather than buried in a menu.

  • Timelines

    Users create named timelines — a trip, a relationship, a milestone — add moments over time, and track elapsed time since creation.

  • Collaborative sharing

    Timelines can be shared via a unique link or directly to WhatsApp, Facebook, Twitter, email, and more, letting invited people contribute their own moments.

  • Profile & settings

    Theme control, account management, feedback, and app sharing.

The journey

From first launch to a shared memory

Step 01

Getting started

Onboarding sets expectations early: capture, organize, and relive the memories that matter.

Step 02

Signing in

A focused email login gets returning users back into their timelines quickly.

Step 03

The feed

One feed supports mixed content — voice notes, private posts, and rich photo moments — without losing coherence.

Step 04

Capture, ready

Capture is one tap from anywhere in the app, built into the main navigation rather than buried in a menu.

Step 05

Capture, recording

Photos and video share one fast flow instead of asking users to choose a mode first.

Step 06

Timelines

Each timeline is a living thread built around an experience or milestone, not a static album.

Step 07

Inside a timeline

Elapsed time gives each story continuity while collaborators add moments to the same shared thread.

Step 08

Timeline created

Creation flows directly into sharing — once a timeline exists, it is ready to open up to others.

Step 09

Inviting collaborators

A unique link and native share sheet make inviting people to contribute their own moments immediate.

Step 10

Profile & settings

Theme, account management, feedback, and app sharing stay accessible without competing with capture.

The harder parts

Where the engineering really lived

01

Real-time collaborative timelines

Once a timeline can be shared and added to by multiple people, the app has to keep everyone's view consistent — new moments from any contributor need to show up reliably for everyone else on that timeline.

02

Two capture modes, one flow

Photos and video capture needed to live in a single, fast camera screen without forcing users to pick a mode up front — friction at the point of capture is the fastest way to lose a memory-sharing app's core habit.

03

Mixed content types in one feed

Voice notes, private posts, and photo moments all needed a consistent visual language in the feed so the product didn't feel like three different apps stitched together.

04

Reliable media uploads

Photos, video, and voice notes are the product. Uploads had to survive flaky networks, resume cleanly when a connection dropped, and surface progress so users knew a moment was still on its way — not lost.

05

Background upload tasks

Capture can't block the rest of the app. Uploads run as background tasks so someone can keep browsing timelines, start another capture, or leave the screen while media continues transferring without stalling the UI.

06

Fast media in the feed

Once uploaded, media still has to appear quickly. That meant thoughtful caching, compressed previews where full files weren't needed yet, and loading states that felt intentional instead of blank or janky.

07

Infinite moment loading

Timelines grow. The feed and timeline views paginate moments infinitely as the user scrolls — without reloading the whole list, losing scroll position, or making every new page feel like a full refetch.

08

Performance under load

Infinite scroll and heavy media together are an easy way to tank a phone. We kept lists lean, recycled off-screen content carefully, and watched memory and frame time so long timelines stayed usable instead of gradually degrading.

Outcome

Launched · Live as GetMemoriz

The Lifestory app we built launched to both the App Store and Google Play, reaching 5,000+ downloads, and continues today under its new name, GetMemoriz.

Open Memoriz on Google Play

Readyto startthe project?