sandesh.design
Neofortunity · Case Study 01Dual-Role iOS Architecture

A volunteering app people can trust before they show up.

Neofortunity brings volunteers, nonprofit organizations, and donors together in one iOS app. I designed it from the first stakeholder interview to the final screens: research, information architecture, a full design system, and high-fidelity UI for two roles.

ROLEProduct designer
SCOPEResearch, IA, design system, UI
PLATFORMiOS, SwiftUI, Firebase
STATUSFinal stage of App Store publishing
Discover screen: local volunteer opportunity search with location filters
01 // DISCOVER
Event Detail: pre-registration logistics FAQ, parking, and attire guidance
02 // LOGISTICS
Admin Overview: operational triage queues designed for 10-minute field sessions
03 // ADMIN
THE PROBLEM
Finding a volunteering event is easy. Trusting the organization behind it is not.
WHAT I DID
Audited an established app, designed the architecture for volunteers, admins, and donors, built the design system, and designed the final UI for both roles.
WHERE IT STANDS
Design system v1.0 is locked, and the app is in the final stage of App Store publishing.
35

Screens wireframed across two roles with dead-end audit

14

End-to-end flows validated against information architecture

24

Reusable components with documented states & variants

53

Color tokens organized in a two-layer design system

AA

Text contrast calculated with WCAG 2.2 formula

THE ZERO-TRUST PARADOXFoundational Premise

Finding an event is easy. Trusting the people behind it is the hard part.

Neofortunity is a young 501(c)(3) focused on research and education, about a year old when I joined. The founders wanted a new way for people to learn from the organization and work with it. They also knew how most small nonprofits reach volunteers: a flyer on Instagram, a Google Form to sign up, a Saturday to run. That fills a morning but builds no relationship. People connect with the event on the flyer, not the organization behind it, so every sign-up starts from zero trust.

We agreed the iOS app had to do three things flawlessly: help volunteers find opportunities near them, let volunteers record hours and get them approved, and give donors a clear way to support the mission.

Before I drew anything, I audited an established volunteering app by hand and logged twelve findings. A view called Near Me showed events in other cities because the location setting was buried. The cancel action hid behind a vague label, two levels deeper than a high-stakes action should be. Navigation mixed verbs and nouns, so people had to stop and decode each tab. None of it was a bug. Each was a choice that made a stranger work a little harder to trust the product.

Those findings became three root problems, twelve requirements, and fourteen user stories. Every element of the information architecture had to serve at least one story, pillar, or persona need, which kept the product from growing features nobody needed.

North Star · Guiding Thesis
“The volunteering app a first-time user trusts by the end of their first session.”
Foundational PillarsThree Core Heuristics

Honesty

Status is written in words before it is shown in color. Empty states say what is true, and nothing implies more certainty or urgency than exists.

Legibility

Every pairing of text and background is contrast-checked. Role, location, and the state of your data are always visible.

Respect

Touch targets, text scaling, and reduced motion are built into the foundation, so no one pays for our shortcuts with their time.

Co-Primary ActorsTwo Converging Stakeholders

Maya

Volunteer Role // Gold
Community Actor

“Giving up a Saturday to strangers”

She is volunteering for the first time. Before she commits, she wants to know where to park, what to bring, and whether the shift suits a first-timer.

Hesitation

Unclear parking, hidden gear requirements, or arriving at a disorganized shift.

Trust Remedy

Upfront shift logistics, verified organizer lead, and a 1-tap cancellation escape hatch.

David

Operator Role // Plum
App Operator

“Running an organization from a phone”

He manages events between other work, in short sessions. He needs to clear what is waiting in minutes, not at a desk.

Hesitation

Lost volunteer hours, manual spreadsheet logs, and desk-tethered admin tools.

Trust Remedy

Single-tap mobile hour verification queue with audit tokens and offline check-in.

5 CORE PRODUCT DECISIONS

[ 03 ]

Defending trust through deliberate omission.

Designing an operating system for non-profit field work requires choosing what NOT to build as fiercely as what to build. Rather than cargo-culting commercial engagement patterns, Neofortunity made five architectural bets that broke with incumbent standards to establish immutable credibility.

Decision 01 // 05Volunteer Architecture

Give the Organization a Face

People commit to organizations they respect, not anonymous event tasks.

Traditional volunteering apps treat the nonprofit as metadata under the event title. Neofortunity elevates the organization into a first-class profile destination with mission statements, staff visibility, verified 501(c)(3) status, and past track records.

