Skip to content
geeksforgeeks
  • Courses
    • DSA to Development
    • Get IBM Certification
    • Newly Launched!
      • Master Django Framework
      • Become AWS Certified
    • For Working Professionals
      • Interview 101: DSA & System Design
      • Data Science Training Program
      • JAVA Backend Development (Live)
      • DevOps Engineering (LIVE)
      • Data Structures & Algorithms in Python
    • For Students
      • Placement Preparation Course
      • Data Science (Live)
      • Data Structure & Algorithm-Self Paced (C++/JAVA)
      • Master Competitive Programming (Live)
      • Full Stack Development with React & Node JS (Live)
    • Full Stack Development
    • Data Science Program
    • All Courses
  • Tutorials
    • Data Structures & Algorithms
    • ML & Data Science
    • Interview Corner
    • Programming Languages
    • Web Development
    • CS Subjects
    • DevOps And Linux
    • School Learning
  • Practice
    • Build your AI Agent
    • GfG 160
    • Problem of the Day
    • Practice Coding Problems
    • GfG SDE Sheet
  • Contests
    • Accenture Hackathon (Ending Soon!)
    • GfG Weekly [Rated Contest]
    • Job-A-Thon Hiring Challenge
    • All Contests and Events
  • NextJS
  • Material UI
  • React Bootstrap
  • React Suite
  • Ant Design
  • Reactstrap
  • BlueprintJS
  • React Desktop
  • React Native
  • React Rebass
  • React Spring
  • React Evergreen
  • ReactJS
  • ReactJS
  • JS Formatter
  • Web Technology
Open In App
Next Article:
Create a Blog App using React-Native
Next article icon

Create Job Board App using React-Native

Last Updated : 23 Jul, 2024
Comments
Improve
Suggest changes
Like Article
Like
Report

In this article, we are going to Create a Job Board App using React Native. The Job Board App is a simple application that is a collection of job openings in any field. It helps the students and the people who are searching for jobs in the market. It helps to find jobs and provides in-depth information related to applying procedures etc.

Preview of final output: Let us have a look at how the final output will look like.

job
Preview of the app

Prerequisites:

  • React Native
  • React Native State
  • React Native Props

Approach to create Job Board App:

  • Job Board App is a simple application that is a collection of job openings in any field.
  • We created a job filter option in the app by which Users can filter job listings by title, company, and location using the provided input fields. and Clicking on the "Apply Filters" button filters the job list based on the entered criteria.
  • Users can view detailed information about a job by clicking on the respective job listing. A modal pops up displaying the job title, company, location, description, and application method.
  • Users can find application methods in the job details modal.

Steps to Create React Native Application:

Step 1: Create a react native application by using this command in the command prompt

React-native init JobBoardApp

Step 2: We will use some Icons in our app so, we will install dependency for icon

npm i react-native-vector-icons

Project Structure:

structure
Structure of project

The updated dependencies in package.json file will look like:

"dependencies": {
"mobx": "4.1.0",
"axios": "*",
"mobx-react": "5.0.0",
"@expo/vector-icons": "^13.0.0",
"react-native-elements": "0.18.5"
}

Example: Write the below source code into the App.js file.

