Final Record
Final Record
Submitted by
SUBASH P
1P23MC055
November 2024
RVS COLLEGE OF ARTS AND SCIENCE (AUTONOMOUS)
SCHOOL OF COMPUTER STUDIES -MCA
Master Of Computer Applications
2024 – 2025
Guide Director
Submitted for the Project Evaluation and Viva voce held on _________
I
Acknowlegement
ACKNOWLEDGEMENTS
I express my sincere thanks to our Managing trustee Dr. K. Senthil Ganesh MBA (USA).,
MS (UK)., Ph.D., for providing us with the adequate faculty and laboratory resources for
completing my project successfully.
I take this as a fine opportunity to express my sincere thanks to Dr. T. Sivakumar M.Sc., M.
Phil., Ph.D., Principal, RVS College of Arts and Science (Autonomous) for giving me the
opportunity to undertake this project.
I express my sincere thanks to Dr. S. Yamini M.Sc., (CC)., M. Phil., Ph.D., Director
(Academic), Department of Computer Science for her valuable guidance and prompt
correspondence throughout the curriculum to complete the project.
Finally, I express my sincere thanks to all other staff members and my dear friends, and all
dear and near for helping me to complete this project.
SUBASH P
II
Book Explorer Application
Abstract
ABSTRACT
The BookExplorer application, developed using React Native, is designed to elevate the
reading experience by providing a structured and personalized approach to book management.
With cross-platform compatibility, the app is accessible to both iOS and Android users,
ensuring a broad reach and consistent experience. Key features include secure user
authentication, personalized library management, an intuitive reading interface,features
empower users to enjoy reading and efficiently manage their book collections.
The app's core functionality focuses on setting and tracking reading goals tailored to individual
preferences. Users can manage their personal libraries by adding, organizing, and categorizing
books. A comprehensive book database includes summaries, reviews, and ratings, enabling
users to make informed decisions about their next read and stay engaged with their reading
goals.
To further enhance the user experience, BookExplorer offers an audiobook feature, allowing
users to listen to their favorite books on the go. Visual progress representations, such as charts
and graphs, provide a clear overview of reading achievements over time, helping users stay
motivated and focused on their goals. Prioritizing accessibility and user-friendly design,
BookExplorer serves as a valuable tool for anyone looking to manage their reading habits and
achieve their literary objectives effectively.
III
Contents
CONTENTS
Declaration I
Acknowledgements II
Abstract III
1. Introduction
1.1 An Overview of the Project 01
1.2 Mission of the Project 01
1.3 Background Study 01
1.3.1 A Study of the Existing System 01
2. System Analysis
2.1 A Study on the Proposed System 02
2.2 User Requirement Specification 02
2.2.1 Major Modules 02
2.2.2 Sub Modules 03
2.3 Software & Hardware Specification 04
2.3.1 Software Specification 04
2.3.2 Hardware Specification 05
IV
3.3 Design process 14
3.3.1 Software Architecture 14
3.3.2 Control Hierarchy 14
3.3.3 Structural Partitioning 14
3.3.4 Data structure 15
3.3.5 Software procedure
3.4 Database Design 15
3.5 Input Design 16
3.6 Output Design 16
4. Testing and Implementation
4.1 Testing 17
4.1.1 Testing Methodologies 17
4.2 Quality Assurance 18
4.2.1 Generic Risks 19
4.2.2 Security Aspects and Policies 19
4.3 System Implementation 19
4.4 System Maintenance 20
5. Conclusion
5.1 Directions for Future Enhancements 21
6. Bibliography
6.1 Book Reference 22
6.2 Web Reference 23
References 20
1
System Analysis
2. SYSTEM ANALYSIS
The main objectives of the Book Explorer project include enhancing the reading
experience, promoting responsible reading habits, and fostering a sense of community among
readers. By focusing on user engagement and satisfaction, Book Explorer seeks to create a
supportive environment that encourages individuals to explore new genres, share their reading
journeys, and develop a lifelong passion for reading.
The Book Explorer application should offer users a comprehensive library of available
books, complete with detailed profiles, cover images, and relevant information such as
summaries and reviews. Users should have the ability to filter and search for books based on
criteria such as genre, author, publication date, and reading goals.
• Authentication Module
2
• Search Module
The Search Module enables users to efficiently find books within the
application by allowing them to search based on various criteria, such as title,
author, genre, and publication date
• Profile Module
The Profile Module focuses on user profiles. Users can view and edit their
personal information, and it may also include features like displaying a user's
adoption history or the pets they have adopted.
This module ensures that the user interface is intuitive and user-friendly. It
encompasses aspects of UI/UX design, responsive design, and user testing to
optimize the overall user experience.
• Signup Sub-Module
• Login Sub-Module
Implement search and filter options to help users find specific pets based on
criteria like species, breed, age, and location.
3
2.3 Software Specifications and Hardware Specifications
MongoDB:
To ensure compatibility with the driver used to connect to the database and Node.js, the
version of MongoDB utilized must be specified. MongoDB is a NoSQL database that stores
and manages customer data, Book information, and users in a document-oriented manner.
React Native:
In a MERN stack project to React Native involves transitioning from a web-based
application to a mobile app. React Native allows you to build mobile apps for iOS and
Android using JavaScript and React Native.
Node.js:
Node.js is a JavaScript runtime environment utilized to build and execute the server-
side. The selection of Node.js version should be consistent with the project's dependencies
and libraries.
4
Express.js:
Express.js is a widely-used framework for Node.js that provides a streamlined way to
build APIs and manage HTTP requests in web applications. It provides a set of features for
building web and mobile applications, including robust routing, middleware support, and easy
integration with various template engines.
The minimum hardware requirements for a MERN stack project will vary based on the
scope and intricacy of the application.
5
Design Modules
3. SYSTEM DESIGN AND IMPLEMENTATION
The Book Explorer application should offer users a comprehensive library of available books,
complete with detailed profiles, cover images, and relevant information such as summaries and reviews.
Users should have the ability to filter and search for books based on criteria such as genre, author,
Understanding user needs and behaviour through the use of personas and user journeys
can help to tailor the system accordingly. Finally, maintaining a consistent visual design and
branding throughout the application can create a unified and seamless experience for the user.
Maintain a consistent branding and visual design throughout the application to create a
unified experience. Use colours, fonts, and imagery that align with the brand identity.
Design the application with scalability in mind to accommodate future growth and
changes. Consider the potential need for additional features and functionality as the business
expands.
3.1.1 Abstraction
Abstraction in software design involves the process of simplifying complex system
components by focusing on their essential characteristics while hiding unnecessary details. It
allows developers to create a high-level representation of the system, making it easier to
conceptualize and work with.
6
3.1.2 Refinement
Refinement is an iterative and essential phase in software development where each
module of the Book Explorer app is continuously improved to meet evolving requirements and
enhance overall efficiency.
3.1.3 Modularity
The principle of modularity in software design involves breaking down a complex
application into smaller, independent modules or components. Each module focuses on a
specific set of functionalities or features, making it easier to develop, test, and maintain. By
dividing the Book Explorer app into these distinct and self-contained modules, developers can
work on individual parts of the application without impacting other areas.
A design module in the context of software development and system design typically
refers to a self-contained unit or component that focuses on a specific aspect of the system's
design. It encapsulates a set of related functionalities or features that work together to achieve
a particular goal within the overall system.
The Profile Module focuses on user profiles. Users can view and edit their personal
information, and it may also include features like displaying a user's.
7
Authentication and Authorization Module
The Authentication Module is tasked with ensuring secure user interactions within the
Book Explorer application. It manages user authentication, facilitating a secure and controlled
login process. By implementing robust access control mechanisms, this module ensures that
only authorized users can access the application's features and data, safeguarding user
information and system integrity.
HTTP Data
React Native
Req Req
Express
MongoDB
Application Database
HTTP Data
Mobile
Res
Res
Front-end:
React Native allows developers to build native mobile app UI components that work
seamlessly on both iOS and Android platforms, offering a consistent and responsive user
experience.
8
Back-end:
This layer handles server-side logic and interacts with the database. It's built using
Node.js, a JavaScript runtime for building scalable network applications.
Database:
This layer stores and retrieves data for the application. It's typically built using
MongoDB, a popular NoSQL database that stores data in JSON-like documents.
Start
Register /
Login
Book List
Audio Book
Profile
End
Decision points are highlighted to indicate where choices are made, and loops or
iterations are included to account for repetitive processes. Exception handling and feedback
mechanisms are integrated to ensure a robust representation of the project's functionality.
Overall, the system flow diagram is a valuable tool for project planning, communication, and
9
analysis, enabling stakeholders to grasp the project's flow and dependencies at a glance.
❖ USER PAGE
Register/
Start Login
Book List Audio Book End
❖ ADMIN PAGE
Add
Admin
Start Login Book View Profile
End
Details
❖ LOGIN DFD
10
❖ REGISTRATION DFD
❖ ER DIAGRAM
11
3.2.4 Software Engineering Model
Software engineering models are essential conceptual frameworks and methodologies
that serve as roadmaps for software development. They provide structure and guidance
throughout the entire software development lifecycle, from initial planning and design to actual
coding, testing, and ongoing maintenance. These models help ensure that software projects are
organized, efficient, and produce high-quality results.
Agile Model:
Agile methodologies like Scrum or Kanban are popular for mobile app development.
They emphasize flexibility, collaboration, and delivering incremental updates to meet evolving
user needs. Agile allows for continuous improvement and frequent releases.
Waterfall Model:
While not as common for mobile apps, the waterfall model can still be used for simple
and well-defined projects where requirements are stable from the beginning. It follows a
sequential approach, with each phase being completed before moving to the next.
12
Iterative and Incremental Models:
DevOps principles are instrumental in mobile app development as they streamline the
entire lifecycle of an app, from its initial development phase through deployment and ongoing
maintenance. By fostering collaboration between development and operations teams, DevOps
promotes faster development cycles, shorter release times, and improved overall quality. This
approach also encourages automation of repetitive tasks, ensuring consistency and reducing
human errors.
DevOps Model:
DevOps principles play a crucial role in mobile app development by streamlining the
entire process, from initial development to deployment and ongoing maintenance.
Prototyping Model:
Creating prototypes or mock-ups of a mobile app's user interface is a valuable practice
in the app development process. These visual representations serve as tangible examples that
help clarify design and functionality requirements.
Hybrid Model:
Mobile app development is a dynamic field that frequently combines a variety of
methodologies, tools, and techniques to cater to the unique requirements of each project.
Development teams often blend elements from different software development models, such
as Waterfall, Agile, or DevOps, to create a customized approach.
13
3.3 Design Process
3.3.1 Software Architecture
• Software architecture is the set of structures needed to reason about a software system and
the discipline of creating such structures and systems. Each structure comprises software
elements, relations among them, and properties of both elements and relations.
• Control hierarchy, also called program structure, represents the organization of program
components (modules) and implies a hierarchy of control. It does not represent procedural
aspects of software such as sequence of processes, occurrence or order of decisions, or
repetition of operations; nor is it necessarily applicable to all architectural styles.
• The control hierarchy also represents two subtly different characteristics of the software
architecture: visibility and connectivity. Visibility indicates the set of program components
that may be invoked or used as data by a given component, even when this is accomplished
indirectly.
The program structure should be partitioned both vertically and horizontally. As describe in
horizontal partitioning describe separate branches of the modular hierarchy of reach major
program function. The Control modules, represented in a darker shade are used to coordinate
communication among and execution of program functions. The easiest approach to
horizontal partitioning describes 3 partitions - input, data transformation often called
processing and output.
The nature of modification in program architectures justifies the requirement for vertical
partitioning. The change in a control module high in the architecture will have a higher
possibility of propagating side effects to modules are subordinate to it. The change to a
worker module given its low level in the structure is less likely to cause the propagation.
14
3.3.4 Data structure
Data structure is a storage that is used to store and organize data. It is a way of
arranging data on a computer so that it can be accessed and updated efficiently.
Depending on your requirement and project, it is important to choose the right data
structure for your project. For example, if you want to store data sequentially in the memory,
then you can go for the Array data structure.
Data structures are generally based on the ability of a computer to fetch and store
data at any place in its memory, specified by a pointer—a bit string, representing a memory
address, that can be itself stored in memory and manipulated by the program. Thus, the array
and record data structures are based on computing the addresses of data items with arithmetic
operations, while the linked data structures are based on storing addresses of data items
within the structure itself.
The development process begins with crafting a high-level design that defines the
application's architecture and selecting the appropriate technology stack. Secure user
authentication and authorization mechanisms are implemented, using methods like
email/phone verification and password hashing.
Coding Learning offers structured video lessons, interactive quizzes, and real-time
collaboration to enhance coding skills. Learners earn certificates upon course completion,
showcasing their achievements.
For the Book Explorer application, developed using React Native for the frontend,
Node.js and Express for the backend, and MongoDB Atlas for the database, a well-structured
database design is crucial. The design process involves identifying key data entities such as
book profiles, user profiles, reading progress, and audiobooks. Proper normalization is
essential to reduce redundancy and maintain data integrity. Data models will be created to
represent these entities, with relationships defined to link users to their libraries, goals, and
reading activity. Implementing the database on MongoDB Atlas,
15
3.5 Input Design
Designing input for the Book Explorer app involves creating intuitive user interfaces
and forms that offer a seamless experience for users. Input fields are designed for features
such as adding books, updating reading progress, and managing user profiles, with clear
labels and instructions for ease of use. Input validation is crucial for ensuring the accuracy of
user data, with helpful error messages to guide users in correcting mistakes. Security
measures, such as encrypted data transmission and password protection, are implemented to
safeguard user information. The input design aims to provide a hassle-free experience while
being scalable for future feature additions like advanced search filters and audiobook entries.
In the context of the Book Explorer app, developed using React Native, Node.js,
Express, and MongoDB Atlas, the output design plays a key role in delivering information to
users in a clear and engaging way. Data presentation, such as book profiles, reading progress,
and personalized recommendations, is designed to be user-friendly and visually appealing. The
layout should allow for customization and easy access to relevant book details, summaries, and
audiobooks. Each output element is organized to ensure intuitive navigation, enabling users to
make informed reading decisions. The design remains flexible and scalable, allowing for future
expansion and new features, ensuring a seamless user experience.
16
Testing and Implementation
4. TESTING AND IMPLEMENTATION
4.1 Testing
Software testing is a critical process aimed at identifying errors and defects in software.
It serves as a final review of all the previous phases of software development, including
specification, design, and code generation. Ultimately, software testing is a crucial part of the
software development life cycle, serving as a key means of guaranteeing that the software
functions as intended and meets the expectations of users.
Usability Testing:
This type of testing ensures that the application is easy to use and understand for the
intended users. Usability testing for a BOOK EXPLORER APPLICATION would involve
testing the user interface design, navigation, and overall user experience.
Performance Testing:
This type of testing ensures that the application performs well under different
conditions, such as high traffic or slow network connections. Performance testing for a BOOK
EXPLORER APPLICATION would include testing page load times, response times for API
calls, and overall system performance under different loads.
Security Testing:
This type of testing ensures that the application is secure and protects user data from
unauthorized access or other security threats. Security testing for a BOOK EXPLORER
APPLICATION would include testing authentication and authorization, input validation, and
handling of sensitive data such as payment information.
17
4.2 Quality Assurance
A project can encounter a range of generic risks that have the potential to impede its
success. Security risks, for example, may involve data breaches or hacking that could
compromise the confidentiality and integrity of sensitive data.
Technical risks such as system failure, bugs, and scalability issues can impact the
performance and availability of the system. Legal risks such as non-compliance with
regulations and laws could lead to legal action and reputational damage.
These generic risks are applicable to all projects, regardless of their industry or specific
technology used.
BOOK EXPLORER APPLICATIONs may face a variety of generic risks that could
potentially impact their success. Security risks such as data breaches and hacking attacks can
compromise the confidentiality and integrity of sensitive data.
Technical risks like system failures, bugs, and scalability issues can affect the system's
performance and availability.
Legal risks such as non-compliance with regulations and laws can lead to legal action
and damage to the organization's reputation. Operational risks such as insufficient
infrastructure, inadequate project management, and lack of resources can also impact the
success of the project.
18
4.2.2 Security Aspects and Policies
In Book Explorer projects, security is a critical aspect that requires several policies and
protocols to be implemented. Regular security audits should be conducted to assess the
application's security posture and identify any areas for improvement.
To ensure that the project is secure, software updates and patches should be applied
regularly to protect against known vulnerabilities. It is important to encrypt sensitive data such
as credit card information and personal details using encryption technologies like SSL/TLS
and HTTPS to protect data at rest and data in transit.
Secure payment gateways that are certified by the Payment Card Industry Data
Security Standard (PCI-DSS) should be used to safeguard transactions. Access control policies
such as secure login and authentication systems, password policies, and user permissions
should be implemented to ensure that only authorized personnel have access to the application
and its data.
Strong user authentication systems, regular security audits, and backup and disaster
recovery plans are essential to prevent unauthorized access and protect against potential data
loss. Compliance with regulatory requirements such as GDPR, CCPA, and HIPAA is also
necessary to maintain data security and protect customers' privacy.
19
4.4 System Maintenance
3. Backing up data
Regularly backing up application data is essential to ensure that data is not lost in the
event of a system failure or other catastrophic event.
4. Testing
Regularly testing the application's various components and features is critical to
identify any bugs or errors that may occur and to ensure that the application functions as
intended.
20
Conclusion
5. CONCLUSION
In summary, developing a book explorer application using the React Native, Node.js,
and MongoDB stack establishes an agile and effective platform for connecting readers with a
vast collection of books. This technology combination offers versatility across platforms, real-
time functionality, scalability, and adaptability in managing book-related data. It ensures a
seamless and user-friendly experience, empowering users to discover, explore, and engage with
various genres, authors, and audiobooks. By harnessing the strengths of React Native, Node.js,
and MongoDB, the application supports book lovers in curating their personalized reading
experiences and fosters a thriving literary community.
Furthermore, the conversion of Book Explorer mobile application into a MERN stack-
based solution lays a robust foundation for success. By Reading React Native for the frontend
and implementing Node.js and Express for the backend, you can establish a highly efficient
and user-centric platform for connecting Book enthusiasts with their potential.
The utilization of MongoDB for data storage ensures adaptability and scalability, which
are pivotal for efficiently managing Book-related information. To successfully execute this
project, it is imperative to adhere to best practices, encompassing the definition of clear project
objectives, the creation of a meticulously planned project structure, the design and development
of essential features, comprehensive testing, and the implementation of effective marketing
strategies.
In the real of book exploration, the future holds immense potential for creating a more
personalized and engaging experience for users. One key enhancement would be to develop an
like genre and author. This system could analyze user behavior, reading patterns, and favorite
themes to provide more tailored book suggestions, making the discovery process more intuitive
and enjoyable. Furthermore, incorporating a mood-based recommendation feature would allow
users to select books that align with their current emotions or interests, offering a more
personalized reading experience.
21
Bibliograph
6.1 Book Reference
1."Learning React: A Hands-On Guide to Building Web Applications Using React and
Redux", Author: Kirupa Chinnathambi, Publisher: Addison-Wesley Professional, Year:
2020, Edition: 2nd, Details: Covers React fundamentals like components, state, lifecycle,
hooks, and Redux integration. Suitable for beginners with practical examples and exercises.
2."Pro MERN Stack: Full Stack Web App Development with Mongo, Express, React,
and Node", Author: Vasan Subramanian, Publisher: Apress, Year: 2019, Edition: 2nd,
Details: Guides full-stack development with in-depth coverage of MongoDB, Express, React,
and Node.js. Includes real-world application examples.
4."The Road to React: Your Journey to Master React.js in JavaScript", Author: Robin
Wieruch, Publisher: Independently Published, Year: 2020, Edition: 4th, Details: Step-
bystep React mastery with real-world applications, focusing on functional components,
hooks, and state management.
5."MongoDB: The Definitive Guide: Powerful and Scalable Data Storage", Authors:
Shannon Bradshaw, Eoin Brazil, Kristina Chodorow, Publisher: O'Reilly Media, Year:
2019, Edition: 3rd, Details: Comprehensive guide on MongoDB covering architecture, data
modeling, and performance optimization for scalable data solutions.
These books provide in-depth knowledge on MERN stack development, from React front-end
programming to server-side scripting with Node.js and managing databases using MongoDB
22
Web References:
React Native
https://reactnavigation.org/docs/getting-started/
https://www.tutorialspoint.com/react_native/index.htm
https://reactnative.dev/
https://reactnavigation.org/
https://reactnative.dev/docs/profiling
https://reactnative.dev/docs/signed-apk-android
https://reactnative.dev/docs/testing-overview
Redux
https://redux.js.org/
NodeJS
https://nodejs.dev/en/learn/
https://www.tutorialspoint.com/nodejs/index.htm
MongoDB
https://www.tutorialspoint.com/mongodb/index.htm
Express
https://www.tutorialspoint.com/expressjs/index.htm
NPM Website
https://www.npmjs.com/
NVM
https://github.com/nvm-sh/nvm
23
References
Annexures
Annexure-A – Input Design
24
Signup Screen Setting Screen
25
Annexure-A – Output Design
26
Read Screen Audio Book Screen
27
Admin Screen Add Book Screen
28
Annexure-C – Source Code
App.js
import React from 'react';
import { NavigationContainer } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';
import UserLoginScreen from './components/User/UserLogin';
import AdminLoginScreen from './components/Admin/AdminLogin';
import UserRegistrationScreen from './components/User/UserRegister';
import ForgotPasswordScreen from './components/User/ForgotPassword';
import BookDetailsScreen from './components/User/BookDetailsScreen';
import Apps from './components/User/api';
import BookDetail from './components/User/book';
import { SettingsProvider } from './components/User/SettingsContext';
import HomeTabs from './components/User/HomeTabs';
import ProfileScreen from './components/User/Profile';
import AdminDashboard from './components/Admin/AdminDashboard';
import OnboardingScreen from './components/User/OnboardingScreen';
/>
const Stack = createNativeStackNavigator();
function App() {
return (
<SettingsProvider>
<NavigationContainer>
<Stack.Navigator initialRouteName="OnboardingScreen">
<Stack.Screen name="OnboardingScreen" component={OnboardingScreen}
options={{ headerShown: false }} />
<Stack.Screen name="UserLoginScreen" component={UserLoginScreen}
options={{ headerShown: true }} />
<Stack.Screen name="AdminLoginScreen" component={AdminLoginScreen}
/>
<Stack.Screen name="UserRegister" component={UserRegistrationScreen} />
}}
29
<Stack.Screen name="ForgotPasswordScreen"
component={ForgotPasswordScreen} />
<Stack.Screen name="Apps" component={Apps} />
<Stack.Screen name="BookDetails" component={BookDetailsScreen} />
<Stack.Screen name="HomeTabs" component={HomeTabs} options={{
headerShown: false }} />
<Stack.Screen name="ProfileScreen" component={ProfileScreen} />
<Stack.Screen name="BookDetail" component={BookDetail} />
<Stack.Screen name="AdminDashboard" component={AdminDashboard} />
</Stack.Navigator>
</NavigationContainer>
</SettingsProvider>
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#fff',
alignItems: 'center',
justifyContent: 'center',
},
});
Signup.js
import React, { useState } from 'react';
import { View, Text, Image, SafeAreaView, StyleSheet, TextInput,
TouchableOpacity, Alert, KeyboardAvoidingView, Platform } from 'react-native';
import { useNavigation } from '@react-navigation/native';
import { Ionicons } from '@expo/vector-icons';
import AsyncStorage from '@react-native-async-storage/async-storage'; // Import
AsyncStorage
32
30
const response = await fetch('http://172.20.10.4:8000/api/users/login', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ email, password }),
});
if (!response.ok) {
const errorData = await response.json();
throw new Error(errorData.message || 'Login failed');
}
31
};
return (
<SafeAreaView style={styles.container}>
<KeyboardAvoidingView
behavior={Platform.OS === 'ios' ? 'padding' : 'height'}
style={styles.innerContainer}
>
<View style={styles.logoContainer}>
<Image source={require('../../assets/book.png')} style={styles.logo} />
<Text style={styles.title}>Login</Text>
</View>
<View style={styles.formContainer}>
<View style={styles.inputContainer}>
<Ionicons name="mail-outline" size={20} color="#555" style={styles.icon}
/>
<TextInput
style={styles.input}
onChangeText={setEmail}
value={email}
placeholder="Enter your email"
autoCapitalize="none"
autoCorrect={false}
keyboardType="email-address"
placeholderTextColor="#888"
/>
</View>
Successfully');
navigation.navigate('Login');
}} )
} }}
return (
32
<View style={styles.container}>
<Image style={styles.logoimg} source={Logo} />
<View style={styles.container1}>
<View style={styles.s1}>
</View>
<ScrollView style={styles.s2}>
<Text style={head1}>Create a New Account</Text>
<Text style={link2}>Already Registered? <Text style={link}
onPress={()=>navigation.navigate('Login')}>
Login here
</Text></Text>
{
errormsg ? <Text style={errormessage}>{errormsg}</Text> : null
}
<View style={formgroup}>
<Text style={label}>Name</Text>
<TextInput style={input} placeholder='Enter your name'
placeholderTextColor="black"
onPressIn={()=> setErrormsg(null)}
onChangeText={(text) => setFdate({...fdata, name: text})} />
</View>
<View style={formgroup}>
<Text style={label}>Email</Text>
<TextInput style={input} placeholder='Enter your Email'
placeholderTextColor="black"
onPressIn={()=> setErrormsg(null)}
onChangeText={(text) => setFdate({...fdata, email: text})} />
</View>
<View style={formgroup}>
<Text style={label}>Phone</Text>
<TextInput style={input} placeholder='Enter your Mobile Number'
placeholderTextColor="black"
onPressIn={()=> setErrormsg(null)}
onChangeText={(number) => setFdate({...fdata, phone: number})} />
33
<View style={styles.inputContainer}>
<TextInput
style={styles.input}
onChangeText={setPassword}
value={password}
placeholder="Enter your password"
secureTextEntry={!passwordVisible}
placeholderTextColor="#888"
/>
<TouchableOpacity onPress={() => setPasswordVisible(!passwordVisible)}>
<Ionicons name={passwordVisible ? 'eye-off-outline' : 'eye-outline'}
size={20} color="#555" style={styles.icon} />
</TouchableOpacity>
</View>
34
// Styles remain the same as previously defined
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#FFFFFF',
},
innerContainer: {
flex: 1,
justifyContent: 'center',
padding: 16,
},
logoContainer: {
alignItems: 'center',
marginBottom: 40,
},
logo: {
height: 150,
width: 150,
marginBottom: 16,
},
title: {
fontSize: 36,
color: '#333',
fontWeight: 'bold',
},
formContainer: {
backgroundColor: '#FFFFFF',
padding: 24,
borderRadius: 16,
shadowColor: '#000',
shadowOffset: { width: 0, height: 2 },
shadowOpacity: 0.1,
shadowRadius: 8,
elevation: 5,
35
},
inputContainer: {
flexDirection: 'row',
alignItems: 'center',
marginVertical: 12,
borderColor: '#DDD',
borderWidth: 1,
borderRadius: 12,
paddingHorizontal: 16,
backgroundColor: '#F9F9F9',
},
icon: {
marginRight: 8,
},
input: {
flex: 1,
height: 50,
fontSize: 16,
},
buttonContainer: {
marginTop: 24,
backgroundColor: '#4CAF50',
paddingVertical: 14,
borderRadius: 12,
alignItems: 'center',
shadowColor: '#000',
shadowOffset: { width: 0, height: 2 },
shadowOpacity: 0.2,
shadowRadius: 8,
elevation: 3,
},
buttonText: {
color: '#FFF',
fontSize: 18,
36
fontWeight: '600',
},
forgotPasswordText: {
marginTop: 16,
textAlign: 'center',
color: '#888',
textDecorationLine: 'underline',
fontSize: 14,
},
createAccountText: {
marginTop: 20,
textAlign: 'center',
color: '#4CAF50',
fontWeight: '600',
fontSize: 16,
},
});
createAccountText: {
marginTop: 20,
textAlign: 'center',
color: '#4CAF50',
fontWeight: '600',
fontSize: 16,
},
});
Hometabs.js
import React from 'react';
import { createBottomTabNavigator } from '@react-navigation/bottom-
tabs';
37
import HomeScreen from './HomeScreen'; // Your Home Dashboard
import SettingsScreen from './SettingsScreen'; // Settings section
import Apps from './api';
import AudiobookPlayer from './AudiobooksScreen'; // Audiobooks
section (create this if not done)
import { Ionicons } from '@expo/vector-icons';
},
tabBarActiveTintColor: 'tomato',
tabBarInactiveTintColor: 'gray',
})}
>
<Tab.Screen name="Home" component={HomeScreen} />
<Tab.Screen name="Google Api" component={Apps} />
<Tab.Screen name="Audiobooks" component={AudiobookPlayer} />
<Tab.Screen name="Settings" component={SettingsScreen} />
</Tab.Navigator>
);
}
38