Crucially, organization profiles deliberately omit an in-app donate button. Donations support Neofortunity Inc.'s platform directly, while donors wishing to fund specific nonprofits are routed to external direct channels. This prevents legal and accounting friction.

Chosen Architecture

Dedicated nonprofit profiles without in-app donor routing.

Sacrificed Industry Convention

Instant per-organization in-app donation monetization.

Rationale: Protects V1 from multi-party payment regulation while keeping the trust contract pure.

Organization profile with mission and verified status
Dedicated Organization Profile
01
/ 05
Critical Pivot · 28 Screens In

The audit that sent me back.

+7 Screensdesigned to close dead ends

After wireframing the first 28 screens, I went through them one tap at a time and asked where each button led. Several led nowhere. Create Event had no screen behind it. Neither did the roster, question management, returning an hour entry, or inviting an admin.

A volunteer or an admin would have hit a wall in their very first session. I stopped and designed seven more screens to close the critical dead ends before moving to high fidelity. It ensured visual craft was built on flows that actually connected.

Design Reasoning · Tradeoffs

Roads I considered and did not take.

Explored Alternative

A logo or a full name as the role indicator

Decided Architecture

A small organization avatar beside the word Admin.

A logo alone does not say which mode you are in, and full organization names get long on mobile headers.

Explored Alternative

A fifth tab for saved events

Decided Architecture

Four tabs.

The most common path is finding and joining an event; a fifth destination would have competed with it.

Explored Alternative

Separate tabs for events and organizations

Decided Architecture

One Discover tab with a segmented control.

Serves both discovery intents cleanly without expanding top-level navigation.

DESIGN SYSTEM & TOKENS

[ 04 ]

The system underneath

The screens look consistent because they are made of the same parts. I built the design system as architecture rather than a style guide, and I built and tested it in Figma with variables, variants, and component properties.

Neofortunity mark in deep aubergine and warm gold
Brand Mark · Dual-Tone

The palette comes from the organization's own mark: a deep aubergine and a warm gold.

ink/950Text
ink/700Secondary
gold/600Action
gold/100Volunteer Tint
plum/700Admin Mode
plum/100Admin Tint
success/600Approved
warning/600Attention
error/600Returned

The neutrals carry a faint plum undertone, so even screens with no color feel on brand.

The component library in Figma: button matrix, inputs, toggles, badges, avatars, and tab bars
The component library in Figma. The button alone carries three types across four states, and every screen uses instances of these parts, not redrawn copies.
Foundation 01
System Rule

Two layers, one source of truth

Primitive tokens hold raw values. Semantic tokens give them meaning, like action/primary or role/admin, each with a light and a dark mode. Components read only the semantic layer, so one change repaints every button, badge, and tab bar.

Foundation 02
System Rule

Contrast, calculated

Every text pairing was checked against the WCAG formula. White on the primary button gold measures 5.5 to 1. My first warning orange came in at 4.3 to 1, just short of AA, so I darkened it until it passed.

Foundation 03
System Rule

Restraint on purpose

SF Pro carries the interface. New York, Apple's own serif, appears once per screen on the thing that deserves warmth. Translucent material appears only on floating chrome, never behind text people need to read. Motion uses four duration tokens and collapses to an instant state when Reduce Motion is on.

Foundation 04
System Rule

A token earns its place

New tokens only arrived when a real screen needed them. When the admin tab bar's active state barely stood out, I found that the dark plum used for badges was darker than the inactive gray. I added a lighter plum for icons and left the badge color alone.

Foundation 05
System Rule

Documented for someone else

Every component carries a written rule and reason, like why a disabled button never becomes a faded gold one, so the next designer or engineer does not have to guess.

Foundation 06
System Rule

Honest about the gaps

Dark mode tokens are defined but not yet contrast-verified. The system's version history says so. A reviewer should find that in the first minute, not the last.

PRODUCTION SCREENS

[ 05 ]

The complete high-fidelity system.

Both roles, the donation flow, and the empty state, built from the system above. Drag or scroll to inspect the full set.

Discover screen feed with verified badges and true distance indicators
VOLUNTEERSCREEN 01

Discover Feed

Transparent geographic browsing with verified badges and explicit distance markers.

Event detail screen with pre-registration logistics and FAQ
VOLUNTEERSCREEN 02

Event Logistics & FAQ

Full operational transparency covering attire, parking, and organizer credentials prior to signup.

Honest empty state screen when no opportunities match filter
VOLUNTEERSCREEN 03

