A modern and intuitive React Native application for booking barber appointments. DevBarber connects customers with local barbers, allowing users to browse services, view barber profiles, schedule appointments, and manage their bookings seamlessly.
- User Authentication: Secure sign-in and sign-up with token-based authentication
- Location-Based Search: Find barbers near your location using GPS
- Barber Profiles: View detailed barber information, services, and ratings
- Service Booking: Schedule appointments with preferred time slots
- Favorites System: Save and manage favorite barbers
- Appointment Management: View upcoming and past appointments
- User Profile: Manage personal information and avatar
- Search Functionality: Search for specific barbers or services
- Modern Design: Clean and intuitive interface with custom styling
- Responsive Layout: Optimized for various screen sizes
- Interactive Components: Smooth animations and transitions
- Custom Tab Navigation: Easy navigation between main sections
- Modal Dialogs: Elegant booking and information modals
Screenshots will be added here to showcase the app's interface
- Framework: React Native 0.63.4
- Navigation: React Navigation 5.x
- State Management: React Context API with useReducer
- Styling: Styled Components
- Icons: React Native SVG
- Storage: AsyncStorage
- Location Services: React Native Geolocation
- Permissions: React Native Permissions
- HTTP Client: Fetch API
Before running this project, make sure you have the following installed:
- Node.js (>= 12.x)
- React Native CLI
- Android Studio (for Android development)
- Xcode (for iOS development, macOS only)
- Java Development Kit (JDK 8 or higher)
-
Clone the repository
git clone https://github.com/yourusername/reactnative-devbarber.git cd reactnative-devbarber -
Install dependencies
npm install # or yarn install -
Install iOS dependencies (iOS only)
cd ios && pod install && cd ..
-
Configure API endpoint
- Update the
BASE_APIconstant insrc/Api.jswith your backend server URL
- Update the
npm run android
# or
yarn androidnpm run ios
# or
yarn iosnpm start
# or
yarn startsrc/
├── Api.js # API service functions
├── assets/ # SVG icons and images
├── components/ # Reusable UI components
│ ├── AppointmentItem.js
│ ├── BarberItem.js
│ ├── BarberModal.js
│ ├── CustomTabBar.js
│ ├── SignInput.js
│ └── Stars.js
├── contexts/ # React Context providers
│ └── UserContext.js
├── reducers/ # State management reducers
│ └── UserReducer.js
├── screens/ # Application screens
│ ├── Account/
│ ├── Appointments/
│ ├── Barber/
│ ├── Favorites/
│ ├── Home/
│ ├── Preload/
│ ├── Profile/
│ ├── Search/
│ ├── SignIn/
│ └── SignUp/
└── stacks/ # Navigation configuration
├── MainStack.js
└── MainTab.js
- Ensure your development environment is set up according to the React Native CLI Quickstart
- Configure your Android/iOS emulator or connect a physical device
Update the API base URL in src/Api.js:
const BASE_API = 'https://your-api-endpoint.com';npm start- Start the Metro bundlernpm run android- Run on Android device/emulatornpm run ios- Run on iOS device/simulatornpm test- Run testsnpm run lint- Run ESLint
- Fork the project
- 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
This project is licensed under the MIT License - see the LICENSE file for details.
- React Native community for excellent documentation and support
- Contributors and testers who helped improve the application
- Design inspiration from modern mobile app interfaces
If you encounter any issues or have questions, please:
- Check the Issues page
- Create a new issue if your problem isn't already reported
- Provide detailed information about your environment and the issue
Built with ❤️ using React Native