Immortalize Your Journey - A modern, full-stack travel journal application that lets you document adventures, preserve memories, and share your stories with the world.
- Global Trip Visualization: Explore all public trips on an interactive world map
- Journey Tracking: View travel routes and patterns across different users
- Location Clustering: Smart marker clustering for better map performance
- Real-time Filtering: Filter trips by region, year, and privacy settings
- Cloudinary Integration: High-performance image upload and optimization
- Photo Galleries: Multiple images per trip with beautiful galleries
- Cover Images: Stunning cover photos for each travel journal
- Responsive Design: Optimized for all devices and screen sizes
- Firebase Auth: Secure email/password authentication
- Privacy Controls: Choose between public and private journals
- User Dashboard: Personal space to manage all your trips
- Protected Routes: Secure access to user-specific features
- Dark/Light Theme: Toggle between themes with smooth transitions
- Framer Motion: Beautiful animations and micro-interactions
- Tailwind CSS: Modern, utility-first styling
- Responsive Design: Mobile-first approach with perfect desktop experience
- Autocomplete Search: Smart location search with suggestions
- GPS Coordinates: Precise location tracking for each trip
- Map Integration: Seamless integration with Leaflet maps
- Geographic Data: Rich location metadata and statistics
- Node.js (v18 or higher)
- npm or yarn
- Firebase Account (for backend services)
- Cloudinary Account (for image storage)
-
Clone the repository
git clone https://github.com/BeamlakTamirat/Momento.git cd momento -
Install dependencies
npm install
-
Environment Setup Create a
.envfile in the root directory:VITE_FIREBASE_API_KEY=your_firebase_api_key VITE_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com VITE_FIREBASE_PROJECT_ID=your_project_id VITE_FIREBASE_STORAGE_BUCKET=your_project.appspot.com VITE_FIREBASE_MESSAGING_SENDER_ID=your_sender_id VITE_FIREBASE_APP_ID=your_app_id VITE_CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name VITE_CLOUDINARY_UPLOAD_PRESET=your_upload_preset
-
Start development server
npm run dev
-
Open your browser Navigate to
http://localhost:5173
momento/
βββ public/ # Static assets
βββ src/
β βββ components/ # Reusable UI components
β β βββ Header.jsx # Navigation header
β β βββ TripCard.jsx # Trip display cards
β β βββ MapInput.jsx # Map interaction components
β β βββ LocationAutocomplete.jsx
β βββ context/ # React context providers
β β βββ AuthContext.jsx
β βββ lib/ # External service configurations
β β βββ firebase.js
β βββ pages/ # Application pages
β β βββ HomePage.jsx # Landing page
β β βββ DashboardPage.jsx
β β βββ CreateTripPage.jsx
β β βββ TripDetailPage.jsx
β β βββ AllTripsMap.jsx
β β βββ AuthPage.jsx
β βββ utils/ # Utility functions
β βββ App.jsx # Main application component
β βββ main.jsx # Application entry point
βββ package.json
βββ vite.config.js
βββ README.md
- React 19 - Latest React with concurrent features
- Vite - Lightning-fast build tool and dev server
- Tailwind CSS 4 - Utility-first CSS framework
- Framer Motion - Production-ready motion library
- React Router DOM - Client-side routing
- Firebase - Authentication, Firestore database, and hosting
- Cloudinary - Cloud image and video management
- Leaflet - Interactive maps with React Leaflet
- ESLint - Code linting and formatting
- Git - Version control
The application features a sophisticated world map that visualizes all travel data:
- Journey Mode: View travel routes and patterns
- Statistics Mode: Explore travel statistics and insights
- Real-time Updates: Live data synchronization
- Advanced Filtering: Filter by region, year, and privacy
Create rich travel journals with:
- Location Autocomplete: Smart location search
- Photo Upload: Drag-and-drop image uploads
- Gallery Support: Multiple images per trip
- Privacy Settings: Public or private journals
- Rich Descriptions: Detailed trip documentation
Modern, intuitive interface with:
- Smooth Animations: Framer Motion powered interactions
- Responsive Design: Perfect on all devices
- Loading States: Beautiful loading indicators
- Create a new Firebase project
- Enable Authentication (Email/Password)
- Create a Firestore database
- Configure security rules
- Add your Firebase config to environment variables
- Create a Cloudinary account
- Create an upload preset
- Configure environment variables
- Set up image transformations (optional)
I am welcome contributions! Please see our Contributing Guidelines for details.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Made with β€οΈ by Beamlak
Share your adventures with the world! π