Honest Empty State

Direct geographic feedback without deceptive recommendations or coercive push notification gates.

Volunteer personal hours transcript and export screen
VOLUNTEERSCREEN 04

Verified Hours Transcript

Self-service exportable volunteer hours log with organizer cryptographic signatures.

Donation receipt and confirmation screen with direct PDF export
VOLUNTEERSCREEN 05

Instant Tax Receipt

Immediate donation receipt generation without gating behind account creation.

Admin overview dashboard in plum palette for field operations
ORGANIZERSCREEN 06

Organizer Field Dashboard

Glanceable shift tracking and attendee check-in designed for fast one-handed mobile use.

Hours review triage queue with single-tap verify and return
ORGANIZERSCREEN 07

Hours Review Queue

Single-tap approval queue with mandatory constructive feedback for returned entries.

Nonprofit hub screen showcasing mission, status, and direct contacts
ORGANIZERSCREEN 08

Nonprofit Hub

First-class public presence showcasing tax-exempt status, mission, and direct contact details.

Mobile event creation flow with required logistics prompts
ORGANIZERSCREEN 09

4-Step Event Builder

Streamlined mobile opportunity creation with mandatory logistical FAQ prompts.

Organizer team management with role-based permissions
ORGANIZERSCREEN 10

Delegate & Role Controls

Granular access controls for volunteer captains and coordinators without granting master keys.

06 // IMPACT & REFLECTION

[ 06 ]

What the work changed

Every problem that drove this project now has a specific, built answer.

Architectural Matrix06 Shipped Architectural Guarantees
User trustORGANIZATION PROFILE
The Friction

Non-profits were treated as anonymous event tags, leaving volunteers unable to verify organizational legitimacy or safety.

Shipped Architecture

Every organization gets a verified 501(c)(3) profile with leadership visibility, and every event listing links directly back to it.

User trustHONEST EMPTY STATE
The Friction

Search hid the active radius filter, serving empty or deceptive feeds to volunteers crossing suburban borders.

Shipped Architecture

Search radius stays anchored in the header; empty states compute exact driving miles to nearest real opportunities.

WorkflowHOURS REVIEW QUEUE
The Friction

Hour tracking stalled in an opaque black box while coordinators drowned in messy, unorganized approval lists.

Shipped Architecture

One synchronized loop: live volunteer status badges, a 1-by-1 admin review queue, and mandatory return notes.

Risk reducedROLE GOVERNANCE
The Friction

Unrestricted admin permissions in community tools risked catastrophic deletion, hostile takeovers, and sole-owner lockouts.

Shipped Architecture

Eight structural ownership guarantees that enforce sole-owner retention, transfer cooldowns, and immutable audit trails.

Risk reducedCLICK-PATH AUDIT
The Friction

Dead ends in wireframed flows trapped organizers during multi-step event setup, causing high drop-off.

Shipped Architecture

Click-path audit added seven bridge screens, draft caching, and explicit state exits before visual styling began.

Decision influenceDONATION FLOW
The Friction

My initial IA treated donation as a secondary utility tab, under-emphasizing non-profits' core financial survival.

Shipped Architecture

Founder feedback shifted priorities to ship a complete 4-step donation flow with transparent fund allocation and receipts.

What I learned, and what comes next

What I learned

  • 01Ask what matters personally

    A feature list and a person's priorities are different documents. The donation correction taught me to ask, in the first meeting, which of these they would be most upset to lose.

  • 02Guardrails start with imagination

    Writing eight guarantees for the Owner role meant picturing how each permission could be misused before it existed. I now do that for anything that grants power.

  • 03Naming gaps builds trust

    Dark mode is documented as proposed, not finished. I would rather a reviewer hear that from me.

Next steps

  • 01Usability test the first session

    Watch first-time volunteers and a new admin use the app unassisted, and measure against the north star.

  • 02Track the outcomes the design is built for

    Registration completion, hour-log completion, time to approval, and donation completion.

  • 03Close the known gaps

    Verify dark mode contrast, test with VoiceOver and the largest text sizes, and add a two-weight icon set to the tab bar.

Retrospective

Key Process Takeaway
“A fifteen-minute ranking exercise at the start would have saved a revision cycle.”

Rank priorities with the founders in the first session. I presented my understanding in the second meeting, and the biggest correction arrived there. A fifteen-minute ranking exercise at the start would have saved a revision cycle.

A note on process: AI tools were part of my workflow in places, to move faster through parts of the research and design work.