Stage 4: Prototype — Design Thinking Notebook

Design Thinking Notebook · Stage 4 of 5

Prototype

01

App Flow Sketch

Core task

Daily check-in → choosing a healthier option from the menu (reaching for the app instead of the usual go-to).

Screen 1 Intro — Daily Check-In
User sees

The Companion greets the user: “Hi! How are you today?” A large check-in space fills the screen, with two buttons underneath — Share and Don’t Share.

User clicks / types

Taps Share and types (or speaks) how they’re feeling — or taps Don’t Share to skip straight ahead.

Function triggered

saveCheckIn() — logs today’s entry and mood, then routes to the Options / Home Page. Don’t Share skips saving and routes straight there, so the check-in never blocks access.

Screen 2 Options / Home Page — The Menu (hub)
User sees

The Companion header up top, then the menu of choices: Things to Do Nearby (Local Map), Mind / Body, Peer Forum, and Knowledge Hub. This page is the hub every section branches from.

User clicks / types

Taps one section — e.g., Mind / Body (or Peer Forum, or Knowledge Hub).

Function triggered

openSection(name) — loads the chosen section page. Every menu item routes the same way, and the ☰ menu always returns here.

Screen 3 Mind / Body Page
User sees

The Companion header, a short prompt, a preview image, and a list of guided options — Breath Work, Yoga, and Meditation — each with a › to open it.

User clicks / types

Taps Breath Work.

Function triggered

openExercise("breathwork") — opens the guided breathing player. When it ends, the user returns here or back to the menu.

Screen 4 Peer Forum — Forums & Resources
User sees

The Companion header, a grid of Chat Rooms (Living Room and others for deeper chats), and a Peer Resources link out to help outlets.

User clicks / types

Taps a chat room — e.g., Living Room.

Function triggered

openRoom("living-room") — opens the anonymous room so the user isn’t alone in the moment. Peer Resources routes out to support outlets.

Screen 5 Knowledge Hub
User sees

The Companion header and a list of learning material: Videos, Readings, Links, and References — facts about habits, dopamine, and mental health (Naked Mind–inspired).

User clicks / types

Taps an item (e.g., Videos), then taps “Info” on a specific entry.

Function triggered

openResource(id) — opens the selected resource; the resulting screen updates with that content. The ☰ menu returns to the Options / Home Page.

Flow checks — going wrong / dead ends / necessary steps

• When things go wrong: if a check-in signals real distress, the Companion steps back from the menu and surfaces human help (a trusted contact or 988) instead of an activity. The app knows its limits. • Dead ends: every page keeps the Companion and the ☰ menu, so the user can always return to the Options / Home Page. No screen traps them. • Necessary steps: Don’t Share lets users reach the menu without checking in first, so the flow never forces a step. Section pages stay shallow — one tap in, one tap back.

Sketched screens

Hand-drawn low-fidelity screens for the flow above, in order: Intro → Options/Home → Mind/Body → Peer Forum → Knowledge Hub. Two flow diagrams (with the “click → function” arrows) follow at the end. Note: the Companion is present on every screen — it anchors the bottom of each page and ties the whole app together.

Home Page and Options Page sketched side by side
Home / Intro & Options page (overview)
Home Page — Hi how are you today, Share / Don't Share
Screen 1 · Intro / check-in
Options Page — Things to Do Nearby, Peer Forum, Mind/Body
Screen 2 · Options / Home
Mind/Body Page — Breath Work, Yoga, Meditation
Screen 3 · Mind / Body
Peer Forums and Resources Page — chat rooms grid
Screen 4 · Peer Forum
Flow diagram — Home Dashboard, Knowledge Hub, resource list with click annotations
Flow diagram · check-in → Knowledge Hub (Screen 5) & resources
Flow diagram — Home Dashboard, activity list, location radius with click Save annotations
Flow diagram · check-in → activity & nearby (location) flow
02

Low-Fidelity Prototype

Tools & method used

Paper, Figma, Claude

Notes & approach

Focus on layout of key elements like navigation menus, core content, and action buttons. Do not worry about colors or making it look pretty.

Wireframe Screens · 5 main screens

Intro / daily check-in — the Companion’s greeting with Share and Don’t Share buttons on a deliberately bare screen (no header, no menu).

Intro screen wireframe — Daily Check-In
Screen 1 · Intro — Daily Check-In
Screen notes

The location feature works like Waze — constantly getting updated by people adding real-time events (e.g., someone walking by the park sees a free concert and adds it).

Home Page wireframe — Options / Menu hub
Screen 2 · Home Page — Options / Menu (hub)
Screen notes

Home / Options hub — the Companion header plus the menu every section branches from: Things to Do Nearby (Local Map), Mind/Body, Peer Forum, and Knowledge Hub.

