Case study
Gelaph Almahan
React application development
Session as interface state
Signed out
Session state
- Theme
- Auth, real-time data, and resilient product UI
- Stack
- React · Firebase · Authentication · Figma
Overview
I developed a React application for Gelaph Almahan using Firebase for authentication and real-time data, with UI/UX improvements from Figma through to the implemented interface.
Problem
Authentication and live data create UI states that static mockups do not show: signed out, authenticating, signed in, disconnected, and permission-limited views.
My role
React application development, Firebase integration, UI/UX improvements, and attention to responsiveness, accessibility, performance, security, and cross-browser behavior.
Constraints
- / Firebase as the auth and real-time data layer.
- / UI needed to remain usable across breakpoints and browsers.
- / Security and session handling could not be an afterthought to visual polish.
User flow
- / Arrive signed out.
- / Authenticate.
- / Enter the signed-in product surface with real-time data.
- / Recover clearly if the session or connection fails.
Interface
The reconstructed demo compresses session states into a small product surface: signed out, authenticating, and signed in — with the signed-in view depending on a successful session.
Architecture
- / Auth state as the root of what the UI is allowed to show.
- / Real-time listeners bound to signed-in views.
- / Responsive layout as a first-class concern, not a later pass.
Key technical decisions
- / Drive the interface from session state rather than hiding unauthenticated screens with CSS.
- / Keep Figma decisions visible in spacing, hierarchy, and component states.
- / Treat cross-browser and accessibility work as part of shipping, not as a separate aesthetic.
States & edge cases
- / Signed out
- / Authenticating
- / Signed in
- / Auth error
Responsive behavior
Layout was built to hold together from mobile through desktop. The demo uses the same stacking logic at narrow widths.
Accessibility
Auth actions are labeled buttons. Status is exposed to assistive tech. Focus remains on the control that initiated the change.
Testing / quality
Security, responsiveness, and cross-browser behavior were part of the work, alongside UI implementation.
Performance
Keep the signed-in surface light: avoid rendering authenticated views before the session exists, and keep real-time updates from thrashing layout.
Outcome
A React application with authentication, real-time data, and a more considered interface across devices.
What I learned
Auth is not a screen. It is a permission model that the entire interface has to respect.
What I would improve
I would make empty, error, and reconnect states even more explicit in the signed-in product surface.