A responsive weather forecasting application built with Ruby on Rails, featuring real-time weather data, intelligent address autocomplete, and modern UI components.
- Real-time weather data from OpenWeather API
- Current conditions with temperature, humidity, wind speed, and visibility
- Hourly forecasts for the next 24 hours
- 7-day outlook with daily high/low temperatures
- Intelligent caching to minimize API calls and improve performance
- Google Places integration for accurate city autocomplete
- Keyboard navigation support (arrow keys, enter, escape)
- US cities focus with geographic coordinate retrieval
- Auto-detection of user location with fallback options
- Responsive design built with Tailwind CSS
- Component-based architecture using ViewComponent
- Real-time updates with Hotwire/Stimulus
- Toast notifications for user feedback
- Loading states with elegant spinners
- Caching using Solid Cache for optimal response times
- Rate limiting to prevent API abuse
- Circuit breaker pattern for API resilience
- Error handling with graceful degradation
- Ruby on Rails 8.0+ - Web application framework
- SQLite - Cache database
- Solid Cache - Caching and session storage
- ActiveInteraction - Business logic organization
- ViewComponent - Reusable UI components
- Hotwire (Turbo + Stimulus) - Modern web app behavior
- Tailwind CSS V4 - Utility-first styling
- Lucide Icons - Beautiful iconography
- Toastify.js - Toast notifications
- Spin.js - Loading state
- OpenWeather API - Weather data provider
- Google Places API - Address autocomplete
- Geocoder gem - Location services
- Kamal - Modern deployment pipeline
- GitHub Actions - CI/CD automation
- Docker - Containerization
- Minitest - Testing framework with snapshot testing
- Ruby 3.4+ installed
- Git installed
- Clone the repository
git clone https://github.com/ujackson/forecastly.git cd forecastly - Install dependencies bundle install
- Environment setup cp .env.example .env
- Edit .env and add your API keys: OPENWEATHER_API_KEY=your_openweather_api_key GOOGLE_PLACES_API_KEY=your_google_places_api_key GEOCODER_KEY=your_geocoder_key
- Solid Cache Database setup rails db:prepare rails db:migrate
- Start the development server ./bin/dev
- Visit the application Open http://localhost:3000 in your browser API Key Setup OpenWeather API
- Sign up at https://openweathermap.org/api
- Subscribe to the "One Call API 3.0" plan
- Copy your API key to the .env file Google Places API
- Visit https://console.cloud.google.com
- Enable the Places API
- Create an API key with Places API restrictions
- Copy your API key to the .env file Development Running Tests
rails test
bundle exec rubocop -A
- User Input → Address autocomplete via Google Places API
- Location Selection → Coordinate extraction and validation
- Weather Request → OpenWeather API call with caching
- Data Processing → Weather data formatting and validation
- UI Update → Component rendering with Turbo Streams
