A modern service marketplace platform connecting service providers with customers across Indonesia. Built with Next.js, TypeScript, and Prisma.
- Service Discovery: Browse and search for services by category, location, and price
- Booking Management: Easy booking system with real-time status updates
- Secure Payments: Multiple payment options including QRIS, GoPay, and bank transfer
- Review System: Rate and review completed services
- Favorites: Save preferred service providers
- Service Management: Create and manage service offerings
- Booking Dashboard: Manage incoming bookings and schedules
- Earnings Tracking: Monitor revenue and payment history
- Profile Management: Build professional profiles with portfolios
- User Management: Comprehensive user verification and management
- Platform Analytics: Revenue tracking and performance metrics
- Dispute Resolution: Handle customer-provider disputes
- Content Management: Manage service categories and platform content
- Frontend: Next.js 15, React 19, TypeScript, Tailwind CSS
- Backend: Next.js API Routes, Prisma ORM
- Database: PostgreSQL
- Authentication: NextAuth.js with Google/Facebook OAuth
- Payments: Midtrans (Indonesian payment gateway)
- File Storage: AWS S3 (configurable)
- Deployment: Vercel (recommended)
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β Next.js App β β API Routes β β PostgreSQL β
β β β β β β
β - Dashboard βββββΊβ - Auth βββββΊβ - Users β
β - Service Pages β β - Services β β - Services β
β - Booking Flow β β - Bookings β β - Bookings β
β - Search β β - Payments β β - Payments β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
- Node.js 18+ and npm
- PostgreSQL database
- Midtrans account (for payments)
- Google/Facebook OAuth apps (optional)
git clone <repository-url>
cd jasaku
npm installFor testing purposes, you can use these demo accounts:
| Role | Password | Access | |
|---|---|---|---|
| Provider | [email protected] |
password |
Service provider dashboard |
| Seeker | [email protected] |
password |
Service seeker dashboard |
| Admin | [email protected] |
password |
Admin management panel |
Note: These are demo credentials for development/testing only. In production, implement proper user registration and authentication.
Copy .env.example to .env.local and configure:
# Database
DATABASE_URL="postgresql://username:password@localhost:5432/jasaku_db"
# Authentication
NEXTAUTH_URL="http://localhost:3000"
NEXTAUTH_SECRET="your-secret-key"
# OAuth (optional)
GOOGLE_CLIENT_ID="your-google-client-id"
GOOGLE_CLIENT_SECRET="your-google-client-secret"
# Payments (Midtrans)
MIDTRANS_SERVER_KEY="your-midtrans-server-key"
MIDTRANS_CLIENT_KEY="your-midtrans-client-key"# Generate Prisma client
npm run db:generate
# Push schema to database
npm run db:push
# Seed with sample data
npm run db:seed# Start development server
npm run dev
# Open http://localhost:3000# Open Prisma Studio (database GUI)
npm run db:studio
# Create new migration
npm run db:migrateGET/POST /api/auth/[...nextauth]- NextAuth.js endpoints
GET /api/users- List usersPOST /api/users- Create user
GET /api/services- List services with filteringPOST /api/services- Create service (providers only)
GET /api/bookings- List user's bookingsPOST /api/bookings- Create booking (seekers only)
GET /api/payments- List paymentsPOST /api/payments- Create paymentPUT /api/payments- Webhook for payment updates
GET /api/search- Search services with filters
GET /api/dashboard?type=provider|seeker|admin- Dashboard data
Built with shadcn/ui components:
- Cards, Buttons, Badges
- Forms, Inputs, Selects
- Dialogs, Modals, Sheets
- Tables, Tabs, Accordions
- Registration: Email + OAuth support
- Role Selection: Provider/Seeker/Admin
- Verification: Document upload for providers
- Session Management: JWT tokens with NextAuth.js
- QRIS (Universal QR payments)
- GoPay (GoJek wallet)
- Bank Transfer (Virtual accounts)
- Credit Cards (Visa, Mastercard)
- Service selection and booking
- Payment method selection
- Midtrans payment processing
- Webhook status updates
- Escrow release on completion
- User: Customers, providers, admins
- Service: Service offerings with pricing
- Booking: Service requests and confirmations
- Payment: Payment transactions and status
- Review: Service ratings and feedback
- Message: Communication between users
- Users β Services (Provider creates services)
- Users β Bookings (Customer/Provider booking relationship)
- Services β Bookings (Service booking requests)
- Bookings β Payments (Payment for booking)
- Services β Reviews (Service feedback)
- Connect repository to Vercel
- Set environment variables
- Configure database connection
- Deploy with
npm run build
- Build application:
npm run build - Start production server:
npm start - Configure reverse proxy (nginx recommended)
- Responsive Design: Mobile-first approach
- Touch-Friendly: Optimized for mobile interactions
- Progressive Enhancement: Works on all devices
- Server-Side Rendering: Fast initial page loads
- Image Optimization: Next.js Image component
- Code Splitting: Automatic route-based splitting
- Caching: Database query optimization
- Input Validation: Zod schema validation
- SQL Injection Protection: Prisma ORM
- XSS Protection: React's built-in protection
- CSRF Protection: NextAuth.js security
- Rate Limiting: API endpoint protection
For technical support or feature requests:
- Create an issue in the repository
- Contact the development team
This project is licensed under the MIT License - see the LICENSE file for details.
Built with β€οΈ for Indonesia's service marketplace