WayLater App
A Time-Capsule App for Writing Letters to Your Future Self
Overview
WayLater is an iOS application that lets users write “time-capsule” letters to their future selves. Each letter is sealed until the chosen receive date, after which it becomes “unlocked.” Only then can you relive your own words from days, months, or years ago. By merging a two-tab interface with SwiftUI and local data storage, I built a unique journaling experience—where past meets future.
I developed every aspect of WayLater from scratch:
- Architecture & Code
Swift + SwiftUI structure, local JSON-based persistence, date-based “unlocking,” robust undo/redo logic in letter composition, and a built-in comments system. - UI/UX & Feature Design
A minimal two-tab layout:- Mailbox – The main “home” tab showing unopened letters, today’s written letters, and a random previously unlocked letter.
- Records – Lists all sent and received letters in a flexible timeline or grid.
Each letter can include a photo, text content, and even user comments.
- Project Management & Distribution
Single-handedly handled the entire product lifecycle: from concept, design prototypes, coding, QA testing, to final (and future) App Store distribution.
Despite typically having free time, I love building my own apps – this is my fun. Whether it’s coding, designing UIs, or doing routine tasks like updating icons and writing docs, I pour all my enthusiasm into it.
Download
User Stories & Demo
Story 1: The Reflective Dreamer
“I want a safe space to write letters for future me—so I can see how far I’ve grown or if I’ve stayed true to my dreams.”
WayLater saves each letter, ensuring it can’t be opened until the intended day arrives. Opening that letter later creates a powerfully reflective moment: a snapshot of your past hopes, fears, or daily musings.
Story 2: The Creative Time-Traveler
“I love the idea of time capsules. I want a quick, app-based method to record messages for birthdays or achievements—then open them months or years later.”
In WayLater, you pick the future date for each letter. The app locks it. On arrival day, you unlock the letter and read your own words. You can also attach photos and add comments for your future self to reread.
Watch WayLater in Action
Project Highlights
1. Locked Until the Future
- Receive Date Mechanic
Each letter is date-bound. Letters remain “locked” (unopened) until the current date >= the chosen receive date. - Visual Cues
An easy lock icon on letter items clarifies whether the letter is still sealed or unlocked.
2. Two-Tab Navigation
- Home (Mailbox) Tab
- Unopened Letters: those that have passed the receive date but haven’t been read yet.
- Letters Written Today: quickly recall what you just wrote.
- Random Unsealed Letter: get a surprise from your older, unlocked letters.
- Records Tab
- Sent but Not Received: letters still waiting for their future date.
- Received: all unlocked letters, grouped by year and month, newest to oldest.
3. Letter Composition & Undo/Redo
- Write New Letter (Sheet)
- Title, content, optional photo, plus a date picker for the future day.
- Simplistic undo/redo concept tracks changes so you can revert if you accidentally wipe out your text.
- Photo Attachments
- Users can optionally attach an image (like a photo-of-the-day or a memory visual) with each letter.
4. Comments & Reflection
- In-Letter Comments
Even after a letter is unlocked, you can add comments at any time. These are separate lines of text that appear beneath the letter content—like a personal forum between your past and present self. - Context Menus
You can press-and-hold on a comment to delete it. Confirm with a second prompt to avoid accidental removals.
5. Rich Writing Prompts
- Prompt Suggestions
A panel with random prompts (like “What’s a personal milestone you’re proud of?”), encouraging fresh topics for each letter. - Refresh
Tap a button for new sets of prompts if you want more inspiration.
Technical Breakdown
Core Language: Swift + SwiftUI
Data Modeling & Persistence
-
LetterModel-
receiveDatefor future unlocking -
isOpenedbool for “locked/unlocked” state - Optional
imageDatafor photo attachments -
commentsarray, each with content + date
-
- Local JSON Storage
- Save letters in
WayLaterLetters.jsonusing a custom@Publishedand file I/O approach. - Uses
Codablewith date encoding in.iso8601.
- Save letters in
App Architecture
-
LetterViewModel- Stores
[Letter]in a single stateful object. - Computed properties:
-
unopenedLetters,sentButNotReceived,receivedLetters, etc.
-
- Functions to
addLetter,openLetter,addComment, handleundo/redostates, etc.
- Stores
- Tabs & Navigation
- HomeView: sees “Mailbox” structure (unopened, random unlocked, written today).
- RecordsView: organizes letters into “unreceived” and “received” by year/month grouping.
UI/UX & Gestures
- Scrolling Grids
SwiftUILazyVGridfor letter items, enabling a neat 3-column layout. - Drag & Context Menus
- Letters remain unresponsive if locked. If unlocked, a tap triggers the detail sheet.
- Comments handle long-press context menus for deletion.
- Sheet Navigation
- WriteLetterView for new letters.
- LetterDetailView with a bottom
CommentInputBar.
Undo/Redo in Write Screen
- Capturing Edits
Each text or date change triggers apushUndoState(), storing title/content/date in memory. - Simplified Redo
If the user changes again, we nuke the redo stack—a typical text editor approach. - Revert
Potential usage of “pop” from undo stack to revert. The code structure is already there for expansions.
Project Outcomes
-
Deep Emotional Engagement
- Time-capsule letters evoke nostalgia and reflection, providing a unique journaling experience.
- Photos + delayed open date fosters a sense of curiosity and longing.
-
Minimized Overwhelm
- Minimal tabs, straightforward design, and per-letter comments keep everything uncluttered.
- The user experience is calm and intimate—like a personal mailbox for your future self.
-
Scalable for More Features
- Architecture easily supports expansions, e.g., push notifications on the letter’s arrival date, iCloud sync, or advanced search (by date or tag).
Personal Growth & Reflection
Self-Driven
- While others might watch Netflix or browse social media, I gain joy from building real apps. This project reaffirms my unstoppable enthusiasm for coding and product creation.
Technical & UI Mastery
- SwiftUI gestures, local data management, JSON-based archiving, photography attachments, plus a user-friendly approach to “unlocking” data. Each step refined my knowledge of iOS best practices.
One-Person Army
- Designing the UI, coding the logic, testing the date-bound system, creating marketing assets, and writing help docs—all done by me. This all-around approach taught me to be more resourceful, efficient, and creative.
Final Thoughts
WayLater stands out as a modern, personal time-capsule app, bridging your present and future in a single interface. By focusing on minimal friction—just write, pick a date, and let WayLater handle the rest—I created a tool that gently reminds us how precious our thoughts can be over time.
As a solo developer, I single-handedly delivered the code, UI design, feature scope, testing, and release. This demonstrates my multi-faceted skill set: from advanced SwiftUI techniques to thoughtful user journeys, I’m ready to join teams seeking a passionate iOS developer who can turn big ideas into elegant, fulfilling solutions.