Jalin is a comprehensive tailoring service platform that connects customers with professional tailors. The platform provides a seamless experience for users to find tailors, create tailoring requests, manage transactions, and communicate in real-time.
The platform is built with a modern tech stack:
- Framework: Express.js with ES6 modules
- Database: MongoDB with Mongoose ODM
- Authentication: JWT with HTTP-only cookies
- File Storage: Cloudinary for image uploads
- Email Service: Mailtrap for email notifications
- Payment: Midtrans for payment processing
- Real-time Chat: Stream Chat for messaging
- Security: bcrypt for password hashing, CORS protection
- Framework: React 19.0.0 with Vite
- Routing: React Router DOM 7.2.0
- State Management: TanStack Query for server state
- Styling: Tailwind CSS 4.0.9 + DaisyUI
- HTTP Client: Axios with interceptors
- Notifications: React Hot Toast
- Chat: Stream Chat React components
- Animations: Framer Motion
- Node.js 18 or higher
- MongoDB database
- Cloudinary account
- Mailtrap account
- Stream Chat account
- Midtrans account
-
Clone the repository
git clone <repository-url> cd jalin-platform
-
Backend Setup
cd server npm install cp .env.example .env # Configure your environment variables npm run dev
-
Frontend Setup
cd client npm install cp .env.example .env # Configure your environment variables npm run dev
-
Access the Application
- Frontend: http://localhost:5173
- Backend API: http://localhost:5000
- User Registration & Authentication: Secure account creation with email verification
- Tailor Discovery: Browse and search tailors by location, specialty, and ratings
- Transaction Management: Create tailoring requests with detailed specifications
- Real-time Communication: Chat with tailors during the project
- Order Tracking: Monitor progress from request to completion
- Review System: Rate and review completed work
- Professional Registration: Submit credentials and portfolio for verification
- Profile Management: Showcase skills, experience, and work samples
- Job Management: Accept, track, and complete tailoring requests
- Point System: Earn and purchase points for platform features
- Premium Features: Enhanced visibility and additional tools
- Communication Tools: Direct messaging with customers
- User Management: Oversee user accounts and verification
- Tailor Verification: Review and approve tailor applications
- Transaction Oversight: Monitor and manage platform transactions
- Content Management: Manage categories, point products, and system settings
- Analytics Dashboard: Track platform performance and usage
POST /api/auth/signup- User registrationPOST /api/auth/login- User loginGET /api/auth/check-auth- Verify authenticationPOST /api/auth/verify-email- Email verification
GET /api/user/- Get all usersGET /api/user/:id- Get user by IDPUT /api/user/update/:id- Update user profile
GET /api/penjahit/- Get all tailorsPOST /api/penjahit/register- Register as tailorPUT /api/penjahit/update/:id- Update tailor profile
GET /api/transaksi/- Get all transactionsPOST /api/transaksi/create- Create new transactionPUT /api/transaksi/accept/:id- Accept transaction (tailor)PUT /api/transaksi/finish/:id- Complete transaction
GET /api/admin/user- Admin user managementGET /api/admin/penjahit- Admin tailor managementPOST /api/admin/penjahit/verify/:id- Verify tailor
- Layout Components: Consistent page structure and navigation
- Authentication Components: Login, registration, and profile management
- Dashboard Components: Role-based dashboard experiences
- Transaction Components: Job creation, management, and tracking
- Admin Components: Administrative tools and interfaces
- TanStack Query: Server state management with caching
- React Context: Authentication state and global UI state
- Local State: Component-specific state with useState/useReducer
/ # Home page
/login # User login
/signup # User registration
/dashboard # Role-based dashboard
/penjahit # Tailor listings
/penjahit/:id # Tailor profile
/jahitan # Job listings
/jahitan/:id # Job details
/admin/* # Admin panel routes
- JWT Authentication: Secure token-based authentication
- Password Hashing: bcrypt for secure password storage
- Input Validation: Server-side validation for all inputs
- File Upload Security: Cloudinary integration with type validation
- CORS Protection: Configured cross-origin resource sharing
- Rate Limiting: API request throttling (recommended for production)
- Responsive Design: Mobile-first approach with Tailwind CSS
- Dark/Light Mode: Theme switching capability
- Accessibility: WCAG compliant components
- Loading States: Skeleton screens and loading indicators
- Error Handling: User-friendly error messages
- Animations: Smooth transitions with Framer Motion
- Chat System: Stream Chat integration for user-tailor communication
- Live Notifications: Real-time updates for transaction status
- Background Sync: Automatic data synchronization
- Midtrans Integration: Secure payment processing for point purchases
- Point System: Virtual currency for platform features
- Transaction History: Detailed payment and point transaction records
jalin-platform/
βββ server/ # Backend application
β βββ controllers/ # Route controllers
β βββ models/ # Database models
β βββ routes/ # API routes
β βββ middleware/ # Custom middleware
β βββ lib/ # Utility libraries
β βββ index.js # Server entry point
βββ client/ # Frontend application
β βββ src/
β β βββ components/ # React components
β β βββ pages/ # Page components
β β βββ queries/ # TanStack Query hooks
β β βββ lib/ # Utility functions
β β βββ App.jsx # Main app component
β βββ public/ # Static assets
βββ API_DOCUMENTATION.md # Complete API reference
βββ COMPONENT_DOCUMENTATION.md # React components guide
βββ USAGE_GUIDE.md # Implementation examples
βββ README.md # This file
NODE_ENV=development
PORT=5000
MONGO_URI=mongodb://localhost:27017/jalin
JWT_SECRET=your_jwt_secret
CLOUDINARY_CLOUD_NAME=your_cloudinary_name
CLOUDINARY_API_KEY=your_cloudinary_key
CLOUDINARY_API_SECRET=your_cloudinary_secret
MAILTRAP_TOKEN=your_mailtrap_token
STREAM_API_KEY=your_stream_api_key
STREAM_API_SECRET=your_stream_secret
MIDTRANS_SERVER_KEY=your_midtrans_server_key
MIDTRANS_CLIENT_KEY=your_midtrans_client_keyVITE_API_URL=http://localhost:5000/api
VITE_STREAM_CHAT_API_KEY=your_stream_api_key
VITE_MIDTRANS_CLIENT_KEY=your_midtrans_client_keyThe platform includes comprehensive testing strategies:
- Unit Tests: Component and utility function testing
- Integration Tests: API endpoint testing
- E2E Tests: Complete user flow testing
- Performance Tests: Load and stress testing
- Environment Configuration: Secure production environment variables
- Database: MongoDB Atlas or self-hosted MongoDB
- File Storage: Cloudinary for production image storage
- Email Service: Production email service configuration
- SSL/HTTPS: Secure communication protocols
- Monitoring: Application performance monitoring
- Backup: Regular database and file backups
- Vercel/Netlify: Frontend deployment
- Railway/Render: Full-stack deployment
- AWS/GCP: Cloud infrastructure deployment
- Docker: Containerized deployment
- 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
This project is licensed under the MIT License - see the LICENSE file for details.
For support, questions, or feature requests:
- Create an issue in the repository
- Contact the development team
- Check the documentation for detailed guides
Future enhancements planned:
- Mobile application (React Native)
- Advanced analytics dashboard
- Multi-language support
- AI-powered tailor matching
- Video consultation features
- Bulk order management
- Integration with shipping providers
Built with β€οΈ by the Jalin Development Team