"This Is That" is a Rails application that helps digital nomads and travelers find familiar places in new cities. Love Blue Bottle Coffee in San Francisco? We'll help you find the equivalent vibe in Tokyo, Austin, or Berlin.
- Smart Matching - Connects you to places that feel like home using Yelp data
- Visual Search - Beautiful dark-themed UI to explore your matches
- Save Favorites - Star your favorite places for quick access
- User Accounts - Personalized experience with Devise authentication
- ⚖️ Compare Places - Side-by-side comparison of home spots vs matches
- 🔍 Search History - Quick access to your recent searches
- ⭐ Favorites System - Mark and organize your favorite places
- 🌍 Explore Page - Discover places saved by the community
- ⚙️ Settings Page - Manage profile, email preferences, theme
- 🗑️ Delete Account - GDPR-compliant account deletion
- 📤 Share Places - Share place details via Web Share API
- 👍👎 Review Voting - Upvote/downvote reviews from other users
- 🔙 Back Navigation - Consistent back buttons on all pages
Start your journey by defining what you're looking for.
Select a home place and a match to compare them side-by-side.
Manage your profile, view your saved matches, and explore new cities.
See ratings, reviews, and the exact location on our integrated map.
- Ruby 3.2+
- Rails 7.1+
- PostgreSQL
- Bundler
-
Clone the repository
git clone https://github.com/yourusername/this_is_that.git cd this_is_that -
Install dependencies
bundle install
-
Setup Database
rails db:create db:migrate db:seed
-
Environment Variables Create a
.envfile and add your API keys:SERPAPI_KEY=your_key_here -
Start the Server
bin/dev
Visit
http://localhost:3000to start searching!
- Backend: Ruby on Rails 8
- Frontend: TailwindCSS, Hotwire (Turbo & Stimulus)
- Database: PostgreSQL
- APIs: SerpAPI (Yelp Data), Nominatim (Geocoding)
- Maps: Leaflet.js
- Authentication: Devise with OmniAuth (Google)
- Deployment: Render / Heroku Ready
app/
├── controllers/
│ ├── dashboard_controller.rb # User dashboard & favorites
│ ├── explore_controller.rb # Public places discovery
│ ├── places_controller.rb # CRUD for saved places
│ ├── reviews_controller.rb # Reviews & voting
│ ├── search_controller.rb # Yelp search & matching
│ └── settings_controller.rb # User profile settings
├── javascript/controllers/
│ ├── compare_controller.js # Side-by-side comparison
│ ├── loading_controller.js # Button loading states
│ ├── map_controller.js # Leaflet map integration
│ └── rating_controller.js # Star rating interaction
└── views/
├── dashboard/ # Dashboard views
├── explore/ # Explore page
├── places/ # Place cards & details
├── search/ # Search & results
└── settings/ # Settings page
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the MIT License. See LICENSE for more information.
Built with ❤️ using Rails 8 & TailwindCSS



