A crowdsourced accessibility map for Belém, Pará. "Is this place accessible?" is not a yes/no question, so this app does not ask it that way — venues are scored against twelve concrete criteria that a wheelchair user, a blind visitor or a Deaf visitor can actually act on.
| Ramp | Elevator | Adapted bathroom |
| Braille signage | Tactile paving | Reserved parking |
| Adapted tables & counters | Wheelchair available on site | Libras (sign language) |
| Guide dog allowed | Online accessibility | Assistive technology access |
The map is the interface. On load, +layout.server.ts injects the Google Maps key server-side (never shipped in the bundle), Capacitor Geolocation resolves the visitor's position — falling back to navigator.geolocation on the web — and the app asks the backend for venues inside the current radius.
- Custom markers, not default pins.
src/routes/+page.svelterenders SVGAdvancedMarkerViewmarkers and fills rated-accessible places green, so the answer is visible before any tap. - Radius-based discovery.
distGeographicTwoPoints()inutils.tsdoes the haversine locally, and panning the map refetches only what moved into view. - Accessibility filtering is a server query.
GET /places/accessibility?feature=Xis answered in SQL by the backend rather than filtered client-side, so a visitor on mobile data downloads only matching venues. - State kept small and explicit.
stores.tsholds exactly four stores —mapStore,mapLoaded,currPosition,radiusStore.
Backend: roda-belem-service (Go + MySQL + sqlc). Landing page: smoke-test-roda-belem.
SvelteKit 1 · Svelte 4 · TypeScript · Tailwind CSS · Flowbite Svelte · Google Maps JS API · Capacitor 5 (Android target configured) · anime.js · Notyf · adapter-vercel
pnpm install
pnpm dev # localhost:5173
pnpm run update-app # Capacitor sync for the Android targetEnvironment: MAPS_API_KEY — read server-side in src/routes/+layout.server.ts.
The API base URL is currently hardcoded in src/lib/api/; point it at your own roda-belem-service instance.
Working: map with custom markers, geolocation, nearby discovery, accessibility filtering, favourites and profile views, search.
Not wired yet: the login form validates locally but never calls POST /users/login; review submission and the individual place page are unbuilt; Capacitor is configured but no service worker exists, so there is no offline mode.
The previous Vercel deployment is gone — run it locally against your own backend.