JavaScript
// App.js import React, { useState } 	from 'react'; import {View,Text,FlatList,TextInput,Button, 		ScrollView,Modal,StyleSheet,TouchableOpacity, } from 'react-native';  import initialJobData 	from './initialJobData'; const JobBoard = () => {  	const [jobData, setJobData] = useState(initialJobData); 	const [showFilters, setShowFilters] = useState(true); 	const [titleFilter, setTitleFilter] = useState(''); 	const [companyFilter, setCompanyFilter] = useState(''); 	const [locationFilter, setLocationFilter] = useState(''); 	const [selectedJob, setSelectedJob] = useState(null); 	const [isModalVisible, setIsModalVisible] = useState(false);  	const applyFilters = () => { 		const filteredJobs = initialJobData.filter( 			(job) => 				job.title.toLowerCase() 					.includes(titleFilter.toLowerCase()) && 				job.company.toLowerCase() 					.includes(companyFilter.toLowerCase()) && 				job.location.toLowerCase() 					.includes(locationFilter.toLowerCase()) 		); 		setJobData(filteredJobs); 		setShowFilters(false); 	};  	const toggleFilters = () => { 		setShowFilters(!showFilters); 	};  	const renderJobItem = ({ item }) => ( 		<TouchableOpacity 			onPress={ 				() => handleViewDetails(item) 			}> 			<View style={styles.jobItem}> 				<Text style={styles.jobTitle}> 					{item.title} 				</Text> 				<Text style={styles.jobCompany}> 					{item.company} 				</Text> 				<Text style={styles.jobLocation}> 					{item.location} 				</Text> 				<Text style={styles.jobDescription}> 					{item.description} 				</Text> 			</View> 		</TouchableOpacity> 	);  	const handleViewDetails = (job) => { 		setSelectedJob(job); 		setIsModalVisible(true); 	};  	const renderJobDetailsModal = () => { 		if (!selectedJob) { 			return null; 		}  		return ( 			<Modal 				animationType="slide" 				transparent={true} 				visible={isModalVisible} 				onRequestClose={() => { 					setIsModalVisible(false); 				}} 			> 				<View style={styles.modalContainer}> 					<View style={styles.modalContent}> 						<Text style={styles.modalTitle}> 							{selectedJob.title} 						</Text> 						<Text style={styles.modalCompany}> 							{selectedJob.company} 						</Text> 						<Text style={styles.modalLocation}> 							{selectedJob.location} 						</Text> 						<Text style={styles.modalDescription}> 							{selectedJob.description} 						</Text> 						<Text style={styles.modalApplyMethod}> 							{selectedJob.applyMethod} 						</Text> 						<Button title="Close" 							onPress={ 								() => setIsModalVisible(false) 							} /> 					</View> 				</View> 			</Modal> 		); 	};  	return ( 		<View style={styles.container}> 			<Text style={styles.header}> 				Job Board App 			</Text> 			<Text style={styles.subHeading}> 				By GeekforGeeks 			</Text>  			<View style={styles.filterContainer}> 				{showFilters ? ( 					<> 						<View style={styles.row}> 							<View style={styles.filterColumn}> 								<Text style={styles.filterLabel}> 									Title 								</Text> 								<TextInput 									style={styles.filterInput} 									value={titleFilter} 									onChangeText={ 										(text) => 											setTitleFilter(text) 									} 								/> 							</View>  							<View style={styles.filterColumn}> 								<Text 									style={styles.filterLabel}> 									Company 								</Text> 								<TextInput 									style={styles.filterInput} 									value={companyFilter} 									onChangeText={ 										(text) => 											setCompanyFilter(text) 									} 								/> 							</View>  							<View style={styles.filterColumn}> 								<Text style={styles.filterLabel}> 									Location 								</Text> 								<TextInput 									style={styles.filterInput} 									value={locationFilter} 									onChangeText={ 										(text) => 											setLocationFilter(text) 									} 								/> 							</View> 						</View>  						<Button title="Apply Filters" 							onPress={applyFilters} /> 					</> 				) : ( 					<Button title="Show Filters" 						onPress={toggleFilters} /> 				)} 			</View>  			<ScrollView> 				<FlatList data={jobData} 					keyExtractor={ 						(item) => 							item.id} renderItem={renderJobItem} /> 			</ScrollView> 			{renderJobDetailsModal()} 		</View> 	); };  const styles = StyleSheet.create({ 	container: { 		padding: 16, 		backgroundColor: '#fff', 	}, 	header: { 		fontSize: 34, 		fontWeight: 'bold', 		marginBottom: 16, 	}, 	subHeading: { 		color: 'green', 		fontSize: 20, 		fontWeight: 'bold', 		marginLeft: 90, 		marginTop: -20, 	}, 	filterContainer: { 		marginBottom: 16, 		marginTop: 20, 	}, 	row: { 		flexDirection: 'row', 		flexWrap: 'wrap', 		justifyContent: 'space-between', 	}, 	filterColumn: { 		flex: 1, 		marginRight: 8, 		marginBottom: 16, 	}, 	filterLabel: { 		fontSize: 16, 		marginBottom: 4, 	}, 	filterInput: { 		padding: 8, 		borderWidth: 1, 		borderColor: '#ccc', 		borderRadius: 4, 	}, 	jobItem: { 		marginBottom: 20, 		borderBottomWidth: 1, 		borderBottomColor: '#ccc', 	}, 	jobTitle: { 		fontSize: 18, 		fontWeight: 'bold', 		marginBottom: 4, 	}, 	jobCompany: { 		fontSize: 16, 		color: '#555', 		marginBottom: 4, 	}, 	jobLocation: { 		fontSize: 16, 		color: '#555', 		marginBottom: 4, 	}, 	jobDescription: { 		fontSize: 14, 		color: '#777', 	}, 	modalContainer: { 		flex: 1, 		justifyContent: 'center', 		alignItems: 'center', 		backgroundColor: 'rgba(0, 0, 0, 0.5)', 	}, 	modalContent: { 		backgroundColor: '#fff', 		padding: 16, 		borderRadius: 8, 		width: '80%', 	}, 	modalTitle: { 		fontSize: 20, 		fontWeight: 'bold', 		marginBottom: 8, 	}, 	modalCompany: { 		fontSize: 18, 		color: '#555', 		marginBottom: 8, 	}, 	modalLocation: { 		fontSize: 16, 		color: '#555', 		marginBottom: 8, 	}, 	modalDescription: { 		fontSize: 14, 		color: '#777', 		marginBottom: 8, 	}, 	modalApplyMethod: { 		fontSize: 14, 		color: 'blue', 		marginBottom: 8, 	}, });  export default JobBoard; 
JavaScript
//initialJobData.js const initialJobData = [ 	{ 		id: '1', 		title: 'Software Engineer', 		company: 'Tech Co.', 		location: 'San Francisco, CA', 		description:  'Seeking a skilled software engineer with experience in React Native.', 		applyMethod: 'Send your resume to [email protected]', 	}, 	{ 		id: '2', 		title: 'UX Designer', 		company: 'Design Studio', 		location: 'New York, NY', 		description: `Looking for a creative UX designer to join our team  	and create amazing user experiences.`, 		applyMethod: 'Apply online at www.designstudio.com/careers', 	}, 	{ 		id: '3', 		title: 'Data Analyst', 		company: 'Data Corp.', 		location: 'Seattle, WA', 		description: `Data analyst position available for candidates with 						strong analytical skills.`, 		applyMethod: 'Submit your application on our website.', 	}, 	{ 		id: '4', 		title: 'Mobile App Developer', 		company: 'Innovate Tech Solutions', 		location: 'Bangalore, India', 		description: `We are looking for a mobile app developer with 			expertise in both iOS and Android platforms.`, 		applyMethod:  'Apply by sending your portfolio to [email protected]', 	}, 	{ 		id: '5', 		title: 'Graphic Designer', 		company: 'Creative Minds Agency', 		location: 'Mumbai, India', 		description: `Join our creative team as a graphic designer and  				bring innovative designs to life.`, 		applyMethod: 'Submit your resume and portfolio to [email protected]', 	}, 	{ 		id: '6', 		title: 'Backend Developer', 		company: 'CodeCrafters Ltd.', 		location: 'Hyderabad, India', 		description: `Experienced backend developer needed to work on  				scalable and efficient server-side applications.`, 		applyMethod: 'Send your CV to [email protected]', 	}, 	{ 		id: '7', 		title: 'Business Analyst', 		company: 'Global Solutions Inc.', 		location: 'Delhi, India', 		description: `Analytical minds wanted! Join our team as a business  				analyst and contribute to strategic decision-making.`, 		applyMethod: 'Apply through our website: www.globalsolutions.in/careers', 	}, 	{ 		id: '8', 		title: 'Frontend Developer', 		company: 'WebWizards Tech', 		location: 'Chennai, India', 		description: `Passionate frontend developer needed to create responsive  				and user-friendly web interfaces.`, 		applyMethod: 'Submit your application at www.webwizards.tech/careers', 	}, 	{ 		id: '9', 		title: 'AI Research Scientist', 		company: 'FutureTech Innovations', 		location: 'Pune, India', 		description: `Join our AI research team to work on cutting-edge  				technologies and innovative solutions.`, 		applyMethod: 'Send your research portfolio to [email protected]', 	}, 	{ 		id: '10', 		title: 'Marketing Specialist', 		company: 'MarketMasters Agency', 		location: 'Kolkata, India', 		description: `Experienced marketing specialist wanted to develop  					and implement strategic marketing campaigns.`, 		applyMethod: 'Apply by sending your resume to [email protected]', 	}, ];  export default initialJobData; 

