A premium support portal for a fake travel company, simulating Booking.com's support system. Built with Next.js 14, TypeScript, Prisma, Tailwind CSS, and Shadcn/ui.
- Premium, luxury SaaS-style hero section
- Beautiful glassmorphism design with gradients
- Responsive design with modern animations
- Statistics and feature highlights
- Comprehensive form with all required fields:
- Name and Email
- Booking Reference
- Category dropdown (Payment, Cancellation, Change Dates, Other)
- Description textarea
- Optional file upload area
- Form validation with Zod
- Success/error toast notifications
- Beautiful glassmorphism UI
- Basic authentication (admin/admin123)
- View all tickets in a clean table format
- Filter tickets by category or status
- Search functionality
- Click to view full ticket details
- Mark tickets as resolved or pending
- Real-time statistics dashboard
- SQLite database with Prisma ORM
- Ticket model with all required fields
- Automatic timestamps and status management
- Framework: Next.js 14 (App Router)
- Language: TypeScript
- Database: SQLite with Prisma ORM
- Styling: Tailwind CSS
- UI Components: Shadcn/ui
- Icons: Lucide React
- Forms: React Hook Form + Zod validation
- Notifications: Sonner toast
- Authentication: Basic client-side auth (demo)
- Node.js 18+
- npm or yarn
-
Clone the repository
git clone <repository-url> cd ticket
-
Install dependencies
npm install
-
Set up the database
npx prisma generate npx prisma db push
-
Start the development server
npm run dev
-
Open your browser Navigate to http://localhost:3000
src/
├── app/
│ ├── api/
│ │ └── tickets/
│ │ ├── route.ts # API routes for tickets
│ │ └── [id]/route.ts # Individual ticket operations
│ ├── admin/
│ │ └── page.tsx # Admin dashboard
│ ├── submit/
│ │ └── page.tsx # Submit ticket form
│ ├── globals.css # Global styles
│ ├── layout.tsx # Root layout
│ ├── loading.tsx # Loading component
│ └── page.tsx # Home page
├── components/
│ ├── ui/ # Shadcn/ui components
│ └── navigation.tsx # Navigation component
├── lib/
│ ├── prisma.ts # Prisma client
│ └── utils.ts # Utility functions
└── prisma/
└── schema.prisma # Database schema
- Semi-transparent backgrounds with backdrop blur
- Subtle borders and shadows
- Gradient overlays and backgrounds
- Gradient buttons with hover effects
- Smooth animations and transitions
- Modern card designs with shadows
- Responsive grid layouts
- Blue to purple gradients
- Neutral grays for text
- Semantic colors for status indicators
- Consistent spacing and typography
Submit a new support ticket
{
"name": "John Doe",
"email": "john@example.com",
"reference": "BK123456789",
"category": "Payment",
"description": "Issue description..."
}Fetch all tickets (admin only)
Update ticket status
{
"status": "resolved"
}Get individual ticket details
model Ticket {
id String @id @default(cuid())
name String
email String
reference String
category String
description String
status String @default("pending")
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}The admin dashboard uses basic client-side authentication for demo purposes:
- Username:
admin - Password:
admin123
In a production environment, you should implement proper authentication with NextAuth.js or similar.
The application is fully responsive and works on:
- Desktop (1200px+)
- Tablet (768px - 1199px)
- Mobile (< 768px)
✅ Home page with premium hero section
✅ Submit ticket form with all required fields
✅ Admin dashboard with authentication
✅ Database integration with Prisma
✅ Beautiful UI with glassmorphism effects
✅ Mobile responsive design
✅ Form validation and error handling
✅ Toast notifications
✅ Search and filter functionality
✅ Ticket status management
This application can be deployed to:
- Vercel (recommended for Next.js)
- Netlify
- Railway
- Any platform supporting Node.js
Create a .env file:
DATABASE_URL="file:./dev.db"- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is open source and available under the MIT License.
Visit the live demo to see the application in action:
- Home Page: Beautiful landing page with hero section
- Submit Ticket: Form with validation and file upload
- Admin Dashboard: Login with
admin/admin123to manage tickets
Built with ❤️ using Next.js, TypeScript, and modern web technologies.