AMDE 355 · Advanced Web Design · Week 09
User Flows, Navigation & Interaction Design.
A good interface helps people understand where they are, what they can do, and what will happen next. This week, you’ll map a user journey, organize navigation, design interaction states, and test whether the interface supports a clear path toward a goal.
01 / What is a user flow?
A user flow is a sequence of steps a person takes to accomplish a goal in a digital product. It describes the route through screens, decisions, and actions—not just how the screens look individually.
Start with a goal
What is the person trying to accomplish? Examples include finding a project, booking an appointment, or submitting a form.
Map the steps
Show the screens or states the person encounters, the choices they make, and the actions that move them forward.
Check the outcome
Make sure the flow ends with a clear result, confirmation, or next step—and provides a way to recover from errors.
Example — a portfolio visitor wants to contact the designer
Home page → Projects → Project detail → Contact → Confirmation
At each step, ask: What does the visitor know? What can they do? What should the interface communicate next?
02 / Map the flow before designing the screens
Start with plain-language steps. You do not need a polished diagram to identify missing steps or confusing decisions. A simple flow is easier to discuss and revise early.
GOAL: Find a project and contact the designer
[Home]
|
v
[Browse projects]
|
v
[Open project detail]
|
v
[Select Contact]
|
v
[Complete contact form]
|
v
[Confirmation message]This flow is a starting point, not the only possible solution. A visitor might contact the designer directly from the home page, or use a persistent navigation link. Compare alternatives and decide which best serves the audience and task.
Add a decision and recovery path
[Contact form]
|
v
{Required fields complete?}
| Yes | No
v v
[Submit form] [Show helpful error]
| |
v v
[Confirmation] [Return to missing field]03 / Information architecture: organize before decorating
Information architecture (IA) is the way content and features are organized, labeled, and connected. Good IA helps people predict where information lives and understand how sections relate to one another.
Organization
Group related content in a way that makes sense to the intended audience.
Labeling
Use concise, familiar words for pages, links, categories, and actions.
Navigation
Give people a clear way to move between sections and understand their current location.
Example — a simple portfolio site map
Home
├── Work
│ ├── Project A
│ ├── Project B
│ └── Project C
├── About
└── ContactAsk whether “Work,” “Projects,” or “Portfolio” is the clearest label for the audience. A label that sounds clever to the designer may be less useful than a familiar label that people immediately understand.
04 / Navigation patterns and responsive behavior
Navigation should be predictable, consistent, and appropriate to the amount of content. A small portfolio may need only a few links. A larger site may need categories, secondary navigation, or search.
Primary navigation
Provides access to the most important sections of the site. Keep labels clear and the number of choices manageable.
Contextual navigation
Links related to the content currently being viewed, such as related projects or a next-step action.
Mobile navigation
Preserves access to important sections when space is limited. Do not hide essential destinations without a clear alternative.
Example — semantic navigation markup
<header class="site-header">
<a class="site-logo" href="/">Studio Name</a>
<nav aria-label="Main navigation">
<ul>
<li><a href="/work/">Work</a></li>
<li><a href="/about/">About</a></li>
<li><a href="/contact/">Contact</a></li>
</ul>
</nav>
</header>The nav element identifies a navigation region. The accessible label clarifies its purpose, and each link has a meaningful destination. Use real URLs for the project rather than leaving placeholder links in the final version.
Responsive navigation example
.site-header {
display: flex;
align-items: center;
justify-content: space-between;
gap: 1.5rem;
}
.site-header ul {
display: flex;
gap: 1rem;
list-style: none;
margin: 0;
padding: 0;
}
@media (max-width: 640px) {
.site-header {
align-items: flex-start;
flex-direction: column;
}
.site-header ul {
flex-wrap: wrap;
}
}This is a simple responsive pattern, not a universal navigation solution. Resize the browser and check whether the links remain visible, readable, and easy to tap.
05 / Interaction states: show what the interface is doing
Every interactive control has states. At minimum, consider its default appearance, hover appearance, keyboard focus, active or pressed state, disabled state when relevant, and feedback after an action.
Default
The control is available and ready to use.
Hover / Focus
The interface communicates which element is under the pointer or has keyboard focus.
Feedback
The interface confirms success or explains an error and what to do next.
Example — button states
.button {
padding: 0.8rem 1.1rem;
border: 2px solid #172033;
background: #b8f34b;
color: #172033;
cursor: pointer;
}
.button:hover {
background: #a5df35;
}
.button:focus-visible {
outline: 3px solid #2563eb;
outline-offset: 4px;
}
.button:disabled {
opacity: 0.5;
cursor: not-allowed;
}Explain that hover is not a replacement for keyboard focus. A disabled control should also communicate that it is unavailable and should not be the only way to explain why an action cannot be completed.
06 / Feedback, forms, and error prevention
Good interaction design anticipates questions and helps people recover. Form labels should be clear, errors should identify the problem, and successful actions should produce a useful confirmation.
Example — a form field with a visible label
<form action="/contact/" method="post">
<label for="email">Email address</label>
<input id="email" name="email"
type="email" autocomplete="email" required>
<button type="submit">Send message</button>
</form>The label is explicitly connected to the input through matching for and id values. The placeholder should not be used as the only label because it disappears as people type.
Example — a helpful confirmation message
<p role="status">
Thanks — your message has been received.
We’ll respond as soon as we can.
</p>In a working application, the confirmation should only appear after the form has actually been accepted. Do not show a success message merely because someone clicked the button if submission failed.
07 / Accessibility is part of the flow
Accessibility is not a final decoration pass. It affects whether people can perceive information, navigate between steps, understand controls, and recover from mistakes.
- Use semantic HTML elements for navigation, headings, forms, buttons, and links.
- Use descriptive link text rather than repeated “read more” or “click here” labels where possible.
- Keep visible keyboard focus indicators.
- Ensure text and interactive controls have sufficient contrast.
- Associate form labels and errors with the relevant fields.
- Do not communicate an error or selected state through color alone.
- Test the interface without a mouse.
08 / In-class assignment — Map and improve a user flow
Choose the primary task for your Project 1 interface. Create a user flow, examine the navigation, and revise the design so a visitor can complete the task with fewer points of confusion.
Write the user goal
Use one sentence: “A visitor wants to…” Keep it specific enough that you can tell whether the task is complete.
Draw the current flow
Map each screen, decision, and action from entry to outcome. Include an error or recovery path if the task involves a form or decision.
Audit labels and navigation
Identify unclear labels, duplicate destinations, missing links, unnecessary steps, or places where the next action is hard to find.
Revise one interaction
Improve one meaningful part of the flow. This may be navigation wording, button states, a form label, an error message, or a confirmation.
Test with a classmate
Give your classmate the goal but do not explain how to complete it. Observe where they hesitate, click, or ask a question. Do not guide them unless they are completely stuck.
Document the result
Submit the flow, a screenshot or prototype of the revised interaction, and a short reflection on what you learned from the test.
Deliverables
- One-sentence user goal and intended audience.
- A labeled user-flow diagram or step-by-step flow map.
- One identified friction point and an explanation of its impact.
- One implemented interface revision.
- A short usability-test note: task, observed hesitation, and next revision.
09 / Peer testing worksheet
Use this worksheet when a classmate tests your flow. Record what they do and say, not only what you think they should have done.
| Test item | Record |
|---|---|
| User goal | What task was the tester asked to complete? |
| First action | Where did they click or look first? |
| Hesitation | Where did they pause, backtrack, or ask a question? |
| Label or control | Which wording or interaction caused uncertainty? |
| Outcome | Could they finish the task? How did they know they were done? |
| Next revision | What is one change likely to make the flow clearer? |
10 / Final self-check
- The user goal and intended audience are clear.
- The flow includes the steps needed to reach a meaningful outcome.
- Navigation labels are familiar, specific, and consistent.
- Interactive controls have visible and understandable states.
- Forms have visible labels and helpful error or confirmation feedback.
- The design has been tested at desktop, tablet, and mobile widths.
- The main task can be attempted using a keyboard.
- A classmate tested the flow without being coached through it.
- The revision is based on observed evidence and the next test is documented.
Instructor-only material · Remove before publishing to students
Instructor Layout Code — Step by Step
Model how to move from a goal to a flow map, then translate the flow into semantic interface code and test it. Use the examples one at a time; ask students to predict the result before showing the next step.
State the goal before choosing screens
Write the goal in plain language. For example: “A visitor wants to view a project and contact the designer.” Ask what information and actions are necessary—and what can be removed.
Draw the happy path
Map the simplest successful route first. Then add decisions, errors, cancellation, and recovery. Avoid drawing every possible edge case before the basic flow is understandable.
Translate flow into semantic HTML
Use navigation, links, buttons, labels, and status messages according to their actual purpose. Semantic structure improves predictability for users and assistive technologies.
Style states and responsive layout
Add hover and focus feedback, then test the same flow at narrow and wide widths. Verify that visual styling does not hide the next action.
Run a think-aloud test
Ask a student to attempt the task and say what they expect at each step. The instructor should observe and take notes rather than explaining the intended interface.
Revise based on evidence
Choose one observed friction point, change it, and repeat the task. Compare the second attempt with the first rather than assuming the revision was successful.
Instructor example A — Build the flow from a goal
Start by writing the task in a sentence. Then list the required steps and outcome. This simple representation can be created on a whiteboard before opening a design tool.
USER GOAL
Find a project and send a message to its designer.
HAPPY PATH
Home → Work → Project detail
→ Contact form → Confirmation
QUESTIONS TO TEST
- Can visitors find Work?
- Is Contact available when needed?
- Does the form explain required fields?
- Is successful submission confirmed?Instructor example B — Implement the navigation
Use this complete header as a concrete example. Explain that the navigation links move to pages, while buttons are generally used to trigger actions. Replace the example paths with destinations that exist in the actual project.
<header class="site-header">
<a class="logo" href="/">Studio Name</a>
<nav aria-label="Main navigation">
<ul>
<li><a href="/work/">Work</a></li>
<li><a href="/about/">About</a></li>
<li><a href="/contact/">Contact</a></li>
</ul>
</nav>
</header>Discuss: Would “Explore,” “Discover,” or “Work” be clearest here? Ask students to justify the label based on the visitor’s goal, not only personal preference.
Instructor example C — Style the navigation and focus state
.site-header {
display: flex;
align-items: center;
justify-content: space-between;
gap: 1.5rem;
}
.site-header ul {
display: flex;
gap: 1rem;
list-style: none;
margin: 0;
padding: 0;
}
.site-header a:focus-visible {
outline: 3px solid #2563eb;
outline-offset: 4px;
}
@media (max-width: 640px) {
.site-header {
align-items: flex-start;
flex-direction: column;
}
.site-header ul {
flex-wrap: wrap;
}
}Ask students to test the header with a mouse and then using Tab. Resize the browser. Is the order still logical? Are links still easy to identify and use?
Instructor example D — Make a form error useful
Explain that native HTML validation can help, but custom forms should also communicate errors in context. This static example demonstrates the kind of message to show; in a working application, connect the message to actual validation logic.
<div class="field">
<label for="email">Email address</label>
<input id="email" name="email"
type="email" aria-describedby="email-error"
aria-invalid="true">
<p id="email-error" class="error">
Enter a valid email address, such as name@example.com.
</p>
</div>Discuss why “Invalid input” is less helpful than a message that explains how to correct the problem. The error should be associated with the relevant field and should not rely on red color alone.
Instructor example E — Run a quick think-aloud test
- Give the tester one task, such as “Find Project B and send the designer a message.”
- Ask the tester to say what they expect each link or control to do.
- Do not explain where to click. Observe hesitation, backtracking, and questions.
- Write down the exact location of the problem, not only a general judgment.
- Make one revision and repeat the same task.
Example observation: “The tester looked for Contact in the page footer, then returned to the top navigation.”
Possible interpretation: “The Contact link may not be visible or prominent enough where the tester expected it.”
Revision to test: “Make Contact consistently visible in the main navigation, then repeat the task with another tester.”
Instructor facilitation checklist
- Ask students to state the user goal before they show their design.
- Keep critique focused on observable evidence, not personal taste alone.
- Have students test the navigation rather than only show screenshots.
- Ensure students record at least one point of hesitation or uncertainty.
- Ask for a reason behind every proposed revision.
- Repeat the test after a revision and discuss what evidence changed.