Mind/Body wireframe — Breath Work, Yoga, Meditation
Screen 3 · Mind / Body
Screen notes

Mind / Body — the Companion header, a short prompt, and a list of guided options (Breath Work, Yoga, Meditation, and more), each opening its own player.

Peer Forum wireframe — chat rooms and resources
Screen 4 · Peer Forum
Screen notes

Peer Forum — the Companion header, a Friendly Postings feed, a grid of anonymous chat rooms (Peer Rooms), and Camp Fire for deeper support, plus a Peer Resources link.

Knowledge Hub wireframe — learning resources
Screen 5 · Knowledge Hub
Screen notes

Knowledge Hub — the Companion header and a board of learning resources (videos, readings, links, and references on habits, dopamine, and mental health), Naked Mind–inspired.

Reflection — what did you learn from sketching?

We realized we needed a dedicated companion screen since that was the heart of our idea.

03

Core Function Draft & Function Mapping

Seven lo-fi prototype screens mapping the complete user flow. The Companion anchors every screen; the ☰ menu always returns to the Home/Dashboard hub.

Screen 1 · Intro / Check-In

Deliberately bare: NO header, NO menu, NO title, NO quote, NO Companion bar. The whole screen IS the Companion greeting.

How are you doing?




Function mapping:

  • saveCheckIn() — logs entry + mood, routes to Companion Chat (Screen 7)
  • openSection('home') — skips to Home/Dashboard (Screen 2)
  • Distress path: If check-in signals real distress, Companion surfaces 988/human help instead of activities.

Screen 2 · Home / Dashboard (the HUB)

Local Happenings is the hero; map in the middle; three section buttons below; Companion bar at the bottom.

  [APP TITLE — to be added]

[REAL QUOTE — to be added, with attribution]


Local Happenings

Share what's happening near you ★

MAP
   |      |        |
===+======+===[pin]===
   |      |        |
---+--[pin]--+--------
   |      |        |
   |   [pin]       |
              






Function mapping:

  • openSection('home') — returns to Home (self-referential via ☰)
  • openSection('local') — routes to Local Happenings (Screen 3)
  • openSection('mindbody') — routes to Mind/Body (Screen 4)
  • openSection('forum') — routes to Peer Forum (Screen 5)
  • openSection('knowledge') — routes to Knowledge Hub (Screen 6)
  • openSection('companion') — opens Companion Chat (Screen 7)

Screen 3 · Local Happenings (Nearby)

Waze-style, community-updated feed: location control, map, category filters, [+ Add Something Nearby], list of nearby happenings.

  Local Happenings

[REAL QUOTE — to be added, with attribution]


Area: ____________________

MAP
   |      |        |
===+==[pin]==+========
   |      |        |
---+------+--[pin]---
   |   [pin]       |
              




Nearby right now:

  • ________________ — ______
  • ________________ — ______
  • ________________ — ______
  • ________________ — ______

Function mapping:

  • openSection('home') — returns to Home via ☰
  • setLocation() — sets location/area, refreshes feed
  • openHappening(id) — opens event details
  • addHappening() — opens form to add a nearby event
  • openSection('companion') — opens Companion Chat

Screen 4 · Mind / Body

A LONGER scrollable list of guided options, room to add more. Each row opens its own player.

  Mind / Body

[REAL QUOTE — to be added, with attribution]


Pick something to ride out the wave:
















Function mapping:

  • openSection('home') — returns to Home via ☰
  • openExercise(id) — opens guided exercise player; returns to this screen on completion
  • openSection('companion') — opens Companion Chat

Screen 5 · Peer Forum

Three stacked parts: Friendly Postings (hero feed), Peer Rooms (grid of anonymous rooms), Camp Fire (deeper support).

  Peer Forum

[REAL QUOTE — to be added, with attribution]


Friendly Postings
  • ________________________
  • ________________________
  • ________________________

Peer Rooms

Camp Fire

Function mapping:

  • openSection('home') — returns to Home via ☰
  • createPost() — opens post creation form
  • openPost(id) — opens full post
  • openRoom(id) — opens anonymous chat room
  • openCampfire() — opens Camp Fire deeper-support space
  • openSection('companion') — opens Companion Chat

Screen 6 · Knowledge Hub

Bulletin board of resources: a Share-here action + a flex-wrap board of tappable resource cards. Distinct from Local Happenings: NO map, NO location, NO category filters.

  Knowledge Hub

[REAL QUOTE — to be added, with attribution]




Function mapping:

  • openSection('home') — returns to Home via ☰
  • shareResource() — opens form to share a resource
  • openResource(id) — opens selected resource
  • openSection('companion') — opens Companion Chat

Screen 7 · Companion Chat

