Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

504 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

✈️ travellersmeet

Meet verified travellers. Make real connections. 🌍

Contributors Stars Forks Pull Requests Issues License

Privacy-first. Verified-only. Connection-focused.

Your all-in-one platform for connecting with verified travellers heading to the same destination. Built with Next.js, TypeScript, and modern web technologies for a seamless, secure experience.

Getting Started β€’ Documentation β€’ Contributing β€’ Tech Stack


πŸ“– About

travellersmeet helps solo travellers find and connect with others heading to the same destination around the same dates. Upload proof-of-travel, get verified, and discover other verified travellers in your trip window.

Why travellersmeet?

  • βœ… Verified Travellers Only β€” Upload travel tickets to get verified. Only verified users can view other profiles.
  • πŸ”’ Privacy-First β€” Your data stays secure. Visibility limited to matching destination/date windows.
  • 🎯 Smart Matching β€” Find travellers with similar dates and destinations automatically.
  • πŸš€ Modern Tech Stack β€” Built with Next.js 14, TypeScript, Prisma, and PostgreSQL.
  • πŸ“± Progressive Web App β€” Install on any device with offline support.
  • 🌐 Open Source β€” Community-driven development. Contributions welcome!

πŸš€ Installation

Prerequisites

Before you begin, ensure you have:

  • Node.js 18.18+ and npm 9+
  • PostgreSQL database (local or cloud)
  • Git for version control

Quick Start

1️⃣ Clone the repository

git clone https://github.com/singh-odyssey/travellers.git
cd travellers

2️⃣ Install dependencies

npm install

3️⃣ Configure environment

Create a .env file in the project root:

DATABASE_URL="postgresql://USER:PASSWORD@HOST:PORT/DBNAME?schema=public"
NEXTAUTH_SECRET="generate-a-strong-secret"
NEXTAUTH_URL="http://localhost:3000"

# Optional: Google Maps API (for route visualization)
NEXT_PUBLIC_GOOGLE_MAPS_API_KEY="your-google-maps-key"

πŸ’‘ Tip: Generate a secure secret with npm run generate:secret or use openssl rand -base64 32

4️⃣ Set up the database

npm run db:push

5️⃣ Start the development server

npm run dev

Visit http://localhost:3000 πŸŽ‰


πŸ“š How It Works

  1. Sign Up β€” Create an account with email and password
  2. Upload Ticket β€” Submit your travel proof (ticket, booking confirmation)
  3. Get Verified β€” Admin verification process (manual for now, automated later)
  4. Match & Connect β€” Discover travellers with matching destinations and dates
  5. Chat & Plan β€” Connect with verified travellers (messaging coming soon!)

πŸ› οΈ Tech Stack

Core Technologies

Technology Purpose
Next.js 14 (App Router) React framework with SSR & file-based routing
TypeScript Type-safe development
React 18 UI library with modern features
Tailwind CSS Utility-first CSS framework

Backend & Database

Technology Purpose
NextAuth v5 Authentication with credentials provider
Prisma ORM Type-safe database queries & migrations
PostgreSQL Relational database
bcryptjs Secure password hashing

Developer Tools

Technology Purpose
Vitest Unit testing framework
ESLint Code linting
Prettier Code formatting (via ESLint)
Docker Containerized development

Deployment

Technology Purpose
Vercel Production hosting
Neon/Supabase PostgreSQL hosting

πŸ“‚ Project Structure

travellers/
β”œβ”€β”€ πŸ“ src/
β”‚   β”œβ”€β”€ app/              # Next.js app router pages & API routes
β”‚   β”‚   β”œβ”€β”€ (auth)/       # Authentication pages (signin, signup)
β”‚   β”‚   β”œβ”€β”€ api/          # Backend API endpoints
β”‚   β”‚   β”œβ”€β”€ contact/      # contact page
β”‚   β”‚   β”œβ”€β”€ dashboard/    # User dashboard
β”‚   β”‚   β”œβ”€β”€ routes/       # Route management & visualization
β”‚   β”‚   └── upload/       # Ticket upload flow
β”‚   β”œβ”€β”€ components/       # React components
β”‚   β”œβ”€β”€ lib/              # Utility libraries (auth, prisma, etc.)
β”‚   β”œβ”€β”€ state/            # State management
β”‚   └── styles/           # Global styles
β”œβ”€β”€ πŸ“ prisma/            # Database schema & migrations
β”œβ”€β”€ πŸ“ public/            # Static assets
β”œβ”€β”€ πŸ“ docs/              # Documentation
└── πŸ“ scripts/           # Utility scripts


