Skip to content

Latest commit

Β 

History

38 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Excursion Explorer preview

🌍 Excursion Explorer

A modern and responsive travel discovery web application that helps users explore destinations worldwide using live weather data, interactive maps, destination information, travel tips, and global search.


πŸ“– Project Overview

Excursion Explorer is a modern front-end travel application designed to help users discover destinations around the world through real-time information and interactive exploration.

The application combines multiple third-party APIs to provide live weather, local time, country information, nearby attractions, destination summaries, interactive maps, and personalized travel recommendations through a modern, responsive interface.

The project evolved from a simple featured-destinations page into a modular travel explorer supporting worldwide destination search, dynamic content updates, favorites management, responsive layouts, and reusable JavaScript modules.


🎯 Motivation

Excursion Explorer was built to strengthen my front-end development skills by creating a real-world application that integrates multiple APIs, asynchronous JavaScript, interactive maps, and responsive UI design. The project demonstrates how modular architecture and reusable components can be combined to deliver a polished user experience.


🌟 Project Highlights

  • Built a fully responsive travel discovery web application
  • Implemented global destination search using OpenStreetMap geocoding
  • Integrated multiple external APIs to display live travel information
  • Added interactive destination maps using Leaflet and OpenStreetMap
  • Secured third-party API keys using domain-restricted access
  • Developed modular JavaScript architecture using ES6 modules
  • Implemented destination favorites with Local Storage
  • Created reusable travel recommendation components
  • Added responsive dark and light themes
  • Improved accessibility using semantic HTML and ARIA attributes
  • Managed development using Git branching and feature-based workflows
  • Deployed using GitHub Pages

🌐 Live Demo

Explore the live website here:

πŸ‘‰ https://amirabenameur3.github.io/Excursion-explorer/

Deployed with GitHub Pages


✨ Features

🌍 Destination Discovery

  • Featured destinations
  • Global destination search
  • Destination summaries
  • Interactive destination cards
  • Destination modal
  • Recently viewed destinations
  • Favorite destinations

🌦 Live Travel Information

  • Real-time weather
  • Local time
  • Country information
  • Interactive maps
  • Nearby attractions
  • Dynamic travel tips

🧳 Travel Tips

  • Best time to visit
  • Seasonal recommendations
  • Top activities
  • Packing reminders
  • Nearby attractions

⚑ Interactive Features

  • Global destination search
  • Live weather updates
  • Dynamic destination details
  • Interactive Leaflet maps
  • Responsive navigation
  • Dark / Light mode
  • Destination filtering
  • Favorite destinations
  • Recently viewed history
  • Modal windows
  • Smooth scrolling

β™Ώ Accessibility Features

  • Semantic HTML
  • ARIA labels
  • Keyboard navigation
  • Accessible modal dialogs
  • Focus management
  • Responsive controls
  • Screen-reader friendly icons

πŸ“± Responsive Design

The application is fully responsive across:

  • Desktop
  • Tablet
  • Mobile devices

Built using:

  • CSS Grid
  • Flexbox
  • Media Queries
  • Responsive typography
  • Adaptive layouts

πŸ“Έ Screenshots

Home


Featured Destinations


Destination Details


Travel Tips


Global Search


Destination Modal


Mobile Experience


🎬 Demo


πŸ”Œ APIs Used

  • OpenWeather API
  • Geoapify Places API
  • REST Countries API v5
  • OpenStreetMap Nominatim API
  • Wikipedia REST API
  • Pexels API
  • Leaflet.js

🧰 Technologies Used

  • HTML5
  • CSS3
  • JavaScript (ES6 Modules)
  • Leaflet.js
  • OpenStreetMap
  • RESTful APIs
  • Local Storage
  • CSS Grid
  • Flexbox
  • CSS Variables
  • Lucide Icons
  • Git & GitHub
  • GitHub Pages

πŸ“ Project Structure

Excursion-explorer
β”‚
β”œβ”€β”€ docs/
β”‚
β”œβ”€β”€ resources/
β”‚   β”œβ”€β”€ css/
β”‚   β”‚   └── styles.css
β”‚   β”‚
β”‚   β”œβ”€β”€ images/
β”‚   β”‚
β”‚   └── js/
β”‚       β”œβ”€β”€ data/
β”‚       β”œβ”€β”€ services/
β”‚       β”‚   β”œβ”€β”€ api.js
β”‚       β”‚   β”œβ”€β”€ config.js
β”‚       β”‚   β”œβ”€β”€ geoapify.js
β”‚       β”‚   β”œβ”€β”€ photos.js
β”‚       β”‚   └── ...
β”‚       β”‚
β”‚       β”œβ”€β”€ main.js
β”‚       β”œβ”€β”€ modal.js
β”‚       β”œβ”€β”€ search.js
β”‚       └── ui.js
β”‚
β”œβ”€β”€ contact.html
β”œβ”€β”€ favicon-excursion-explorer.ico
β”œβ”€β”€ index.html
β”œβ”€β”€ privacy.html
β”œβ”€β”€ README.md
└── terms.html

πŸ”‘ API Configuration

This project uses multiple third-party APIs.

Create a config.js file inside:

resources/js/services/

and add your API keys:

export const OPENWEATHER_API_KEY = "YOUR_KEY";
export const PEXELS_API_KEY = "YOUR_KEY";
export const GEOAPIFY_API_KEY = "YOUR_KEY";
export const REST_COUNTRIES_API_KEY = "YOUR_KEY";

⚠️ Security Note: As this is a client-side portfolio project, API keys are required by the browser and are therefore publicly accessible. To reduce the risk of misuse, all keys are secured using provider-specific restrictions (such as allowed origins).

For security, restrict your API keys using the security mechanisms recommended by each API provider (such as allowed origins) and never expose production keys unnecessarily.


🧠 What I Learned

Throughout this project I strengthened my skills in:

  • Working with multiple REST APIs
  • Asynchronous JavaScript (async/await)
  • ES6 module architecture
  • State management
  • Responsive web design
  • Accessibility best practices
  • Local Storage
  • Interactive maps with Leaflet
  • API error handling
  • Front-end performance optimization
  • Git branching workflows
  • Refactoring and modular code organization
  • Securing API keys with origin restrictions

πŸš€ Future Improvements

  • AI-powered destination recommendations
  • Trip itinerary planner
  • User accounts
  • Progressive Web App (PWA)
  • Offline support
  • Recently searched destinations sync
  • Smarter nearby attraction recommendations using multiple travel data sources

🧩 Challenges & Solutions

Challenge

Managing multiple APIs while keeping the interface responsive and maintaining consistent destination data.

Solution

Implemented modular service layers, reusable helper functions, fallback strategies, and asynchronous data handling to keep the application reliable.


Challenge

Creating a scalable architecture as the project expanded.

Solution

Refactored the application into reusable ES6 modules separating UI, services, utilities, and data management.


Challenge

Providing a consistent experience across desktop and mobile devices.

Solution

Designed adaptive layouts using CSS Grid, Flexbox, responsive typography, and mobile-first refinements.


πŸ‘©β€πŸ’» Author

Amira Ben Ameur

PhD Researcher in Transportation Engineering | Front-End Developer

GitHub: https://github.com/amirabenameur3


⭐ Support

If you enjoyed this project, consider giving it a ⭐ Star on GitHub!

About

A responsive travel discovery web application featuring global destination search, live weather, interactive maps, nearby attractions, country information, travel tips, and real-time destination insights powered by multiple APIs.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages