A web application that helps users discover and rate the accessibility of public spaces. Users can search for locations, view accessibility features, read and write reviews, and contribute to building a comprehensive database of accessible locations.
Accessibility Map is a community-driven platform where users can rate the accessibility of public areas including cafes, libraries, offices, and other indoor spaces. The application allows users to identify locations with specific accessibility features such as wheelchair ramps, accessible restrooms, elevators, braille signage, and more. Users can filter locations by accessibility features, search for places, and share their experiences through reviews.
- Interactive Map: Navigate an interactive map to explore accessible locations with clickable markers
- Location Search: Full-text search across location names, addresses, cities, and zip codes
- Accessibility Features: Locations can be tagged with multiple accessibility features organized by categories:
- Physical Accessibility: Wheelchair accessible, accessible restrooms, elevator access, wide aisles, automatic doors
- Food & Diet: Vegetarian, vegan, kosher, halal options
- Environment: Quiet space, human service
- Family & Pets: Pet-friendly, child-friendly, high chair available
- Reviews: Users can read and write reviews about locations (minimum 10 characters)
- Favorites: Save favorite locations for quick access
- Image Uploads: Add multiple images to locations with alt text support (JPG, JPEG, PNG only)
- PDF Export: Generate PDF reports for location details and reviews
- Filtering: Filter locations by accessibility features and favorites
- Authentication: Custom authentication system with email/password and Google OAuth support
- User Profiles: User accounts with profile management
- Authorization: Users can only edit/delete locations and reviews they created
- Content Moderation: Profanity filtering for location names, addresses, reviews, and image alt text
- Geocoding: Automatic coordinate generation from addresses using Geocoder
- Responsive Design: Mobile-friendly interface built with Tailwind CSS
- Real-time Updates: Map updates dynamically as locations are added
- Pagination: Efficient pagination for location listings
- Accessibility: Screen reader support and semantic HTML
- Ruby on Rails 8.0.3 - Web framework
- Ruby 3.4.6 - Programming language
- PostgreSQL - Database
- Puma - Web server
- Tailwind CSS 4.x - Styling framework
- Stimulus - JavaScript framework
- Turbo - SPA-like page acceleration
- Mapkick - Interactive map rendering
geocoder- Address geocodingpg_search- Full-text searchmapkick-rb- Map visualizationwill_paginate- Paginationprawn&prawn-table- PDF generationomniauth&omniauth-google-oauth2- OAuth authenticationobscenity- Content moderationaws-sdk-s3- Image storage (production)image_processing- Image variant generation
- RSpec - Testing framework
- Cucumber - BDD testing
- Capybara - Integration testing
- Brakeman - Security scanning
- RuboCop - Code linting
- ERB Lint - Template linting
- Ruby 3.4.6
- PostgreSQL 9.3+
- Bundler
- Node.js (for asset compilation)
-
Clone the repository
git clone https://github.com/NU-CS-Software-Studio-Fall-25/project-accessibility-map.git cd project-accessibility-map -
Install dependencies
bundle install
-
Set up the database
bin/rails db:create bin/rails db:migrate bin/rails db:seed # Optional: Load sample data -
Configure environment variables
- Set up Google OAuth credentials (if using OAuth)
- Configure AWS S3 credentials (for production image storage)
- Set up Geocoder API key (if required)
-
Start the development server
bin/dev
Or use the setup script:
bin/setup
The application will be available at http://localhost:3000
# Run RSpec tests
bundle exec rspec
# Run Cucumber features
bundle exec cucumber# Generate RDoc documentation
bundle exec rake rdoc
# View documentation
open doc/index.html- Location: Stores location information (name, address, coordinates, features)
- Review: User reviews for locations
- Feature: Accessibility features that can be associated with locations
- User: User accounts with authentication
- Session: User session management
The application is deployed on Heroku and can be accessed at: https://project-accessibility-map-50cd81ed0a73.herokuapp.com
The application can also be containerized using Docker (see Dockerfile) and deployed with Kamal.
-
Install Heroku CLI (if not already installed)
# macOS brew tap heroku/brew && brew install heroku # Or download from https://devcenter.heroku.com/articles/heroku-cli
-
Login to Heroku
heroku login
-
Create a Heroku app (if not already created)
heroku create project-accessibility-map # Or use existing app heroku git:remote -a project-accessibility-map-50cd81ed0a73 -
Set up PostgreSQL addon
heroku addons:create heroku-postgresql:mini
-
Configure environment variables
heroku config:set RAILS_MASTER_KEY=$(cat config/master.key) heroku config:set GOOGLE_OAUTH_CLIENT_ID=your_client_id heroku config:set GOOGLE_OAUTH_CLIENT_SECRET=your_client_secret # Add other required environment variables
Your Procfile includes a release task that automatically runs migrations on each deploy:
release: bundle exec rails db:migrate
web: bundle exec puma -C config/puma.rbTo deploy and update the database schema:
-
Commit your changes (including new migrations)
git add . git commit -m "Add database migrations"
-
Push to Heroku
git push heroku main # Or if your branch is different: git push heroku your-branch-name:mainHeroku will automatically:
- Build your application
- Run the
releasetask (which executesrails db:migrate) - Restart the web dyno
-
Verify the deployment
heroku logs --tail
If you need to run migrations manually (e.g., if the release task failed):
# Run pending migrations
heroku run rails db:migrate
# Check migration status
heroku run rails db:migrate:status
# Rollback last migration (if needed)
heroku run rails db:rollbackIf migrations fail during deploy:
-
Check the logs
heroku logs --tail
-
Run migrations manually
heroku run rails db:migrate
-
Check database connection
heroku pg:info heroku pg:psql
-
Verify migration files are committed
git log --oneline db/migrate/
Common Issues:
- Migration errors: Check that all migrations are compatible with your production database state
- Missing environment variables: Ensure all required config vars are set with
heroku config - Database connection issues: Verify PostgreSQL addon is provisioned and active
# View app info
heroku info
# Open app in browser
heroku open
# Run Rails console
heroku run rails console
# View environment variables
heroku config
# View database info
heroku pg:info
# Access PostgreSQL console
heroku pg:psql
# Restart the app
heroku restart
# Scale dynos
heroku ps:scale web=1- Brandon Do
- Darian Liang
- Larry Ling
- Chisa Yan
This project is part of an academic/educational project.
- Additional accessibility features based on ADA and WCAG standards
- Disability-specific needs and filters
- Enhanced search and filtering capabilities
- Mobile app version
- Community moderation features
- Location verification system