Travel App is a comprehensive web application for planning and managing travel itineraries. The application allows users to create travel routes, view statistics, manage their profiles, and interact with other users.
- π Registration and authentication
βοΈ Create and manage travel itineraries- π View travel details (duration, budget, points of interest)
- π³ Payment integration (Stripe)
- πΈ Upload travel images
- π¨ Personal profile management
- π Dashboard with analytics
- π₯ User management
- πΊοΈ Travel management
- π Charts for user growth and trip trends by travel style
- π View detailed statistics
- React 19 - UI library
- React Router v7 - routing
- TypeScript - type safety
- Tailwind CSS - styling
- Vite - build tool
- Appwrite - BaaS platform (authentication, database, file storage)
- Node.js - runtime
- Syncfusion Charts - graphs and diagrams
- Syncfusion Grid/Pager - tables and pagination
- Stripe - payments
- Sentry - error monitoring
travel-app/
βββ app/
β βββ routes/
β β βββ admin/
β β β βββ dashboard.tsx # Admin dashboard with analytics
β β β βββ trips.tsx # Trip management
β β β βββ all-users.tsx # User list
β β β βββ create-trip.tsx # Create new trip
β β βββ user/
β β β βββ profile.tsx # User profile
β β β βββ my-trips.tsx # My trips
β β βββ home.tsx # Homepage
β βββ appwrite/
β β βββ auth.ts # Authentication functions
β β βββ trips.ts # Trip operations
β β βββ dashboard.ts # Analytics
β β βββ client.ts # Appwrite config
β βββ components/
β β βββ Header.tsx # Header component
β β βββ TripCard.tsx # Trip card component
β β βββ StatsCard.tsx # Stats card component
β β βββ ...
β βββ lib/
β β βββ utils.ts # Utilities (parsing, formatting)
β βββ constants/
β β βββ index.ts # Constants and chart configs
β βββ hooks/
β β βββ useSyncfusionComponent.ts # Hook for lazy loading Syncfusion
β βββ index.d.ts # TypeScript types
βββ public/
βββ .env.example
βββ package.json
- Node.js 18+
- npm or yarn
- Appwrite account
- Stripe account (optional)
- Clone the repository:
git clone <repo-url>
cd travel-app- Install dependencies:
npm install- Create
.envfile:
cp .env.example .env- Fill in environment variables:
VITE_APPWRITE_ENDPOINT=https://your-appwrite-endpoint
VITE_APPWRITE_PROJECT_ID=your-project-id
VITE_APPWRITE_API_KEY=your-api-key
VITE_APPWRITE_DATABASE_ID=your-database-id
VITE_APPWRITE_USERS_COLLECTION_ID=your-users-collection
VITE_APPWRITE_TRIPS_COLLECTION_ID=your-trips-collection
VITE_STRIPE_PUBLIC_KEY=your-stripe-key
VITE_SENTRY_DSN=your-sentry-dsn- Start the development server:
npm run devThe application will be available at http://localhost:5173
{
$id: string,
name: string,
email: string,
imageUrl: string,
status: "admin" | "user",
joinedAt: string,
itineraryCount: number
}{
$id: string,
userId: string,
tripDetail: string (JSON), // Contains: name, description, interests, travelStyle, duration, budget, estimatedPrice, itinerary, payment_link
imageUrls: string[],
createdAt: string
}- Total Users - total users + monthly statistics
- Total Trips - total trips + monthly statistics
- Active Users - active administrators
- User Growth Chart - user growth over days
- Trip Trends Chart - trip distribution by travel style
- Create new trips with AI generation
- Edit and delete trips
- Pagination (6 items per page)
- Filter by various parameters
- View user list
- Filter and search
- Delete users
- β
Invalid JSON parsing in
tripDetail - β Syncfusion PagerComponent pagination
- β Syncfusion Charts loading
- β
Handling
undefinedvalues in chart configs - β Data filtering and grouping by travel style
GET /databases/{databaseId}/collections/{usersCollectionId}/documents- list usersPOST /account/sessions/email- loginPOST /account- register
GET /databases/{databaseId}/collections/{tripsCollectionId}/documents- list tripsPOST /databases/{databaseId}/collections/{tripsCollectionId}/documents- create tripDELETE /databases/{databaseId}/collections/{tripsCollectionId}/documents/{tripId}- delete trip
npm run build
vercel deploydocker build -t travel-app .
docker run -p 3000:3000 travel-appThe containerized application can be deployed to:
- AWS ECS
- Google Cloud Run
- Azure Container Apps
- Digital Ocean App Platform
- Fly.io
- Railway
npm run dev # Start development server
npm run build # Build for production
npm run preview # Preview production build
npm run type-check # Run TypeScript type checking- Environment variables are used for sensitive data
- Appwrite handles authentication securely
- CORS is configured for production
- Stripe integration follows PCI compliance
MIT License - Feel free to use this project
- Fork the repository
- Create a 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
For questions and suggestions, please open an Issue on GitHub or contact the developer.
Version: 1.0.0
Last Updated: November 17, 2025
Author: Vladyslav
Repository: https://github.com/Facelles