A futuristic & playful travel agency web application built with Next.js, Tailwind CSS, and MongoDB. Features smooth animations, modern UI design, and comprehensive travel booking functionality.
π Repository: https://github.com/Phylan001/kujatwende
- About The Project
- Key Features
- Tech Stack
- Getting Started
- Project Structure
- API Documentation
- Database Models
- Deployment
- Contributing
- Timeline & Pricing
- Known Limitations
- License
- Contact
Kuja Twende is a modern travel agency web application designed as a learning project that showcases full-stack development skills. The application allows users to browse destinations, make bookings, leave reviews, and provides administrators with comprehensive management tools.
- Student-friendly: Clean, readable, and well-documented code
- Modern UI: Futuristic design with smooth animations and micro-interactions
- Responsive: Mobile-first approach with Tailwind CSS
- Educational: Focus on learning core web development concepts
- π Landing Page - Animated hero section with featured destinations
- πΊοΈ Destinations - Browse, search, and filter travel destinations
- π Booking System - Complete booking flow with form validation
- β Reviews - User reviews and ratings for destinations
- π€ User Authentication - Secure signup/login with JWT
- π Admin Dashboard - Comprehensive management interface
- π¨ Modern Design - Glassmorphism cards and neon gradients
- π Smooth Animations - GSAP, AOS, and Framer Motion
- π± Responsive Design - Mobile-first with Tailwind CSS
- π Search & Filter - Advanced destination filtering
- π« Micro-interactions - Hover effects and transitions
- π³ Mock Payments - Payment confirmation flow (no real gateway)
- πΈ Image Upload - Local or cloud-based image management
- Framework: Next.js 13+ (App Router)
- Styling: Tailwind CSS
- Animations: GSAP, AOS, Framer Motion
- Fonts: Google Fonts (Fredoka, Baloo 2, Pacifico)
- Runtime: Node.js
- Database: MongoDB with Mongoose ODM
- Authentication: bcrypt + JWT
- API: Next.js API Routes
- Linting: ESLint
- Formatting: Prettier
- Version Control: Git
- Node.js 18+ (LTS recommended)
- npm, yarn, or pnpm
- MongoDB Atlas account (or local MongoDB installation)
- Git
-
Clone the repository
git clone https://github.com/Phylan001/kujatwende.git cd kujatwende -
Install dependencies
npm install # or yarn install # or pnpm install
Create a .env.local file in the project root:
# Database
MONGODB_URI=mongodb+srv://<username>:<password>@cluster0.mongodb.net/kujatwende?retryWrites=true&w=majority
# Authentication
JWT_SECRET=your_super_secret_jwt_key_here_make_it_long_and_random
# Application
NEXT_PUBLIC_SITE_URL=http://localhost:3000
NODE_ENV=development
PORT=3000
# Optional: Image Upload (if using Cloudinary)
CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_API_KEY=your_api_key
CLOUDINARY_API_SECRET=your_api_secret-
Development mode
npm run dev
Visit
http://localhost:3000 -
Build for production
npm run build npm run start
-
Seed the database (optional)
npm run seed
kujatwende/
βββ app/ # Next.js App Router
β βββ api/ # API routes
β β βββ auth/ # Authentication endpoints
β β βββ destinations/ # Destinations CRUD
β β βββ bookings/ # Booking management
β β βββ reviews/ # Review system
β βββ destinations/ # Destination pages
β βββ bookings/ # Booking pages
β βββ dashboard/ # Admin dashboard
β βββ globals.css # Global styles
β βββ layout.tsx # Root layout
β βββ page.tsx # Homepage
βββ components/ # Reusable components
β βββ ui/ # Base UI components
β βββ forms/ # Form components
β βββ layout/ # Layout components
βββ lib/ # Utilities
β βββ db.js # Database connection
β βββ auth.js # Authentication helpers
β βββ utils.js # General utilities
βββ models/ # Mongoose models
β βββ User.js
β βββ Destination.js
β βββ Booking.js
β βββ Review.js
βββ scripts/ # Utility scripts
β βββ seed.js # Database seeding
βββ public/ # Static assets
βββ README.md
POST /api/auth/register- User registrationPOST /api/auth/login- User loginPOST /api/auth/logout- User logout
GET /api/destinations- List all destinationsGET /api/destinations/[id]- Get destination by IDPOST /api/destinations- Create destination (Admin)PUT /api/destinations/[id]- Update destination (Admin)DELETE /api/destinations/[id]- Delete destination (Admin)
GET /api/bookings- List user bookingsPOST /api/bookings- Create new bookingPUT /api/bookings/[id]- Update bookingDELETE /api/bookings/[id]- Cancel booking
GET /api/reviews/[destinationId]- Get reviews for destinationPOST /api/reviews- Create reviewDELETE /api/reviews/[id]- Delete review
{
name: String (required),
email: String (required, unique),
passwordHash: String (required),
role: String (enum: ["user", "admin"], default: "user"),
timestamps: true
}{
title: String,
slug: String (unique, indexed),
description: String,
location: String,
price: Number,
durationDays: Number,
images: [String],
highlights: [String],
createdBy: ObjectId (ref: User),
timestamps: true
}{
user: ObjectId (ref: User),
destination: ObjectId (ref: Destination),
name: String,
email: String,
phone: String,
date: Date,
status: String (enum: ["pending", "confirmed", "cancelled"]),
notes: String,
timestamps: true
}{
user: ObjectId (ref: User),
destination: ObjectId (ref: Destination),
rating: Number (1-5),
comment: String,
timestamps: true
}- Vercel (Best for Next.js)
- Render
- Railway
- Heroku
- Push your code to GitHub
- Connect your repository to your chosen platform
- Set environment variables in the platform dashboard
- Deploy!
MONGODB_URI=your_production_mongodb_uri
JWT_SECRET=your_production_jwt_secret
NEXT_PUBLIC_SITE_URL=https://your-domain.com
NODE_ENV=production- Basic CRUD functionality
- Simple authentication
- Basic UI
- Estimated Cost: $200-$400 (KES 28,000-56,000)
- Advanced animations
- Admin dashboard
- Search & filtering
- Responsive design
- Estimated Cost: $500-$800 (KES 70,000-112,000)
Prices are estimates for educational/freelance projects
This is a student/learning project with the following limitations:
- Security: Basic JWT implementation (not production-grade)
- Payments: Mock payment system only
- Scaling: Designed for small user loads
- Testing: Limited automated testing
- Image Storage: Basic local storage (no CDN optimization)
Contributions are welcome! Please read our Contributing Guidelines for details on our code of conduct and the process for submitting pull requests.
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Phylan001 - Project Creator
- GitHub: @Phylan001
- Repository: https://github.com/Phylan001/kujatwende
Built with β€οΈ for learning and demonstration purposes
- GSAP - Amazing animation library
- AOS - Animate on scroll
- Framer Motion - React motion library
- Tailwind CSS - Utility-first CSS framework
- Google Fonts - Beautiful typography
- Next.js - React framework
- MongoDB - Document database
- Vercel - Deployment platform
If you found this project helpful, please consider giving it a β!