Only reached via [Share] on the Intro. Message-box screen. Menu returns to Home so it's not a dead end.

  Companion

[REAL QUOTE — to be added, with attribution]


Companion: ____________________________

You: ____________________________

Companion: ____________________________


Function mapping:

  • openSection('home') — returns to Home via ☰
  • saveCheckIn() — sends message, continues conversation
  • Distress path: If conversation signals real distress, Companion surfaces 988/human help instead of activities.
04

JavaScript Code Generation

Prompt used

I am building a web prototype called Optional for anyone who reaches for something to cope with stress, loneliness, or a hard day — including people who don’t think they have a problem — to solve the problem that people on autopilot reach for a vice and need to see their other options in that moment. I need a JavaScript function that takes the feeling a user picks during their daily check-in and shows a longer menu of other options matched to that feeling (for example, breath work, a quick walk, something nearby, or a word of encouragement). Please provide the HTML setup and the JavaScript code. Note: my Web Studio already provides the <html> and <head> tags, so give only the body-level HTML, not a full boilerplate page. You must include detailed, step-by-step comments in the JavaScript explaining what each line does so I can learn from it and debug it if necessary.

HTML setup — body-level only; the Web Studio adds <html> / <head>

<h2>How are you feeling?</h2>
<!-- Each button sends its feeling to showOptions(). -->
<button onclick="showOptions('stressed')">Stressed</button>
<button onclick="showOptions('lonely')">Lonely</button>
<button onclick="showOptions('restless')">Restless</button>
<button onclick="showOptions('good')">Good, just unwinding</button>
<!-- The matching options get written into this empty box. -->
<div id="menu"></div>

JavaScript function — the commented code the AI provided

// A menu of options for each feeling (longer lists, so there's plenty to choose from).
const optionsByFeeling = {
  stressed: ["2 minutes of breath work", "A short walk outside", "See what's happening nearby",
             "A body scan", "A word of encouragement", "Drop into a peer room"],
  lonely:   ["Drop into a peer room", "Read a word of encouragement", "Find a nearby event",
             "Post in Friendly Postings", "Enter Camp Fire for deeper support"],
  restless: ["A quick 5-minute move", "A grounding exercise", "Step outside for fresh air",
             "Stretch it out", "See what's happening nearby"],
  good:     ["Save what's working today", "Check out something nearby",
             "Share encouragement in the forum", "Try a new exercise"]
};
// showOptions() runs when the user taps a feeling button.
function showOptions(feeling) {
  // 1. Find the box on the page where the menu will go.
  const menuBox = document.getElementById("menu");
  // 2. Look up the list of options that matches the chosen feeling.
  const options = optionsByFeeling[feeling];
  // 3. Start the text with a gentle, no-pressure heading.
  let html = "<p>No rules — here are some of the things also available to you right now:</p><ul>";
  // 4. Add each option as a list item.
  for (let i = 0; i < options.length; i++) {
    html += "<li>" + options[i] + "</li>";
  }
  // 5. Close the list.
  html += "</ul>";
  // 6. Show the finished menu.
  menuBox.innerHTML = html;
}

Live preview — tap a feeling and the options appear below

How are you feeling?

Did it work? — first try or troubleshooting

It worked the first time when we tried it in a separate test, but we had some minor trouble getting it to work when we applied it to this notebook — the buttons didn’t respond at first. We troubleshooted and found the function needed to be in a live script tag to actually run. Once we added that, tapping a feeling showed the options.

05

Summary of Work & Iteration

A brief summary of what we built, the challenges we faced, and how we iterated — plus a link to the working project in the Codecraft Works Web Studio.

Web Studio project link

Our working prototype, embedded live below — tap through it right here, or open it in a new tab.

What we built

Optional opens with a 7-second splash page that introduces what the app is about. The second screen is a check-in that asks users how they're doing in the moment, giving them the option to share or not share. If they choose to share, they're taken to the companion screen where they can interact with a friendly bot; if they choose not to share, they're taken to the home page. Users can return to the home page from the hamburger menu available at the top of each main page, or navigate back and forth using the arrows at the top of the screen. The home page features a hub for what's going on nearby, along with links to the other main pages: mind/body, chat rooms, and the knowledge board. In total, the prototype has 7 screens with working navigation between them.

Challenges, learnings & iteration

One challenge we faced was thinking as a team and merging our different ideas and styles. It took us time to agree on a name and the overall look of the app. We overcame this by listening to each other, narrowing down our ideas, and finding common ground. We also found it challenging to work with AI, which felt like working with another team member. We learned that we needed to be very specific about how we expressed our vision to get the results we wanted. Using the clone feature, we experimented with different aesthetics across the pages and with different logo designs, which let us try out ideas without risking the version that was already working.