Step to Run the Project:

Step 1: Depending on your operating system, type the following command

  • For android:
React-native run-android
  • For IOS:
React-native run-ios

Output:


Next Article
Create a Blog App using React-Native

S

sumitprajapat001
Improve
Article Tags :
  • Project
  • Web Technologies
  • ReactJS
  • Geeks Premier League
  • React-Native
  • Geeks Premier League 2023

Similar Reads

  • Create a Blog App using React-Native
    This article shows how to create a basic blog app using react native. This app contains functionalities such as adding a blog and a delete button to remove the blogs using react native. The user can enter content with a title and then click on 'Add New Post' to create a new blog post Preview of fina
    4 min read
  • Create a Camera App using React-Native
    A camera app using react native is a mobile application that is designed to capture photos or videos using the built-in camera functionality of a mobile device. In this article, you will learn how you can create a camera app with simple steps. Output Preview: Let us have a look at how the final appl
    3 min read
  • Create ClassRoom App using React-Native
    ClassRoom App using React Native is a simple application designed to facilitate online learning and classroom management. These apps are commonly used in educational institutions, schools, colleges, and universities to enhance the teaching and learning experience. Preview of final output: Let us hav
    7 min read
  • Create a Chatbot App using React-Native
    Creating a chatbot app using React Native will be an exciting project. In this article, we are going to implement a Chatbot App using React Native. Chatbot App is a mobile application that answers the user's questions on the basis of their previous learning or content provided by developers. It help
    4 min read
  • Create a Compass App using React-Native
    In this project, we'll create a Compass App using React Native. The app will display real-time compass heading information, along with additional details such as cardinal direction. The user interface will include a rotating compass image to provide a visual representation of the device's orientatio
    3 min read
  • Create an E-commerce App using React-Native
    An E-commerce app using react native is an application designed to facilitate online buying and selling of goods and services. These apps aim to provide a digital platform for businesses to showcase their products or services and for consumers to browse, compare, and purchase items without the need
    5 min read
  • Clipboard App using React-Native
    In this tutorial, we will create a stylish clipboard app using React Native. The app allows users to copy text to the clipboard, paste text from the clipboard, and display a stylish popup message to indicate successful copy or paste actions. Preview of final output: Let us have a look at how the fin
    3 min read
  • Create a Calling App using React-Native
    Building a Calling App using React-Native allows you to create a cross-platform application that supports voice calling. This tutorial will guide you through the process of integrating voice calling functionality into a React-Native app, enabling users to make and receive calls seamlessly. Preview o
    5 min read
  • How to Create ToDo App using React Native ?
    In this article, we'll see how to create a ToDo app using React Native. An ideal illustration of a basic application that can be developed with React Native is a ToDo app. This app enables users to generate, modify, and remove tasks, assisting them in maintaining organization and concentration. Reac
    4 min read
  • Create a Book Store using React-Native
    React-Native is a flexible frameworks for building mobile applications. We will develop a Book Store application, which allows users to search for a specific book, and store the book in the application. If the user wants to remove the book from the stored list, they can easily remove it by navigatin
    6 min read
