Travel Companion allows you to manage every aspect of your travel, from transportation and lodging to daily activities and checklists. It features real-time collaboration, budget tracking, and offline support, making it the perfect tool for solo travelers and groups alike.
- Trip Management: Create detailed itineraries with drag-and-drop organization using the timeline view.
- Collaborative Planning: Share trips with friends and family with granular permission controls (View/Edit).
- Budget & Expenses: Track spending in real-time with multi-currency support and categorical breakdowns.
- Documents: Store and link PDF tickets, reservations, and files directly to trip items.
- Offline Mode: Access your full itinerary and saved documents without an internet connection.
- Brainstorming: A collaborative canvas for ideas, notes, and locations before the plan is finalized.
- Calendar: Visual overview of all your upcoming trips.
- Mobile Friendly: Fully responsive design with a dedicated mobile experience, including map integration.
- Frontend: React, Tailwind CSS, Zustand
- Backend: Node.js, Express
- Database: SQLite
- Infrastructure: Docker
- Clone the repository.
- Configure your environment variables in
docker-compose.ymlor create an.envfile. - Run the start script:
The application will be accessible at
./start.sh
http://localhost:5000.
- Install dependencies:
npm run install-all
- Create a
.envfile in the server directory (or root, depending on setup) with the required variables. - Start the development server:
npm run dev
- Frontend:
http://localhost:3000 - Backend:
http://localhost:5000
- Frontend:
To run the application, you must configure the following environment variables.
| Variable | Description | Default | Required |
|---|---|---|---|
NODE_ENV |
Environment mode (production or development) |
development |
No |
PORT |
Port for the backend server | 5000 |
No |
JWT_SECRET |
Secret key for session signing | - | Yes |
FRONTEND_URL |
Public URL of the app (used in emails) | - | Yes |
Required for sending invitations and trip updates.
| Variable | Description | Example |
|---|---|---|
EMAIL_HOST |
SMTP server hostname | smtp.gmail.com |
EMAIL_PORT |
SMTP port | 587 or 465 |
EMAIL_USER |
SMTP username | user@gmail.com |
EMAIL_PASS |
SMTP password or App Password | secret |
EMAIL_FROM |
Sender address | Traveler <noreply@app.com> |
EMAIL_QUEUE_DURATION_MS |
Batch email notification delay (ms) | 3600000 (1hr) |
EMAIL_PROCESS_INTERVAL_MS |
Notification processing interval (ms) | 300000 (5min) |
These variables must be available at build time (or runtime for Docker).
| Variable | Description | Required |
|---|---|---|
VITE_MAPBOX_TOKEN |
Mapbox public token for map views | Yes (if using maps) |
VITE_API_URL |
Backend API URL (for local dev) | No (defaults to /api) |
MIT License.



