Vaporjawn/Travel-Logger
A beautiful, modern full-stack application to track and visualize your travel adventures on an interactive map. Built with React, TypeScript, Material UI, Node.js, Express, and MongoDB.
Full Stack Travel Logger π
A beautiful, modern full-stack application to track and visualize your travel adventures on an interactive map. Built with React, TypeScript, Material UI, Node.js, Express, and MongoDB.
π Documentation
- π Getting Started Guide - Step-by-step setup for new users
- π Quick Reference - Common commands and troubleshooting
- οΏ½ Troubleshooting Guide - Detailed solutions to common issues
- οΏ½π Deployment Guide - Production deployment checklist
- π Changelog - Version history and updates
- β Completion Summary - Project overview and accomplishments
β¨ Features
Frontend
- πΊοΈ Interactive Mapbox Integration - Smooth, responsive map experience
- π¨ Material UI Design System - Modern, accessible, dark-themed interface
- β‘ TypeScript & Vite - Type-safe, lightning-fast development
- π± Fully Responsive - Beautiful on desktop, tablet, and mobile
- π Geolocation Support - Find your current location instantly
- β¨ Smooth Animations - Polished UI transitions and interactions
Backend
- π Express.js REST API - Fast, scalable server
- π API Key Authentication - Secure endpoint protection
- π MongoDB Database - Flexible, scalable data storage
- π‘οΈ Rate Limiting - Protection against abuse
- π Helmet & CORS - Security best practices
β οΈ Error Handling - Comprehensive error management
π Quick Start
New to the project? Check out the π Getting Started Guide for a detailed, step-by-step setup tutorial.
Prerequisites
- Node.js (v18 or higher)
- MongoDB (local or Atlas)
- Mapbox account and API token (Get one free)
Installation
- Clone the repository
git clone https://github.com/Vaporjawn/Travel-Logger.git
cd Travel-Logger- Set up the server
cd server
npm install
cp .env.example .env
# Edit .env and add your MongoDB URL and API key
npm run dev- Set up the client (in a new terminal)
cd client
npm install
cp .env.example .env
# Edit .env and add your Mapbox token
npm run dev- Open your browser
- Frontend: http://localhost:5173
- Backend API: http://localhost:1337
πΈ Screenshots
Main Map View
- Interactive map with travel log markers
- Dark theme for comfortable viewing
- Responsive navigation controls
Add Travel Log
- Double-click to add new entries
- Beautiful form with validation
- Rating system (0-10 stars)
- Image URL support
View Details
- Click markers to see full details
- Visit dates and ratings
- Personal comments and descriptions
ποΈ Project Structure
Travel-Logger/
βββ client/ # React + TypeScript + Vite frontend
β βββ src/
β β βββ api/ # API client functions
β β βββ components/ # React components
β β βββ types/ # TypeScript definitions
β β βββ theme.ts # Material UI theme
β β βββ App.tsx # Main app component
β β βββ main.tsx # Entry point
β βββ public/
β βββ package.json
β
βββ server/ # Node.js + Express backend
β βββ src/
β β βββ api/ # API routes
β β βββ models/ # Mongoose models
β β βββ middlewares.js
β β βββ index.js # Server entry point
β βββ package.json
β
βββ README.md
π― Usage
Adding a Travel Log
- Double-click anywhere on the map
- Fill in the form:
- Title (required)
- Visit date (required)
- API key (required for security)
- Description (optional)
- Comments (optional)
- Image URL (optional)
- Rating 0-10 (optional)
- Click "Create Entry"
Viewing Logs
- Click any marker to view details
- Use navigation controls to zoom and pan
- Click the location button to center on your position
π§ Configuration
Server Environment Variables (.env)
NODE_ENV=development
PORT=1337
DATABASE_URL=mongodb://localhost:27017/travel-log
CORS_ORIGIN=http://localhost:5173
API_KEY=your_secret_api_key_hereClient Environment Variables (.env)
VITE_MAPBOX_TOKEN=your_mapbox_token_here
VITE_API_URL=http://localhost:1337π¨ Technology Stack
Frontend
- React 18 - UI library
- TypeScript - Type safety
- Vite - Build tool
- Material UI (MUI) - Component library
- Mapbox GL JS - Interactive maps
- React Hook Form - Form management
- Zod - Schema validation
- Axios - HTTP client
- date-fns - Date utilities
Backend
- Node.js - Runtime
- Express - Web framework
- MongoDB - Database
- Mongoose - ODM
- Helmet - Security headers
- CORS - Cross-origin resource sharing
- Morgan - HTTP logging
- express-rate-limit - Rate limiting
π API Endpoints
GET /api/logs
Get all travel log entries
- No authentication required
- Returns array of log entries
POST /api/logs
Create a new travel log entry
- Requires
X-API-KEYheader - Rate limited (1 request per 10 seconds)
- Request body:
{
"title": "Paris, France",
"description": "Amazing city!",
"comments": "Loved the Eiffel Tower",
"image": "https://example.com/image.jpg",
"rating": 9,
"latitude": 48.8566,
"longitude": 2.3522,
"visitDate": "2024-06-15"
}π οΈ Development
Running Tests
# Server tests
cd server
npm test
# Client tests
cd client
npm testBuilding for Production
# Build client
cd client
npm run build
# Start server in production mode
cd server
NODE_ENV=production npm startπ’ Deployment
Client Deployment (Vercel/Netlify)
- Build the client:
cd client && npm run build - Deploy the
distfolder - Set environment variables in your hosting platform
Server Deployment (Heroku/Railway/Render)
- Set environment variables
- Deploy from the
serverdirectory - Ensure MongoDB is accessible
π€ Contributing
We welcome contributions from developers of all skill levels! Travel Logger is a community-driven project that thrives on your input and contributions.
π Ways to Contribute
- π Report bugs - Help us identify and fix issues
- β¨ Suggest features - Share ideas for new functionality
- π Improve documentation - Help others get started
- π§ Write code - Implement new features or fix bugs
- π¨ Design & UX - Improve the user experience
- π§ͺ Testing - Help ensure quality and reliability
- π¬ Community support - Help other users in discussions
π Quick Start for Contributors
- Check out our Contributing Guide - Comprehensive guide to get you started
- Browse good first issues - Perfect for newcomers
- Join our Discussions - Ask questions and share ideas
- Read the Code of Conduct - Our community guidelines
π Contribution Process
- π΄ Fork the repository and clone it locally
- πΏ Create a branch for your feature (
git checkout -b feature/AmazingFeature) - π¨ Make your changes and write tests
- β Test thoroughly and ensure code quality
- π Document your changes and update relevant docs
- πΎ Commit with clear, descriptive messages
- π€ Push to your fork (
git push origin feature/AmazingFeature) - π Open a Pull Request with a detailed description
π‘ Need Ideas?
Check out our Roadmap to see what's planned and find something that interests you!
π License
This project is licensed under the MIT License - see the LICENSE file for details.
π Community & Support
π¬ Join the Community
- π Discussions - Ask questions, share ideas, get help
- π Issues - Report bugs, request features
- π Pull Requests - Contribute code and improvements
- π Documentation - Guides, roadmap, and governance
π Get Help
- π Getting Started Guide - Step-by-step setup
- π§ Troubleshooting - Common issues and solutions
- π¬ Community Support - Get help from other users
- π§ Direct Contact - victor.williams.dev@gmail.com
π Support the Project
If Travel Logger has been helpful to you, consider supporting its development:
- β Star the repository on GitHub
- π Sponsor the project to help with hosting and development
- οΏ½ Share it with friends and on social media
- π€ Contribute code, documentation, or ideas
- π¬ Help others in discussions and issues
οΏ½π Acknowledgments
- πΊοΈ Mapbox for the amazing mapping platform and excellent developer experience
- π¨ Material UI team for the exceptional React component library
- βοΈ React and Node.js communities for creating incredible open-source ecosystems
- π Our contributors and community members who help make Travel Logger better every day
- π Open source maintainers everywhere who inspire us to build better software
π§ Contact & Links
Victor Williams
- π GitHub: @Vaporjawn
- π§ Email: victor.williams.dev@gmail.com
- πΌ Project: Travel Logger
π Important Links
- πΊοΈ Roadmap - See what's planned for the future
- π Contributing Guide - How to contribute to the project
- π‘οΈ Security Policy - Report security vulnerabilities
- βοΈ License - MIT License
- π Code of Conduct - Community guidelines
- ποΈ Governance - Project governance and decision making
Happy Traveling! π