← Reference Page
TSA Webmaster 2025-26

MindBalance Development Process

Design decisions, branding exploration, before & after comparisons, and feature justification

Topic Mental Health Wellness Community Hub
Competition TSA Webmaster 2025-26
Website mindbalance.cloud
Document Type Process Documentation
Student Authorship Declaration
Every page, feature, and line of code on MindBalance was researched, designed, and built by our student team. This includes all HTML, CSS, JavaScript, and Python files, as well as all written article content, branding decisions, and accessibility features. No artificial intelligence was used to generate any code, article text, or design. All external libraries (Supabase, OpenAI API, ElevenLabs, Resend) were integrated by us using their official documentation. The 12 wellness articles were written by our team using cited medical sources. All design choices, including color palettes, typography, and layout, were made by students.
1. Branding Exploration
Name brainstorming and color palette research before finalizing the MindBalance identity
MindSpace
Mental health "space" to explore wellness. Felt too generic, no clear action or goal implied.
CalmPath
Calming journey-based name. Felt passive, does not suggest education or support resources.
WellHub
Wellness community hub. Too short, sounded like a fitness app rather than mental health.
Serenity
Peaceful, meditative feel. Hard to pair with "support" or "crisis" resources without feeling contradictory.
MindEase
Suggests relief from stress. Too focused on symptom relief, misses the education component.
ThriveLine
Positive, forward-moving. Harder to say, and "line" could be confused with a crisis hotline.
ClearMind
Clarity-focused. Implies a before/after fix rather than an ongoing support journey.
MindBalance
Balance captures both education and support. It implies stability, not just temporary relief. Works as a two-word compound that is easy to remember.
CHOSEN
#2d7a3a
Forest
#52b869
Sage
#a8d8b5
Mint
#e8f5e9
Pale Mint

Green reads as "nature" and "health" but felt clinical and shared with medical/pharmacy branding. The darker shades lacked warmth for a supportive mental health site.

#1e3a5f
Navy
#2d6ca2
Sky Blue
#5ba4d4
Calm Blue
#dbeafe
Powder

Blue conveys trust and calm but felt too corporate. Many large mental health organizations already use blue (BetterHelp, Calm), so we wanted to stand out with something more personal.

#f5c518
Bright
#e9b94a
Sunflower
#c9a84c
Amber
#fef9c3
Pale Lemon

Pure yellows felt energetic but not grounded. Bright yellow in particular had accessibility issues (low contrast on white). The amber tones were closer to what we wanted but still felt too saturated.

#af916d
Primary Gold
#c9a84c
Warm Amber
#8a7055
Deep Gold
#f5f0e8
Cream Bg
#f5f3ef
Page Bg
#1a1a2e
Deep Navy

We landed on warm gold as our primary color. It is distinct from every major mental health platform, conveys warmth and trust rather than just clinical calm, and pairs naturally with cream and off-white backgrounds. The deep navy for text gives strong contrast without the coldness of pure black.

2. Design Wireframes
Early layout sketches before full visual design was applied

These wireframes represent the structural decisions made before any colors or fonts were chosen. We focused on information hierarchy: what does a user see first, what action do we want them to take, and how do they navigate from crisis support to educational content.

Homepage Layout
Homepage layout sketch showing hero video section, topic cards, and navigation structure

Key decision: hero video above the fold with a single clear CTA, then topic cards driving to articles.

Blog / Article Listing
Blog listing layout sketch showing filter chips, search bar, and article card grid

Key decision: filter chips across the top so users can find topics instantly; featured article gets a wide card.

Single Article Page
Single article layout sketch showing breadcrumb, hero image, TTS player, and article body

Key decision: breadcrumb at top, TTS player controls near the article hero, social share buttons at the bottom.

Support / Helplines Page
Support page layout sketch showing crisis banner at top and helpline cards in a grid

Key decision: crisis 988 number positioned at the very top so it is the first thing someone in distress sees.

