A sophisticated mobile application built with React Native and Expo that helps users find job opportunities. The app provides a seamless experience for job searching with features like nearby jobs, popular jobs, detailed job views, and advanced search capabilities.
- Personalized welcome message
- Dynamic job type selection (Full-time, Part-time, Contractor)
- Search functionality with custom input field
- Popular jobs section with horizontal scrolling
- Nearby jobs section with vertical list
- Real-time job search functionality
- Advanced filtering options
- Pagination support for search results
- Dynamic loading states with activity indicators
- Comprehensive job information display
- Company details with logo
- Job description tabs (About, Qualifications, Responsibilities)
- Share job functionality
- Apply now button with external link
- Pull-to-refresh functionality
- React Native
- Expo Router for navigation
- Axios for API integration
- Custom styled components
- Native components (FlatList, ScrollView, etc.)
- Activity indicators for loading states
- Custom cards for job listings
- React Hooks (useState, useCallback)
- Custom hooks for data fetching (useFetch)
- JSearch API from RapidAPI
- RESTful API calls with Axios
- Error handling and loading states
├── app/ # Main application screens
│ ├── _layout.js # Root layout configuration
│ ├── index.js # Entry point
│ ├── home.js # Home screen
│ ├── job-details/ # Job details screen
│ └── search/ # Search functionality
├── components/ # Reusable UI components
│ ├── common/ # Shared components
│ ├── home/ # Home screen components
│ └── jobdetails/ # Job details components
├── constants/ # App constants and theme
├── assets/ # Static assets
│ ├── fonts/ # Custom fonts
│ ├── icons/ # App icons
│ └── images/ # Images
├── styles/ # Global styles
├── utils/ # Utility functions
└── hook/ # Custom React hooks
-
Welcome (components/home/welcome/Welcome.jsx)
- Handles user greeting
- Search input functionality
- Job type selection tabs
-
Popularjobs (components/home/popular/Popularjobs.jsx)
- Displays popular job listings
- Horizontal scrollable list
- Job card selection handling
-
Nearbyjobs (components/home/nearby/Nearbyjobs.jsx)
- Shows nearby job opportunities
- Vertical scrollable list
- Quick navigation to job details
-
Company (components/jobdetails/company/Company.jsx)
- Displays company information
- Company logo handling
- Location information
-
JobTabs
- Tab navigation for job details
- About, Qualifications, Responsibilities sections
-
JobFooter
- Apply now functionality
- External link handling
const options = {
method: "GET",
url: `https://jsearch.p.rapidapi.com/search`,
headers: {
"X-RapidAPI-Key": 'YOUR_API_KEY',
"X-RapidAPI-Host": "jsearch.p.rapidapi.com"
},
params: {
query: searchTerm,
page: pageNumber
}
};
Location: hook/useFetch.js
- Handles API requests
- Manages loading states
- Error handling
- Data caching
- Clone the repository
git clone <repository-url>
- Install dependencies
npm install
# or
yarn install
- Set up environment variables
- Create a RapidAPI account
- Get API key for JSearch API
- Configure API key in the project
- Start the development server
npm start
# or
yarn start
- Start the development server
- Use Expo Go app on your mobile device
- Scan the QR code from terminal
- Install Expo CLI globally
npm install -g expo-cli
- Start development server
expo start
- Choose platform
- Press 'a' for Android
- Press 'i' for iOS
- Press 'w' for web
- Utilizes React's Context API when needed
- Custom hooks for data fetching and caching
- Component-level state management using useState
- Efficient state updates with useCallback
Location: constants/theme.js
- Color palette
- Font families
- Size constants
- Component-specific styles
- Responsive design considerations
- Platform-specific adjustments
-
Image Optimization
- Lazy loading for images
- Fallback images for failed loads
- Proper image sizing
-
List Rendering
- FlatList for efficient list rendering
- Proper key implementation
- List item recycling
-
Data Fetching
- Cached API responses
- Pagination implementation
- Error boundary implementation
- 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
This project is licensed under the MIT License - see the LICENSE file for details
- React Native community
- Expo team
- RapidAPI and JSearch API
- Contributors and maintainers
Prashant Koirala - [email protected]
Project Link: https://github.com/prashantkoirala465/Job-Finder-using-React-Native