AccessMap 1.0.0
AccessMap is a community-driven accessibility reporting platform that helps people with
mobility impairments navigate their surroundings. Users report, verify, and track physical
obstacles — broken ramps, blocked paths, road construction, out-of-service elevators,
missing tactile paving, and more — on an interactive map, and get pedestrian routes that
actively avoid verified hazards. This is the official 1.0.0 release for the CMPE 354
Final Milestone.
Live deployment
| Service | URL |
|---|---|
| Web app | https://bounswe2026group3.vercel.app |
| Backend API | https://bounswe2026group3-2.onrender.com |
| API docs (Swagger UI) | https://bounswe2026group3-2.onrender.com/api/schema/swagger-ui/ |
| Android app | accessmap.apk — attached to this release |
The backend runs on Render's free tier and may take ~30 s to wake on the first request.
What's in this release
For citizens
- Interactive map of accessibility obstacles with status-coded markers (unverified / confirmed / passive / resolved-awaiting-validation / closed) and an indoor/outdoor distinction — indoor pins render only at high zoom.
- Report obstacles with photo, category, a location picker, description, and indoor/outdoor context.
- Upvote reports (role-weighted auto-verification thresholds) and flag low-quality or false reports.
- Confirm that a resolved obstacle has been fixed — closure is community-gated, not unilateral.
- Discussion comments on each report; progress indicators toward verification / closure thresholds.
- Pedestrian route planning that avoids verified obstacles (per-trip baseline + alternative route, avoided-obstacle count), with a "show inactive/passive obstacles" toggle.
- Saved places with tap-to-focus on the map; a persistent mobility profile (e.g. wheelchair) tied to the account.
- In-app notifications for report status changes (including when your report is closed) and per-user notification preferences.
- Password reset by email.
For trusted contributors & authorities
- Trust-score system; active contributors are auto-promoted to Trusted Contributor and earn a badge.
- Apply-to-authority flow.
- Authority dashboard to review/filter reports and mark them "Resolved – Awaiting Validation" with a repair photo and notes; the reporter and upvoters are notified automatically.
For admins
- Delete malicious reports; suspend/ban abusive accounts; admin-only permission checks.
Platform
- Django REST API, containerised, deployed on Render.
- React Native / Expo app — web build on Vercel, Android APK built via EAS.
- PostgreSQL + photo storage on Supabase; Valhalla pedestrian routing.
- OpenAPI schema + Swagger UI at
/api/schema/swagger-ui/. - GitHub Actions CI: Docker build check and Android APK build.
Changelog since the MVP milestone (mvp-milestone → final-milestone)
114 commits. Highlights:
- Routing overhaul — obstacle avoidance via
exclude_polygons, per-trip baseline + alternative routes, point-to-segment proximity checks, endpoint-proximity skipping, 4 km/h ETA fallback. - Authority workflow —
GET /api/authority/dashboard, base64 resolve flow, dashboard UI, login redirect for the authority role, apply-to-authority screen. - Report lifecycle — UNVERIFIED default with hollow/dashed markers, auto-decay of stale reports to PASSIVE, role-based upvote thresholds, flag endpoint,
confirm-resolution, CLOSED reports hidden from the map and shown read-only, accessibility-standard violation chips. - Map — passive-obstacle toggle, UNVERIFIED reports on the map, stale-while-revalidate refresh, debounced bounds fetch, icon caching, marker-glitch fixes on zoom, compact route input bar.
- Notifications — in-app notifications tab and list, status-change notifications, reporter notified on closure, per-user notification preferences, camelCase serializer aliases.
- Users / trust — mobility-profile endpoints, env-configurable trust-score deltas, auto-promotion to Trusted Contributor, badges,
promote_authoritymanagement command. - Saved places — CRUD endpoints, high-precision lat/lng, tap-to-focus on the map.
- Auth — password reset request/confirm flow.
- Admin — delete-as-malicious, suspend/ban endpoints.
- Discussion — comment section on reports.
- API docs — drf-spectacular Swagger UI.
- Numerous test additions and bug fixes across backend and frontend (see commit history).
Running it locally
See README.md. In short:
cp .env.example .env, fill in the Supabase / DB credentials, then docker compose up --build
for the backend/web stack; cd frontend && npm install && npx expo start for the app, with
frontend/.env → EXPO_PUBLIC_API_URL set to https://bounswe2026group3-2.onrender.com
for a physical device or http://10.0.2.2:8000 for the Android emulator. A
frontend/.env.example is included.
Data seeding
The deployed Supabase database is populated manually with real-world accessibility data —
obstacle reports with photos, categories, demo user accounts, saved places, and notifications —
collected around Boğaziçi University (data inventory in the
Final Demo Plan wiki page),
so the live web app is not empty on launch. For a fresh local database: run
python manage.py migrate, create an admin with python manage.py createsuperuser, register
more users via POST /api/auth/register (or the Django admin at /admin/, where roles and
trust scores can also be adjusted), and add sample reports via the Reports API or the Django
admin — exact field schemas are in the Swagger UI.
Categories and statuses are defined in code, so no lookup-table seeding is required.
Default credentials
Credentials for the pre-created accounts — Admin, Infrastructure Authority,
Trusted Contributor, and a regular Citizen — are provided in credentials.pdf,
submitted via Moodle with this milestone (kept out of the public repository).
Web app: https://bounswe2026group3-azure.vercel.app ·