"I can't draw, but I can code." - A digital alternative to a traditional travel scrapbook
After spending an incredible semester abroad exploring Europe, I wanted a way to preserve and share my memories. While others might create beautiful hand-drawn scrapbooks, I decided to build something that matched my skills - an interactive travel map that brings my journey to life through code.
This full-stack application transforms my travel experiences into an interactive visual story, plotting each destination on a map with photos, memories, and ratings.
- ** Interactive Map**: Click on any pin to explore memories from that location
- ** Photo Integration**: Each location includes photos from the trip
- ** Personal Ratings**: Rate each destination (1-10 scale)
- ** Travel Notes**: Add comments and descriptions for each place
- ** Visit Dates**: Track when each adventure happened
- ** Add New Memories**: Double-click anywhere on the map to add a new entry
- ** Visual Design**: Clean, modern interface with custom markers
Watch the demo video to see the app in action and hear about my semester abroad journey!
- React - UI framework
- Mapbox GL / React Map GL - Interactive mapping
- React Hook Form - Form handling
- Node.js + Express - REST API server
- MongoDB + Mongoose - Database for storing travel memories
- CORS - Cross-origin resource sharing
- Node.js (v14 or higher)
- MongoDB (local or MongoDB Atlas)
- Mapbox account for API token (free tier available)
-
Clone the repository
git clone https://github.com/eden-byte/travel-log.git cd travel-map -
Set up the backend
cd server npm installCreate a
.envfile in the server directory:DATABASE_URL=mongodb://localhost:27017/travel-log CORS_ORIGIN=http://localhost:3000 PORT=1337 NODE_ENV=development
Start the backend server:
npm start
-
Set up the frontend
In a new terminal:
cd client npm installCreate a
.envfile in the client directory:REACT_APP_MAPBOX_TOKEN=your_mapbox_token_here
Start the React app:
npm start
-
Open your browser
Navigate to
http://localhost:3000to see the map!
- Double-click anywhere on the map
- Fill in the details:
- Title (e.g., "Weekend in Barcelona")
- Rating (1-10)
- Comments & Description
- Visit Date
- Image URL (use Imgur for easy image hosting)
- Click "Create Entry"
- Click on any marker to see details
- Photos, ratings, and notes will appear in a popup
- Close the popup by clicking the X
For best results, use Imgur:
- Upload your photo to Imgur (no account needed)
- Right-click the image → "Copy image address"
- Paste the direct link in the Image URL field
travel-map/
├── client/ # React frontend
│ ├── src/
│ │ ├── App.js # Main map component
│ │ ├── LogEntryForm.js # Form for new entries
│ │ ├── Api.js # API communication
│ │ └── index.css # Styling
│ └── package.json
│
├── server/ # Express backend
│ ├── api/
│ │ └── logs.js # API routes
│ ├── models/
│ │ └── LogEntry.js # MongoDB schema
│ ├── src/
│ │ ├── index.js # Server entry point
│ │ └── middlewares.js # Express middleware
│ └── package.json
│
└── README.md
- Photo galleries (multiple photos per location)
- Trip statistics (total countries, cities, distance traveled)
- Share specific trips via public links
- Search and filter functionality
- Trip route visualization (connect the dots)
- Export memories as PDF/photo book
- Categories/tags for different types of activities
As someone who loves to travel but lacks artistic talent for traditional scrapbooking, I wanted to create something that:
- Preserves memories in a interactive, modern way
- Allows me to share my experiences with friends and family
- Combines my passion for coding with my travel experiences
- Creates something unique that reflects my skills and journey
This project is more than just a map - it's my digital story of an unforgettable semester abroad.
While this is a personal project documenting my travels, I'd love to hear your ideas! Feel free to:
- Fork the project for your own travel map
- Suggest features via issues
- Share how you've customized it for your journey
MIT License - feel free to use this for your own travel memories!
- Thanks to my study abroad program for the incredible opportunity
- All the friends who made these memories worth documenting
- The open-source community for the amazing tools that made this possible