3. Before & After Comparisons
Screenshots from early versions alongside descriptions of the final design improvements

The following comparisons show how each major section evolved from its first working version to the final design submitted for competition.

▲ Before: Support Page Early version of the Helplines and Support page showing basic card layout with green accents

Early build: Basic white cards with green 24/7 badges. The header used an early gold-brown navbar tone. Cards had no hover animation. The page had a floating scroll-progress indicator on the right side that was later removed.

▼ After: Support Page
Current version improvements:
  • Crisis 988 banner pinned to the top of the page
  • Cards reorganized by urgency: 24/7 lines listed first
  • Hover lift animation and gold accent border added to cards
  • Call / Text buttons replaced with cleaner icon-labeled buttons
  • Page uses breadcrumb navigation to help users retrace their path
  • Fully translated into 11 languages via the translation engine
  • Dark mode support added to all card and banner elements

▲ Before: Footer Early version of the footer with tan background, showing MindBalance branding and a Get Support button in orange

Early footer: The MindBalance logo was plain text. A large orange "Get Support" button felt visually mismatched. The footer background was a flat tan tone. Topic tags were not linked.

▼ After: Footer
Current version improvements:
  • Logo replaced with the full SVG heart + wordmark
  • Footer background darkened for proper contrast with white text
  • Topic tags now link to the filtered blog page
  • "Get Support" button color unified to brand gold
  • Added newsletter sign-up field with email validation
  • Social icons expanded (Instagram, future channels)
  • Copyright year and legal links reformatted for readability

▲ Before: Blog Page Early blog page with dark hero section and numbered table of contents on the right

Early blog: A dark navy hero section dominated the page. A numbered sidebar (Featured read, Browse sections, Trending picks) was a layout experiment that was later dropped. The topbar showed a physical address and phone number in its early form.

▼ After: Blog Page
Current version improvements:
  • Dark hero removed; blog header now uses the cream brand background
  • Sidebar table-of-contents replaced with filter chip system
  • Search bar added with live topic filtering
  • Reading Mode toggle added for distraction-free browsing
  • Article cards show read time, category badge, and audio icon
  • Articles organized into 6 topic categories with count badges
  • Fully responsive on mobile with stacked card layout

▲ Before: Settings Panel Early settings preferences panel showing basic toggles for dark mode, font size, colorblind mode, focus mode, dyslexia font, reduce motion, and language

Early settings: Preferences appeared as a simple floating panel with minimal styling. The panel had no animation, no keyboard shortcut access, and was triggered only from the gear icon in the navbar.

▼ After: Settings Panel
Current version improvements:
  • Redesigned as a full slide-in modal with organized sections
  • Keyboard shortcut system: Alt+Shift keys for every setting
  • Accent color picker added (6 brand-approved color themes)
  • Line height and font size controls expanded
  • High contrast mode and focus mode added
  • Settings persist across every page via localStorage
  • Animated open/close with reduced-motion support
4. Feature Justification
Why each major feature was built and what student decisions went into it

Each feature below was identified through research into what users visiting a mental health website actually need, then designed and coded from scratch by our team. No templates or AI-generated code were used.