geeksforgeeks-footer-logo
Corporate & Communications Address:
A-143, 7th Floor, Sovereign Corporate Tower, Sector- 136, Noida, Uttar Pradesh (201305)
Registered Address:
K 061, Tower K, Gulshan Vivante Apartment, Sector 137, Noida, Gautam Buddh Nagar, Uttar Pradesh, 201305
GFG App on Play Store GFG App on App Store
Advertise with us
  • Company
  • About Us
  • Legal
  • Privacy Policy
  • In Media
  • Contact Us
  • Advertise with us
  • GFG Corporate Solution
  • Placement Training Program
  • Languages
  • Python
  • Java
  • C++
  • PHP
  • GoLang
  • SQL
  • R Language
  • Android Tutorial
  • Tutorials Archive
  • DSA
  • Data Structures
  • Algorithms
  • DSA for Beginners
  • Basic DSA Problems
  • DSA Roadmap
  • Top 100 DSA Interview Problems
  • DSA Roadmap by Sandeep Jain
  • All Cheat Sheets
  • Data Science & ML
  • Data Science With Python
  • Data Science For Beginner
  • Machine Learning
  • ML Maths
  • Data Visualisation
  • Pandas
  • NumPy
  • NLP
  • Deep Learning
  • Web Technologies
  • HTML
  • CSS
  • JavaScript
  • TypeScript
  • ReactJS
  • NextJS
  • Bootstrap
  • Web Design
  • Python Tutorial
  • Python Programming Examples
  • Python Projects
  • Python Tkinter
  • Python Web Scraping
  • OpenCV Tutorial
  • Python Interview Question
  • Django
  • Computer Science
  • Operating Systems
  • Computer Network
  • Database Management System
  • Software Engineering
  • Digital Logic Design
  • Engineering Maths
  • Software Development
  • Software Testing
  • DevOps
  • Git
  • Linux
  • AWS
  • Docker
  • Kubernetes
  • Azure
  • GCP
  • DevOps Roadmap
  • System Design
  • High Level Design
  • Low Level Design
  • UML Diagrams
  • Interview Guide
  • Design Patterns
  • OOAD
  • System Design Bootcamp
  • Interview Questions
  • Inteview Preparation
  • Competitive Programming
  • Top DS or Algo for CP
  • Company-Wise Recruitment Process
  • Company-Wise Preparation
  • Aptitude Preparation
  • Puzzles
  • School Subjects
  • Mathematics
  • Physics
  • Chemistry
  • Biology
  • Social Science
  • English Grammar
  • Commerce
  • World GK
  • GeeksforGeeks Videos
  • DSA
  • Python
  • Java
  • C++
  • Web Development
  • Data Science
  • CS Subjects
@GeeksforGeeks, Sanchhaya Education Private Limited, All rights reserved
We use cookies to ensure you have the best browsing experience on our website. By using our site, you acknowledge that you have read and understood our Cookie Policy & Privacy Policy
Lightbox
Improvement
Suggest Changes
Help us improve. Share your suggestions to enhance the article. Contribute your expertise and make a difference in the GeeksforGeeks portal.
geeksforgeeks-suggest-icon
Create Improvement
Enhance the article with your expertise. Contribute to the GeeksforGeeks community and help create better learning resources for all.
geeksforgeeks-improvement-icon
Suggest Changes
min 4 words, max Words Limit:1000

Thank You!

Your suggestions are valuable to us.

What kind of Experience do you want to share?

Interview Experiences
Admission Experiences
Career Journeys
Work Experiences
Campus Experiences
Competitive Exam Experiences