API Endpoints

The current backend is organized around the route handlers in the src/app/api directory. The following table reflects the endpoints that are implemented in the codebase today.

Authentication & Session

Method Endpoint Description
GET / POST /api/auth/[...nextauth] NextAuth catch-all handler used for credential sign-in and session callbacks.
POST /api/auth/signup Register a new user, hash the password, create an OTP, and send a verification email.
POST /api/auth/verify-otp Verify a user's email using the 6-digit OTP they received.
POST /api/auth/resend-otp Generate and send a fresh OTP for an unverified account.
POST /api/auth/forgot-password Send a password reset email with a one-time token.
POST /api/auth/reset-password Reset the user's password using a valid reset token.
PUT /api/auth/change-password Update the currently authenticated user's password.
GET / POST /api/auth/signin Re-export of the NextAuth route for the sign-in flow.

User Profile

Method Endpoint Description
PATCH /api/user/profile Update profile fields such as name, bio, and location for the current authenticated user.

Tickets

Method Endpoint Description
POST /api/tickets Create a ticket submission for the authenticated user. Expects destination, departureDate, and a file input.
GET /api/tickets List the authenticated user's tickets in reverse chronological order.

Admin Ticket Review

Method Endpoint Description
GET /api/admin/tickets List tickets for admin review. Supports an optional status query parameter and requires an ADMIN role.
GET /api/admin/tickets/[id] Fetch one ticket record for admin inspection.
PATCH /api/admin/tickets/[id] Update a ticket's verification status to VERIFIED or REJECTED.

Saved Routes

Method Endpoint Description
GET /api/routes Retrieve all saved routes for the authenticated user, ordered by most recent update.
POST /api/routes Create a new route or update an existing route when an id is supplied.
DELETE /api/routes?id=<routeId> Delete a saved route owned by the current user.
GET /api/routes/[id] Retrieve a single route by ID, restricted to the authenticated owner.

Match Discovery & AI Chat

Method Endpoint Description
GET /api/matches?destination=<name>&date=<YYYY-MM-DD> Find verified travellers headed to the same destination within a Β±3 day window, excluding the current user.
POST /api/chat Send a user message to the Gemini-powered TravelBox AI assistant. Expects a JSON body with message.

Note: The /api/chat route requires GEMINI_API_KEY to be configured in the environment.

🀝 Contributing

We welcome contributions from developers of all skill levels!

Contribution Workflow

  1. Fork the repository
  2. Clone your fork: git clone https://github.com/your-username/travellers.git
  3. Create a branch: git checkout -b feat/amazing-feature
  4. Make your changes and commit: git commit -m "feat: add amazing feature"
  5. Push to branch: git push origin feat/amazing-feature
  6. Submit a Pull Request with a detailed description

Development Guidelines

  • πŸ“ Write clear commit messages (Conventional Commits)
  • βœ… Add tests for new features
  • πŸ“– Update documentation as needed
  • 🧹 Run npm run lint before committing
  • πŸ” Keep PRs focused and small

πŸ‘‰ Read the full guide: CONTRIBUTING.md


πŸ“‘ Documentation


πŸ‘₯ Contributors

We appreciate all contributions from our amazing community! πŸŽ‰

Made with contrib.rocks

Want to be featured here? Check out our Contributing Guide!


πŸ“Š Project Statistics

GitHub commit activity GitHub last commit GitHub repo size Lines of code


🌟 Community

Join our community and stay connected!

Show Your Support

If you find this project helpful, please give it a ⭐️ on GitHub! It helps others discover the project.


πŸ“„ License

This project is licensed under the MIT License β€” see the LICENSE file for details.

MIT License

Copyright (c) 2025 travellersmeet contributors

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files...

πŸ™ Acknowledgements

Built with ❀️ by the community using:


πŸš€ Ready to connect travellers worldwide?

Get Started β€’ View Demo β€’ Report Bug

Made with πŸ’™ by singh-odyssey and contributors


⭐️ Star us on GitHub β€” it helps! ⭐️

About

A website where solo-travellers can meet other travellers , travelling to same destination

Resources

Code of conduct

Contributing

Stars

12 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages