Fast scanning
Current conditions, rain guidance, and hourly trends get visual priority.
Case study
Yes, it is a weather app — the most common portfolio project there is. It is also a study in defensive client-side data handling. The product answers "what is the day like?" at a glance; the engineering makes sure that when a provider returns partial, delayed, or missing data, the UI shows it as unavailable instead of coercing it into a confident, fake zero.
Data trust lens
Aura answers the user's immediate question quickly while staying honest about provider limits. Three weather sources are composed with independent fetch lifecycles, every value is run through a nullish-rejection contract at the API boundary, and missing readings stay visible as unavailable rather than collapsing into misleading zeros.
Current conditions, rain guidance, and hourly trends get visual priority.
Strict numeric handling at the boundary keeps null values null instead of fake zeros.
Separate requests stop one slow provider from blocking the whole experience.
Weather apps can become visually busy while still failing at the basic question: what does the user need to know right now? A second, deeper issue is data trust. When APIs return partial or missing values, the interface must not silently display fake readings that the user will act on.
Still to validate: real user behavior around saved cities, location permissions, and which weather panels people use most often.
Sole frontend engineer. I built the dashboard layout, the keyboard combobox search, saved- and startup-location behavior, the weather API orchestration across three sources, the nullish-rejection data contracts, missing-data rendering, responsive CSS in plain stylesheets, the interface states, and the full QA suite that locks the trust contract.
null end to end and is rendered as unavailable, never as 0.Weather data can be partial, delayed, or unavailable from individual provider endpoints.
Normalize values at the API boundary with a nullish-rejection contract and render unavailable data explicitly instead of forcing fallback zeros.
The interface stays trustworthy, but the UI has to carry more clear empty and unsupported states — and the QA suite has to lock that contract so it can't regress.
axe against the app's primary states as part of the end-to-end suite.Aura Weather is a working portfolio project with real multi-API integration, resilient loading/error behavior, defensive data contracts, and documented limitations. It should not be described as a full production weather platform.
Data products need honest absence states as much as polished success states. Keeping null, unavailable, and delayed provider responses visible makes the interface more trustworthy than a cleaner-looking screen with misleading fallback values — and a regression test is what keeps that honesty from eroding over time.