Jalin is a mobile application that connects customers with professional tailors (penjahit) for custom sewing services. Built for Mobile Programming Class using React Native and Expo, this app provides a platform for seamless communication and service booking between clients and tailors.
- Browse Tailors: Find professional tailors in your area
- Job Posting: Create custom sewing job requests with specifications
- Real-time Chat: Communicate directly with tailors
- Image Upload: Share reference images for custom work
- Location Services: Find nearby tailors using GPS
- Profile Management: Manage personal information and preferences
- Professional Profile: Showcase skills and portfolio
- Job Management: View and accept customer requests
- Dashboard: Track ongoing projects and earnings
- Chat System: Communicate with clients
- Work Gallery: Display completed projects
- Authentication: Secure login and registration
- Push Notifications: Stay updated on job status
- Multi-platform: iOS, Android, and Web support
- Offline Support: Basic functionality without internet
- React Native: Cross-platform mobile development
- Expo: Development platform and tools
- TypeScript: Type-safe JavaScript
- Expo Router: File-based navigation
- Firebase: Authentication and real-time database
- Firestore: NoSQL document database
- Cloudinary: Image storage and optimization
- Expo Location: GPS and location services
- React Native Reanimated: Smooth animations
- Expo Vector Icons: Comprehensive icon library
- React Native Maps: Interactive maps
- Custom Styling: Responsive design system
jalin-app/
├── app/ # Main application routes
│ ├── (app)/ # Protected app routes
│ │ ├── (tabs)/ # Tab navigation
│ │ │ ├── dashboard/ # Dashboard features
│ │ │ ├── jahitan/ # Sewing job management
│ │ │ └── penjahit/ # Tailor features
│ │ ├── chat.tsx # Chat functionality
│ │ └── profile.tsx # User profile
│ ├── (auth)/ # Authentication routes
│ │ ├── login.tsx # Login screen
│ │ ├── signup.tsx # Registration screen
│ │ └── create-profile.tsx # Profile setup
│ └── _layout.tsx # Root layout
├── components/ # Reusable UI components
│ ├── CardPekerjaan.tsx # Job card component
│ ├── CardPenjahit.tsx # Tailor card component
│ ├── Header.tsx # App header
│ ├── SearchInput.tsx # Search functionality
│ └── MessageList.tsx # Chat messages
├── config/ # Configuration files
│ └── firebase.ts # Firebase setup
├── hooks/ # Custom React hooks
├── service/ # External services
│ └── cloudinaryService.ts # Image upload service
├── styles/ # Styling system
├── constant/ # App constants
├── context/ # React context providers
├── assets/ # Images and static files
└── android/ # Android-specific files
- Register/Login: Create an account or sign in
- Create Profile: Set up your customer profile
- Browse Tailors: Explore available tailors in your area
- Post Job: Create a new sewing job with details and images
- Chat: Communicate with interested tailors
- Track Progress: Monitor your job status in the dashboard
- Register as Tailor: Sign up and complete tailor verification
- Set Up Shop: Create your professional profile with portfolio
- Browse Jobs: View available sewing jobs
- Accept Work: Respond to job postings
- Manage Projects: Track ongoing work in your dashboard
- Communicate: Chat with clients about project details
npm start- Start the Expo development servernpm run android- Run on Android device/emulatornpm run ios- Run on iOS simulatornpm run web- Run in web browsernpm test- Run the test suitenpm run lint- Run ESLint for code qualitynpm run reset-project- Reset to blank project template
- Fork the repository
- 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
Made with ❤️