API and data model
The application models the Civic Information response with explicit TypeScript interfaces:
Electionidentifies the election name and election day.PollingLocationdescribes an available polling or drop-off location and hours.CandidateandContestdescribe contest choices and referendum text.VoterInfoResponsecombines election, contests, locations, and administration links.
The API helpers keep network access separate from route rendering and surface failed HTTP responses as useful errors.