WayFy’s community review system lets authenticated users contribute ground-truth accessibility data for any OpenStreetMap place. Each place (identified by itsDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/jhonyes04/new-wayfy/llms.txt
Use this file to discover all available pages before exploring further.
osm_id) holds one canonical review that any logged-in user can create or update, keeping the data current without fragmentation. Reviews combine a wheelchair accessibility rating, boolean feature flags, a freetext description, and up to five photos — giving travelers the verified detail they need before visiting a place.
How Reviews Work
Every review is tied to anosm_id — the unique OpenStreetMap identifier for a node, way, or relation. WayFy enforces a one review per place rule: submitting a review for an osm_id that already has data performs an upsert, updating all fields in place. The last_modified_by_id column records which authenticated user made the most recent edit.
The
osm_id field is always stored as a string, even when it looks like a number. Use the same format consistently across favorites, reviews, and trip day places.Wheelchair Rating
The core of every review is thewheelchair field, which uses the same vocabulary as OpenStreetMap:
| Value | Meaning |
|---|---|
yes | Fully accessible — step-free entry, adequate space throughout |
limited | Partially accessible — some barriers exist but access is possible |
no | Not accessible — significant barriers prevent independent access |
activeFilters state in the global store.
Accessibility Feature Flags
Beyond the overall wheelchair rating, reviews include boolean flags for specific accessibility features:| Field | Description |
|---|---|
has_ramp | Ramp present at the entrance |
has_elevator | Elevator available (for multi-floor venues) |
has_accessible_toilet | Accessible/adapted toilet on-site |
has_accessible_parking | Accessible parking spaces near the venue |
automatic_door | Automatic or power-assisted door at the entrance |
OsmAccessibilitySection and CommunityReviewSection components inside the map’s place detail panel.
Submitting a Review
Send aPOST request to /api/accessibility/:osm_id with a JSON body. The endpoint creates a new review if none exists, or updates all fields if one already does.
Uploading Photos
Photos are uploaded separately after a review exists. Send aPOST request to /api/accessibility/:review_id/photos as multipart/form-data with the field name photos. You can upload multiple files in a single request.
Constraints:
- Maximum 5 photos per place
- Accepted formats:
png,jpg,jpeg,webp - Photos are stored on Cloudinary; only the filename/public_id is saved in the database
DELETE /api/accessibility/photos/:photo_id. Only the user who uploaded the photo can delete it.
Reading Reviews
Get aggregated review data
GET /api/accessibility/:osm_id returns the review for a place along with a consensus summary. Because WayFy enforces one review per osm_id via upsert, total_reviews is always 0 or 1 and wheelchair_consensus equals the single review’s wheelchair value (or null if none exists yet).
wheelchair_consensus is determined by max(counts, key=counts.get) — the value with the highest count wins. The map uses GET /api/accessibility/wheelchair-map to fetch a {osm_id: wheelchair} dictionary for all reviewed places at startup, overlaying community ratings on top of raw OSM data.
Get a single place review
GET /api/accessibility/:osm_id/review returns the canonical review for a place, or 404 if none exists yet.
Community Pins
In addition to reviewing existing OSM places, authenticated users can submit entirely new place pins that don’t exist in OpenStreetMap yet. These are managed through the/api/places endpoints.
User submits a pin
A logged-in user
POST /api/places/ with the place name, coordinates, category, and label. The pin is created with status: "pending".Pin appears on the user's map
The submitting user sees their own pending pin on the map via the
community-pending Mapbox layer. Other users do not see it yet.Admin reviews and approves
An admin reviews the submission at
/admin/places (Flask-Admin panel) or via PATCH /api/places/:id/status and sets status: "approved".How Community Data Overlays OSM Data
The Accessibility Map renders four distinct Mapbox GL layers in this order:clusters/unclustered-point— OSM wheelchair data fetched via the Overpass APIcommunity-approved— admin-approved community pins from/api/placescommunity-pending— the current user’s own unmoderated pins
CommunityReviewSection component fetches any existing review from /api/accessibility/:osm_id and displays it alongside the raw OSM tags from the OsmAccessibilitySection. This gives travelers both the structured OSM data and the richer community-validated information in a single view.