Chapter 9 (Bonus): Having Fun
You already have a solid app. This optional chapter adds personality — a home screen that grows with every memory, and a quicker way to capture thoughts without leaving context.
This chapter is a bonus. If you are eager to wrap your web app in Capacitor, you can skip ahead to Part 5. Come back anytime when you want extra polish.
The two prompts below are independent features, but they work best together: the new Home tab is where the tree and daily CTA live, while the slide-up entry sheet and FAB make adding entries feel faster on a phone.
What You'll Build
- Rename the tab that shows your journal list to Feed, and add a dedicated Home tab
- A minimal black-and-white SVG tree with a slow sway animation and multiple branches
- Leaf nodes that appear (or accumulate) on branches as entries are added — visual feedback for each new memory
- A daily CTA under the tree when the user has not journaled today, or a pill such as "Today's memory logged" when they have
- Create entry as a modal / bottom sheet that slides up instead of a full-page route
- A floating action button on the right, just above the bottom tab bar, for quick new entries
What You'll Learn
- How to evolve navigation when you split "feed" from "home"
- SVG animation basics (sway, subtle growth) in React
- Deriving UI state from "has entry today?" using your existing entry data
- Sheet / modal patterns that preserve form logic while changing presentation
- FAB placement with safe spacing above tab bars
Step 1: Home Tab, Tree, and Daily CTA
The feed stays the scrollable list of posts. Home becomes a calm landing screen centered on the tree metaphor.
$ claude "Refine navigation and the home experience. Rename the tab that currently shows t..."After this step, run the app and confirm: Feed shows your list, Home shows the tree, and creating a new entry adds a leaf. Toggle the CTA vs. pill by whether you have posted today.
Step 2: Slide-Up Entry Modal and Floating Add Button
Full-page navigation for every quick note breaks flow. A sheet keeps users oriented.
$ claude "Make creating a journal entry use a modal or bottom sheet that slides up from th..."Verify: tapping the FAB opens the sheet; submitting saves and closes; the Home CTA opens the same sheet; you no longer bounce to a standalone create page unless you intentionally keep a deep link.
Step 3: Commit Your Progress (Optional)
git add .
git commit -m "Bonus: Home tree, Feed tab rename, slide-up entry sheet, FAB"
git push
Checkpoint
Your app should now:
- The journal list lives under a tab labeled Feed
- A Home tab shows a swaying black-and-white tree with leaves tied to new entries
- No entry today shows an add-entry CTA; entry today shows a logged pill
- New entries use a slide-up sheet instead of a full-page create flow
- A FAB sits above the bottom tab bar for quick adds
Part 4 Complete!
You have built a full-featured web application — with an optional flourish on top. Here is everything across Part 4:
| Feature | Chapter |
|---|---|
| Mobile-first app shell with header and tab navigation | Chapter 4 |
| CRUD for text and photo entries with Firestore and image compression | Chapter 5 |
| User authentication with Firebase Auth | Chapter 6 |
| Polish: skeleton loading, empty states, toasts, onboarding | Chapter 7 |
| Streak counter, fire animation, calendar modal, and profile stats | Chapter 8 |
| (Bonus) Home tree, Feed rename, slide-up entry, FAB | Chapter 9 |
Your web app is feature-complete (and a little delightful). In Part 5, we wrap it in Capacitor for the iOS Simulator.
Follow @parvsondhi for build threads, tips, and updates on this tutorial.