AI Wellness Companion (Chatbot)
JavaScript + Python
We identified early on that a major barrier to mental health help-seeking is the fear of talking to another person. We built a chat companion that lets users express how they are feeling in a low-stakes, private way. The entire chat interface, from the message bubble design to the typing animation, was coded by our team. We wrote a custom dual-layer crisis detection system: the JavaScript front end checks for crisis keywords in real time and shows a 988 banner instantly, while the Python backend also runs an AI analysis pass to catch edge cases before responding.
Student design decisions
  • We chose which crisis keywords to detect and wrote that list ourselves
  • We designed the quick-chip buttons (I'm feeling anxious, Help me calm down) based on what we thought users would struggle to type
  • We wrote the system prompt that shapes the companion's tone and focus on mental health only
  • We set a 2000-character message limit to prevent misuse
Mood Tracker
JavaScript + Supabase
Many mood tracking apps show overwhelming dashboards that make users feel judged. We kept our tracker to a single 1-10 score and an optional journal note. We designed the database table ourselves (choosing which columns to store, deciding to use a numeric score instead of emoji labels for easier data analysis), and wrote all the chart rendering code that plots the 30-day history. The mood check-in widget appears on the homepage and floats on every article page.
Student design decisions
  • We chose a 10-point scale after testing 5-point and emoji-based scales with classmates
  • We decided to store an optional text note alongside each log entry
  • We wrote the SQL schema for the mood_logs table in Supabase ourselves
  • We added AI-powered insights that summarize mood patterns weekly using the OpenAI API
Text-to-Speech on Articles
Python Backend
We noticed that many users of mental health resources prefer audio content, whether because they find reading difficult, have dyslexia, or simply want to listen while doing something else. We built a TTS player that sits at the top of every article, with play/pause, speed control, and a visual progress bar. We wrote the backend Flask route that calls the ElevenLabs API, caches the audio file on the server to avoid re-generating it on every request, and falls back to the browser's built-in speech synthesis if the API is unavailable.
Student design decisions
  • We chose to pre-cache audio server-side rather than generate it per request, for faster load times
  • We selected the ElevenLabs voice after listening to multiple options and choosing the clearest one
  • We designed the compact player bar so it does not take up article reading space
  • We wrote the browser TTS fallback ourselves in JavaScript
Multi-Language Support (11 Languages)
JavaScript
Mental health stigma is significantly higher in communities where English is not the primary language. We decided that our site should be accessible to everyone, not just English speakers. We built a full translation engine in JavaScript from scratch. It reads a JSON file of translation keys and applies them to every element on the page using data attributes. We structured and managed all 11 language files ourselves, covering over 1,800 translation keys across all 23 pages.
Student design decisions
  • We chose the 11 languages based on which are most spoken in the Irving, TX school district
  • We built the translation system ourselves rather than using a third-party i18n library
  • We decided to use data-translate attributes so the system works without modifying HTML content
  • We added RTL support for Arabic so the page layout flips correctly
Notifications & Achievement Badges
JavaScript + Supabase
To encourage users to stay engaged with their mental wellness journey, we designed a badge system with 15 achievements. We created the badge criteria ourselves, deciding what counts as meaningful engagement (first mood log, reading 5 articles, completing a check-in for 7 days in a row). We set up the Supabase database tables for both notifications and achievements, wrote the JavaScript that checks criteria and awards badges, and built real-time notification delivery using Supabase's WebSocket subscription system so the badge pops up instantly without a page reload.
Student design decisions
  • We designed all 15 badge names and descriptions ourselves
  • We chose which behaviors to reward (reading, mood logging, community posts)
  • We built the gold trophy toast pop-up animation for badge awards
  • We reduced the notification poll interval to 30 seconds for near-real-time feel
Accessibility System
JavaScript + CSS
We learned through research that mental health resource users include a higher proportion of people with ADHD, dyslexia, anxiety, and sensory sensitivities. Instead of meeting only the minimum WCAG standard, we built a full accessibility control panel with eight settings. Every setting uses a CSS data attribute on the HTML element so it applies instantly across the entire page without a reload. We wrote all the CSS filter rules, font-swap logic, and reduced-motion overrides ourselves.
Student design decisions
  • We chose to support Protanopia, Deuteranopia, and Tritanopia colorblind modes with SVG filters we wrote ourselves
  • We decided ADHD mode should reduce sidebar distractions and highlight the main content
  • We added the dyslexia-friendly OpenDyslexic font option after reading about its benefits
  • We implemented 7 keyboard shortcuts (Alt+Shift+S/D/H/F/M/A/Y) for power users