You are on page 1of 44

SOFTWARE REQUIREMENT SPECIFICATION

1 Introduction.........................................................................................................................................5
Purpose of the document...................................................................................................................5
Scope of the document.......................................................................................................................5
Product Overview...............................................................................................................................5
Document Overview...........................................................................................................................6
2. Abbreviations......................................................................................................................................6
3. References..........................................................................................................................................6
3.1 Project Requirement References..................................................................................................6
4. Architecture........................................................................................................................................7
4.1 Goals and objectives.....................................................................................................................7
4.3 Major components.........................................................................................................................
..........................................................................................................................................................1
............................................................................................................................................................
..........................................................................................................................................................12
4.3.1. Frontend Client.......................................................................................................................12
4.3.2. API Service..........................................................................................................................13
4.3.3. Auth Middleware................................................................................................................13
4.3.4. RBAC Middleware...............................................................................................................13
4.3.5. Routing Middleware...........................................................................................................14
4.3.6. Authentication handler.......................................................................................................15
4.3.7. User Management..............................................................................................................15
4.3.8. API Response Builder..........................................................................................................15
4.3.9. Email Service......................................................................................................................15
4.4. family tree..................................................................................................................................15
4.4.1. Restaurant...............................................................................Error! Bookmark not defined.
4.4.2. Room Service:.........................................................................Error! Bookmark not defined.
4.4.3. Gym:........................................................................................Error! Bookmark not defined.
4.4.4. Transportation:.......................................................................Error! Bookmark not defined.
4.4.5. Laundry:..................................................................................Error! Bookmark not defined.
4.4.6. Store:......................................................................................Error! Bookmark not defined.
4.4.7. Shop Store:..............................................................................Error! Bookmark not defined.
4.4.8. Banquet Hall (Man Hall):.........................................................Error! Bookmark not defined.
4.4.9. Front Office:............................................................................Error! Bookmark not defined.
4.4.10. HR:........................................................................................Error! Bookmark not defined.
4.4.11. Payroll:..................................................................................Error! Bookmark not defined.
4.4.12. Accounts:..............................................................................Error! Bookmark not defined.
4.4.13. Bar:.......................................................................................Error! Bookmark not defined.
4.4.14. Health Spa:............................................................................Error! Bookmark not defined.
5. DB Schema........................................................................................................................................17
6. Technical Specification......................................................................................................................24
7. Technical Assumptions & Constraints...............................................................................................25
8. Justification of Architecture..............................................................................................................25
8.1. Modularity and Scalability:........................................................................................................26
8.2. Client-Server Architecture:.........................................................................................................26
8.3. Web-Based Interface:.................................................................................................................26
8.4. Relational Database Management System (RDBMS):.................................................................26
8.5. Service-Oriented Architecture (SOA):........................................................................................27
8.6. Security Measures:....................................................................................................................27
8.7. Real-Time Processing:................................................................................................................27
8.8. Cloud Integration:......................................................................................................................27
8.9. Mobile Responsiveness:.............................................................................................................27
8.10. Backup and Recovery Mechanisms:.........................................................................................27
9. Availability........................................................................................................................................28
9.1 Measures....................................................................................................................................28
9.1.1 Continuous Monitoring:...........................................................Error! Bookmark not defined.
9.1.2 User Training and Support:......................................................Error! Bookmark not defined.
9.1.3 Regular Updates and Maintenance:.........................................Error! Bookmark not defined.
9.1.4 Security Audits and Compliance Checks:.................................Error! Bookmark not defined.
9.1.5 Backup and Recovery Testing:..................................................Error! Bookmark not defined.
9.1.6 User Feedback and Improvement:...........................................Error! Bookmark not defined.
9.1.7 Scalability Planning:.................................................................Error! Bookmark not defined.
9.1.8 Documentation and Knowledge Sharing:.................................Error! Bookmark not defined.
9.1.9 Disaster Recovery Planning:.....................................................Error! Bookmark not defined.
9.1.10 Cost Optimization:.................................................................Error! Bookmark not defined.
9.1.11 Integration with Emerging Technologies:...............................Error! Bookmark not defined.
9.1.12 Feedback and Reporting Mechanisms:..................................Error! Bookmark not defined.
9.1.13 Cybersecurity Measures:........................................................Error! Bookmark not defined.
9.1.14 Comprehensive Documentation for Support Teams:.............Error! Bookmark not defined.
9.1.15 Regular Testing:......................................................................Error! Bookmark not defined.
9.2 Recovery Plan..............................................................................................................................29
9.3 Fault Detection............................................................................................................................30
10. Scalability........................................................................................................................................31
11. Performance...................................................................................................................................33
11.1. Performance metrics................................................................................................................33
11.2. Sharing the load with the client...............................................................................................33
11.3. Caching....................................................................................................................................33
11.4. Limiting the Number of Microservices.....................................................................................33
11.5. Microservices...........................................................................................................................33
11.6. Choice of Technology...............................................................................................................34
11.7. Database Performance.............................................................................................................34
11.8. Pre-Application Server Caching Techniques.............................................................................34
11.9. Optimizing Static Contents.......................................................................................................34
11.10. TTFB.......................................................................................................................................34
11.11. Gzip Compression..................................................................................................................34
11.12. Asynchronously Loading JS....................................................................................................35
11.13. The Dependencies.................................................................................................................35
12. Testing.............................................................................................................................................35
12.1 Functional Testing:....................................................................................................................35
12.2 Usability Testing:.......................................................................................................................35
12.3 Interface Testing:.......................................................................................................................36
12.4 Performance Testing:................................................................................................................36
12.5 Digital Twin Testing:..................................................................................................................36
13. Maintenance...................................................................................................................................36
14. Security Measures..............................................................................Error! Bookmark not defined.
15. Deployment Strategy......................................................................................................................39
16. CI/CD...............................................................................................................................................39
16.1 GitHub Actions..........................................................................................................................39
17. Application/Infrastructure Monitoring...........................................................................................40
17.1 New Relic..................................................................................................................................40
18. Disaster Recovery...........................................................................................................................40
18.1. Disaster Recovery:....................................................................................................................40
18.2. Backup and Restore:................................................................................................................41
18.3. Multi-Region Disaster Recovery:..............................................................................................41
19. Future Scope...................................................................................................................................41
20. Development Phase........................................................................................................................43
20.1 Initiation and Planning:.............................................................................................................43
20.2 Design and Prototyping:............................................................................................................43
20.3 Development and Implementation:..........................................................................................43
20.4 Transition and Support..............................................................................................................44

20.5 Ongoing Maintenance and Upgrades:.......................................................................................44


1 Introduction
Purpose of the document
This software Requirement Specification (SRS) is intended to offer a complete architectural
overview of the family tree project . The purpose of developing a application for a family tree
project is to leverage the capabilities of digital technology to enhance the experience of
creating, managing, and sharing family trees . The Family Tree Application is a digital
platform designed to facilitate the creation, management, and exploration of family trees. Its
primary purpose is to provide users with a centralized and interactive tool for documenting
their family history, tracing, lineage, and preserving cherished memories. The paper
describes the structure, design, components, and concepts utilized in the creation of the
software system. The document assures that the system is scalable and maintained throughout
time, as well as identifying possible risks.

Scope of the document


The scope of this SRS provides an overall description of the system and its intended
architecture. The software requirement specification (SRS) defines and describes the system’s
objectives, functional and non-functional requirements, components, structures and models of
the system, the components of the system and the interactions with each other, the
frameworks and technologies that will be used to test the system, the processes, and
procedures needed to support the system safe guards taken to ensure system’s usability,
security and integrity.

Product Overview
Family Tree Web Application offers a comprehensive solution for individuals and families
seeking to document, preserve, and explore their familial heritage online. With a user-friendly
interface and powerful features, our application is designed to make building and sharing
family trees intuitive and enjoyable .Our Family Tree Web Application offers a user-friendly
and feature-rich platform for documenting, preserving , and sharing your family history.
Whether you're a genealogy enthusiast or simply curious about your roots, our application
provides the tools and resources you need to explore your familial heritage with ease. Start
building your family tree today and discover the stories and connections that make your
family unique
Document Overview
This document describes the initial architecture of family tree

The document includes

1. The system description.


2. The logical components in the system.
3. Technical specifications
4. The technical architecture justification.
5. Security measures to be considered

2. Abbreviations
1. API: Application Programming Interface
2. UI: User Interface
3. UX: User Experience
4. REST: Representational State Transfer
5. ORM: Object-Relational Mapping
6. DB: Database
7. SQL: Structured Query Language
8. CDN: Content Delivery Network
9. JS: JavaScript
10. RBAC: Role Based Access Control

3. References
3.1 Project Requirement References
4. Architecture
4.1 Goals and objectives
The overall objective of a family tree project is typically to comprehensively document and
preserve the genealogical heritage of a family. This involves tracing ancestral lines, recording
family relationships, documenting significant events and milestones, and creating a visual
representation of the family's lineage.
1. User Engagement: Increase user engagement by providing a compelling and intuitive
user experience that encourages users to explore, document, and share their family history.
2. Data Accuracy and Integrity: Ensure the accuracy and integrity of family tree data by
providing robust validation mechanisms, data verification tools, and user-friendly interfaces
for data entry and editing.
3. Collaboration and Community Building: Foster collaboration and community building
among users by providing features such as shared family trees, collaborative editing, and
discussion forums for knowledge sharing and collaboration on research projects.
4. Accessibility and Inclusivity: Ensure accessibility and inclusivity by providing features
and accommodations for users with disabilities, supporting multiple languages, and
promoting diversity and cultural sensitivity in the application's content and design.
5. Privacy and Security: Uphold the highest standards of privacy and security to protect
user data and sensitive information, including implementing encryption, authentication,
access controls, and compliance with data protection regulations.
6. Innovation and Technology Adoption: Embrace innovation and leverage emerging
technologies such as AI, machine learning, virtual reality, and blockchain to enhance the
application's functionality, user experience, and research capabilities.
7. Education and Outreach: Educate users about genealogy, family history research, and
historical context through educational resources, tutorials, and interactive learning
experiences integrated into the application.
8. Scalability and Performance: Build a scalable and high-performance architecture that
can accommodate growing user demand, handle large volumes of data, and provide
responsive and reliable service under heavy load conditions.
9. Continuous Improvement and Feedback: Solicit user feedback and actively incorporate
user input into the development process to prioritize feature enhancements, address usability
issues, and ensure alignment with user needs and preferences.
10. Preservation of Cultural Heritage: Facilitate the preservation and celebration of
cultural heritage by empowering users to document, preserve, and share their family stories,
traditions, and ancestral connections with future generations.
11. Global Reach and Impact: Expand the reach and impact of the application by catering
to diverse audiences worldwide, supporting multilingual interfaces, and collaborating with
international organizations and communities focused on genealogy and cultural heritage.
12. Ethical and Responsible Use: Promote ethical and responsible use of the application by
fostering a respectful and inclusive community, adhering to ethical guidelines for data
collection and research, and promoting transparency and accountability in all aspects of
operation.
The Family Tree Web Application can fulfill its mission of empowering users to discover,
preserve, and share their family history while fostering collaboration, innovation, and connection
among individuals and communities worldwide.

Nonfunctional Requirements

1. Performance:
 Response Time: The application should have fast response times, with pages
loading within a few seconds to provide a seamless user experience.
 Scalability: The system should be able to handle a large number of concurrent
users and scale horizontally to accommodate increased traffic during peak periods.
 Throughput: The application should be capable of processing a high volume of
requests efficiently without experiencing degradation in performance.
2. Reliability:
 Availability: The application should be highly available, with minimal downtime
for maintenance or updates, ensuring users can access their family tree data at all
times.
 Fault Tolerance: The system should be resilient to failures, with mechanisms in
place to recover quickly from hardware failures, software errors, or network
outages.
 Data Integrity: The application should ensure the integrity of user data, with
safeguards in place to prevent data corruption, loss, or unauthorized access.
3. Security:
 Authentication and Authorization: The system should authenticate users
securely and enforce access controls to ensure that only authorized users can view,
edit, or delete family tree data.
 Data Encryption: Sensitive data, including user credentials and personal
information, should be encrypted both at rest and in transit to protect against
unauthorized access and data breaches.
 Audit Logging: The application should log security-related events, user activities,
and system changes for auditing purposes to track and investigate security
incidents.
4. Usability:
 Accessibility: The application should be accessible to users with disabilities,
adhering to accessibility standards such as WCAG (Web Content Accessibility
Guidelines) to ensure inclusivity and usability for all users.
 User Interface (UI) Design: The user interface should be intuitive, visually
appealing, and consistent across different devices and screen sizes, enhancing
usability and user satisfaction.
 Error Handling: The application should provide informative error messages and
guidance to users in case of errors or validation failures, helping them understand
and resolve issues effectively.
5. Scalability and Maintainability:
 Modularity: The system should be designed with modular components and clean
code architecture to facilitate ease of maintenance, code reuse, and future
enhancements.
 Documentation: Comprehensive documentation should be provided for
developers, administrators, and end-users, including system architecture, API
documentation, and user guides to support maintainability and knowledge transfer.
 Automated Testing: Continuous integration and automated testing pipelines
should be established to ensure code quality, identify regressions, and validate
system changes without manual intervention.
6. Compliance:
 Regulatory Compliance: The application should comply with relevant
regulations and standards, such as GDPR (General Data Protection Regulation)
for data privacy and security, to protect user rights and mitigate legal risks.
 Industry Standards: The system should adhere to industry best practices and
standards for web development, security, and performance to maintain quality and
compatibility with other systems and services.
7. Performance Monitoring and Optimization:
 Monitoring: Implement monitoring tools and performance metrics to track
system performance, resource utilization, and user interactions, enabling proactive
optimization and troubleshooting.
 Optimization: Continuously optimize the application's performance, database
queries, and server configurations to minimize latency, reduce load times, and
improve overall responsiveness for users.
functional Requirements.

Functional Requirements for the Family Tree Web Application:


1. User Registration and Authentication:
 Users should be able to register for an account by providing basic information
such as username, email, and password.
 The system should authenticate users securely, verifying their identity before
granting access to the application.
2. Family Tree Creation and Management:
 Users should be able to create multiple family trees, each representing a distinct
lineage or branch of their family.
 The system should allow users to add, edit, and delete individuals within their
family trees, including details such as names, dates of birth, and relationships.
3. Visualization of Family Trees:
 The application should provide interactive visualizations of family trees, allowing
users to navigate through generations, view family relationships, and explore
ancestral connections.
 Users should be able to expand and collapse branches of the family tree to focus
on specific ancestors or descendants.
4. Collaboration and Sharing:
 Users should have the option to invite family members or collaborators to view or
contribute to their family trees.
 Collaborators should be able to add new individuals, edit existing entries, and
annotate family tree data with additional information or comments.
5. Research Assistance:
 The system should integrate with genealogical databases and historical records to
provide research assistance, including access to census records, birth/death
certificates, and immigration records.
 Users should be able to search and browse external databases directly from the
application and import relevant information into their family trees.
6. Media and Document Management:
 Users should be able to upload and attach media files such as photos, documents,
and audio recordings to individuals within their family trees.
 The system should support the organization and categorization of media files,
allowing users to tag individuals, events, and locations for easy retrieval.
7. Privacy and Access Control:
 Users should have control over the privacy settings of their family trees, with
options to set visibility levels (e.g., public, private, or restricted access).
 The system should implement access controls to ensure that only authorized users
can view or edit sensitive information within family trees.
8. Notifications and Alerts:
 The application should send notifications and alerts to users for important events
such as new invitations, collaboration requests, or changes to shared family trees.
 Users should be able to customize their notification preferences and frequency.
9. Export and Backup:
 Users should have the ability to export their family tree data in standard formats
such as GEDCOM (Genealogical Data Communication) for backup purposes or
for importing into other genealogy software.
 The system should regularly backup user data to prevent loss in case of system
failures or data corruption.
10. Search and Filtering:
 The application should provide robust search and filtering capabilities, allowing
users to search for individuals, events, or annotations within their family trees.
 Users should be able to filter search results based on criteria such as name, date of
birth, relationship, or geographic location.
DATA FLOW DIAGRAM:
LEVEL 0
LEVEL 1

4.3 Major components

4.3.1. Frontend Client


The purpose of the frontend client is to provide an interactive and user-friendly environment
for users to interact with the software application. By using HTML, CSS, Bootstrap,
JavaScript, jQuery and Ajax or React the frontend client can be customized to create a unique
experience for the user. The frontend client also allows for the interface to be responsive.
Overall, the frontend client is an important component of the software application. It is
responsible for providing a user-friendly environment and should be optimized for
performance.
4.3.2. API Service
The data is transformed by the API service, which is a component of the application's front
end, using the format given in the API schema. After that, an HTTPs Request containing the
data will be sent to the backend API.

4.3.3. Auth Middleware


Token-based authentication is used to validate the identity of users. The standard for the
token will be JSON web Token. The system returns an authentication token upon successful
login using username and password. The authentication token is supplied in the request
header. Auth middleware is a sort of software that is used to authenticate and authorize users
to access certain areas of a website or service. It is in charge of confirming a user's
identification, authorizing or refusing access to specific services or data, and protecting the
security of information. The primary function of authentication middleware is to prevent
unauthorized access to websites and apps. It accomplishes this by using an auth token to
verify the user's identity. The middleware can then permit or refuse access to the requested
resource once the user has been authenticated. Auth middleware can also be used to safeguard
sensitive information. It can also be used to encrypt data and restrict access to only
authorized people. The Auth Middleware examines the request object and validates the
request and authentication token. On successful processing and validation of the
authentication token, the request will be forwarded to the RBAC middleware. Otherwise, the
request is deemed Unauthorized.
4.3.4. RBAC Middleware
The role-based access control policy verifies whether the requesting user is
a. Super Admin
b. Organization Admin
c. Organization Users
d. Public Users
The RBAC middleware checks if the user is authorized to access a specific service based on
the system rules. If the RBAC rules prevent the user's role from accessing the resource, the
user will be denied access. Role-Based Access Control (RBAC) is a type of access control
that is used to control access to sensitive resources in a computer system. RBAC allows
administrators to manage user access to resources depending on the user's organizational role.
The system is built on the idea that users should only have access to resources that are
relevant to their position. RBAC is used to decrease the possibility of illegal resource access.
It also helps to ensure that users are only able to access the resources that are necessary for
their job. RBAC is a popular access control model because it is easy to implement and
manage. RBAC is implemented through a middleware layer. The middleware layer is
responsible for authenticating users and controlling access to resources. It also handles
authorization requests and ensures that users are only granted access to the resources they are
allowed to access. The policies that are used in RBAC are typically based on roles and
permissions. Roles are used to defining the different types of users that are allowed to access
the system. Permissions are used to define the resources that users are allowed to access. The
middleware layer is also responsible for ensuring that users are only granted access to the
resources that they are authorized to access. This is done by checking the user's role and
permissions to ensure that they are allowed to access the requested resource. If the user does
not have the necessary permissions, then the request is denied. RBAC middleware can also
be used to audit user activity. The process involves monitoring user behaviour and entering it
into a central database. This can be used to examine user behaviour and identify any
questionable behaviour. A crucial part of any security system is RBAC middleware. It is
employed to safeguard private information and guarantee that users are only given access to
resources to which they are legally permitted. It also facilitates user activity auditing and
lessens the possibility of unlawful access to resources. The request will move on to the
following part if RBAC middleware grants the user access to the resource. Should this not be
the case, the Frontend Client will receive an HTTP status 403 Forbidden along with a notice.
The frontend client after login will be requesting permissions allowed for the user. The
Forbidden request can happen if the permissions or roles were modified after login. Any other
occurrence will be accessed by unauthorized users/clients or unresolved bugs.

4.3.5. Routing Middleware


Acts as a bridge between an application and the web server. It is used for the purpose of
routing requests between the application and the web server. Routing middleware helps to
create a more efficient, secure, and manageable web application by providing a layer of
abstraction between the application and the web server. Routing middleware can be used to
create a single point of entry for all requests to the application. This makes it easier to
manage requests and allows for the application to be better organized. By using routing
middleware, the application can be divided into smaller modules, which can be better
managed and tested. The routing activity will be performed based on the routing rules defined
in the system

4.3.6. Authentication handler


JSON token-based authentication is a type of authentication that uses JSON Web Tokens
(JWT) to securely transmit information between two parties. This type of authentication is
used for making sure that a user is who they say they are and that they have the necessary
permissions to access a resource. It is also used to protect against cross-site request forgery
(CSRF) attacks. JWT tokens are typically sent as part of an HTTP Authorization header and
can be used to authenticate a user, validate a user's identity, and provide additional security by
securely transmitting user data across networks. The creation of the JSON web token is done
by the Authentication handler. The client’s username and password will be validated. If the
credentials match the data stored in the database, an auth token will be created with an expiry.
This token will be valid until expiry is added during the time of creation. The authentication
handlers also have the privilege to reset passwords.

4.3.7. User Management


User management includes features permitting organization admins to
a. Create Role
b. Map User
c. Edit user’s role
d. Edit Role Features Mapping
e. Remove a User
f. Edit a Role name
g. List all users
h. List all roles
i. List all features

4.3.8. API Response Builder


The response for all the authorized requests will be generated by the API response builder
module.

4.3.9. Email Service


All the invites and email notifications will be triggered by Email Service.

4.4. Family tree


A family tree web application typically includes several key features to enable users to
create, explore, and share their family history. Here's a comprehensive list of features you
might consider including in such an application:
1. User Registration and Authentication:
 Allow users to create accounts and log in securely.
 Implement authentication mechanisms to protect user data and control
access to the application's features.
2. Dashboard:
 Provide users with a personalized dashboard upon logging in, showing
their family trees, recent activity, and notifications.
3. Family Tree Creation and Editing:
 Enable users to create new family trees and add/edit family members.
 Include options to specify relationships between family members (e.g.,
parent, child, spouse).
 Allow users to upload and attach photos or documents to family members.
4. Interactive Family Tree Visualization:
 Display family trees visually in an interactive and hierarchical format.
 Include features like zooming, panning, and collapsing/expand nodes for
better navigation.
 Highlight the active user's position in the family tree.
5. Search and Filter Functionality:
 Implement search functionality to find specific individuals within the family
tree.
 Provide filters to sort and organize family members based on criteria like
name, relationship, birthdate, etc.
6. Profile Pages for Family Members:
 Create detailed profiles for each family member, including personal
information (e.g., name, birthdate, place of birth), photos, and biographical
details.
 Allow users to add notes, stories, or other annotations to individual profiles.
7. Collaboration and Sharing:
 Enable users to invite family members to collaborate on family trees.
 Implement privacy settings to control who can view or edit specific family
trees.
 Provide options to share family trees via email, social media, or unique
URLs.
8. Timeline and Events:
 Allow users to add significant life events (e.g., births, marriages, deaths) to
individual profiles.
 Display timelines showing key events in each family member's life.
9. Genealogical Research Tools:
 Integrate with external genealogical databases and resources to provide
access to historical records, census data, and other genealogical
information.
 Offer features like smart matching to suggest potential relatives or
connections based on shared data.
10. Backup and Restore:
 Implement functionality to regularly backup family tree data and allow
users to restore previous versions if needed.
11. Notifications:
 Notify users of important updates, such as new invitations to collaborate,
changes to shared family trees, or upcoming events.
12. Mobile Responsiveness:
 Ensure the application is responsive and accessible across various devices,
including smartphones and tablets.
13. Accessibility Features:
 Implement accessibility features to ensure the application is usable by
individuals with disabilities, such as screen reader support and keyboard
navigation.
14. Support and Help Resources:
 Provide user documentation, FAQs, and support channels to assist users
with using the application and troubleshooting issues.

5. DB Schema

Members

Field name Data Type Constraints


Member ID INT Primary Key, Auto Increment
FirstName VARCHAR (50) Not null
LastName VARCHAR (50) Not null
Gender VARCHAR Not null
Date Of Birth DATE Not null
Place Of Birth VARCHAR (100) Not null
Date Of Death DATE Null
Place Of Death VARCHAR (100) Null
Relationship Table:

Column Data Type Constraints


Relationship ID INT Primary Key, Auto Increment
PersonID1 INT Foreign Key (references Person (Person ID))
PersonID2 INT Foreign Key (references Person (Person ID))

Relationship Type VARCHAR (50)

Date Of Marriage DATE

Event Table:

Column Data Type Constraints


Event ID INT Primary Key, Auto Increment
Person ID INT Foreign Key (references Person (Person ID))

Event Type VARCHAR (50)

Event Date DATE

Event Place VARCHAR (100)

Description TEXT

Photo Table:

Column Data Type Constraints


Photo ID INT Primary Key, Auto Increment
Person ID INT Foreign Key (references Person (Person ID))
Event ID INT Foreign Key (references Event (Event ID))

File Path VARCHAR (255)

Description TEXT
6. Technical Specification
Languages / Framework: Reason For Adoption
React.js Lightweight frontend library. Also supports
module federation which enables micro
frontend development
Node.js Ideal for building web servers Nonblocking
async Concurrency
Python Powerful data analysis libraries
Interoperability Machine learning
capabilities.

Cloud Services Reason For Adoption


AWS RDS Easier Managed deployments High
availability and read replicas Monitoring
and metrics Automated backup and restore
Highly secure
AWS SQS AWS managed Queue
AWS CloudFront Cost effective cdn Easy integration with
other aws services Edge computing
AWS S3 Highly available (99.9%) Highly scalable
Highly performant when combined with
CloudFront
AWS EC2/Fargate fargate: Seamless scaling Zero management
overhead

DATABASE Reason For Adoption


PostgreSQL Relational Database Performant -
Parallelization of read queries and powerful
indexing High level of reliability for the
data
MySQL MySQL can be attributed to its open-source
nature, cost-effectiveness, strong
community support, cross-platform
compatibility, performance, scalability,
reliability, ACID compliance, ease of use,
and integration capabilities.
MongoDB Document-oriented model, scalability,
flexible schema, performance, JSON-like
query language, aggregation framework,
geospatial capabilities, active community,
cross-platform compatibility, and
enterprisegrade features. These factors
collectively make MongoDB a suitable
choice for applications requiring flexibility,
scalability, and efficient handling of diverse
and evolving data structures.

7. Technical Assumptions & Constraints


Technical Assumptions:
1. The project should be able to integrate with existing ERP/accounting systems for storing
and managing transactional data.
2. It should be able to process online payments in a secure manner.
3. The user interface should be intuitive and user-friendly.
4. The system should be able to integrate with third-party software such as
booking/reservation systems.
5. The system should be scalable to accommodate additional features and functionalities.
Technical Constraints:
1. The system should be able to run on multiple platforms (Windows, iOS, Android).
2. The system should be able to perform operations autonomously with minimal user
input.
3. The system should have secure access control mechanisms to ensure data integrity
and confidentiality.
4. The system should be able to store data securely and transmit data in an encrypted
format.
5. The system should have built-in reporting and analytics capabilities.

8. Justification of Architecture
The justification of the architecture of a Family tree project) involves explaining the
reasoning behind the chosen design decisions. Here are key justifications for the architecture
of an Family tree project:
8.1. Modularity and Scalability:
▫ Adopting a modular architecture allows for the separation of different functional
components (e.g., reservations, inventory, payroll). This modularity enhances
scalability, making it easier to add or update individual modules without affecting the
entire system.
▫ Facilitates gradual system growth, accommodating new features or changes in the
future.

8.2. Client-Server Architecture:


▫ Choosing a client-server architecture enables a centralized server to manage data and
business logic, while clients (user interfaces) interact with the server. This separation
enhances data security, centralizes management, and facilitates easier updates.
▫ Centralized control over data ensures consistency and security, while clients provide
responsive user interfaces.

8.3. Web-Based Interface:


▫ Opting for a web-based interface ensures accessibility across various devices and
platforms. This is crucial in the hospitality industry where users may need to access
the system from different locations and devices.
▫ Improves user accessibility and flexibility, supporting a wider range of users.

8.4. Relational Database Management System (RDBMS):


▫ Using an RDBMS like MySQL or PostgreSQL facilitates structured data storage,
retrieval, and management. This is suitable for the complex data relationships often
found in hospitality management.
▫ Ensures data integrity, reliability, and supports complex queries for reporting and
analysis.
8.5. Service-Oriented Architecture (SOA):
▫ Adopting SOA allows for the development of services that can be independently
deployed and consumed. This fosters interoperability, making it easier to integrate
with third-party services or expand functionalities.
▫ Enhances flexibility, promotes reusability of services, and supports a more agile
development approach.

8.6. Security Measures:


▫ Implementing robust security measures, including encryption, access controls, and
regular audits, is crucial for protecting sensitive guest information and ensuring
compliance with data protection regulations.
▫ Mitigates the risk of data breaches, safeguards guest privacy, and maintains the system's
reputation.

8.7. Real-Time Processing:


▫ Incorporating real-time processing capabilities is essential for features such as room
availability updates, online reservations, and dynamic pricing adjustments.
▫ Improves user experience, responsiveness, and supports dynamic business operations.

8.8. Cloud Integration:


▫ Integrating with cloud services (e.g., AWS, Azure) provides scalability, flexibility, and
cost-effectiveness. Cloud platforms can handle varying workloads and reduce the
need for extensive infrastructure management.
▫ Enhances scalability, enables efficient resource utilization, and provides disaster
recovery options.

8.9. Mobile Responsiveness:


▫ Ensuring mobile responsiveness is vital as users, including staff and guests, may access
the system from different devices. A responsive design accommodates various screen
sizes.
▫ Improves user accessibility and usability, meeting the needs of users on the go.

8.10. Backup and Recovery Mechanisms:


▫ Implementing robust backup and recovery mechanisms ensures data integrity and
business continuity. Regular backups protect against data loss due to unforeseen
events.
▫ Minimizes the impact of system failures, enhances reliability, and supports quick
recovery in case of data loss.
The chosen architecture is tailored to meet the specific requirements of the hospitality
industry, balancing factors such as user experience, data security, scalability, and flexibility.
Regular evaluation and adaptation to industry trends and technological advancements are
essential to maintaining the system's effectiveness over time.

9. Availability
Once the family tree project is completed and operational, it's crucial to implement measures
to ensure ongoing performance, security, and adaptability. Here are some key measures for
the post-implementation phase:

9.1 Measures
1. User Authentication and Authorization:
 Enforce strong password policies, including minimum length, complexity
requirements, and password expiration.
 Implement account lockout mechanisms to prevent brute-force attacks.
 Utilize session management techniques to control user sessions and
prevent unauthorized access.
2. Data Minimization:
 Collect and store only the minimum amount of personal information
necessary for the family tree project.
 Implement anonymization or pseudonymization techniques to protect
the identities of individuals in the family tree.
3. Secure Data Transmission:
 Use secure communication protocols such as HTTPS to encrypt data
transmitted between clients and servers.
 Implement secure APIs and web services to ensure the integrity and
confidentiality of data exchanges.
4. Secure Storage:
 Encrypt sensitive data at rest using encryption techniques such as disk
encryption or database encryption.
 Utilize secure storage solutions and access controls to protect data from
unauthorized access or disclosure.
5. Audit Trails and Logging:
 Implement logging and auditing mechanisms to track user activities,
system events, and access to sensitive data.
6. Secure Development Practices:
 Follow secure coding guidelines and best practices throughout the
software development lifecycle.
 Conduct regular code reviews and security assessments to identify and
mitigate potential security vulnerabilities.
7. Vulnerability Management:
 Perform regular vulnerability scans and penetration tests to identify and
address security weaknesses in the family tree project.
 Keep software and libraries up-to-date with the latest security patches
and updates.
8. Incident Response and Contingency Planning:
 Develop an incident response plan to guide the organization's response
to security incidents and data breaches.
 Establish communication channels and escalation procedures to
coordinate responses effectively.
9. User Education and Awareness:
 Provide training and awareness programs to educate users about
security best practices, including password hygiene, phishing awareness,
and social engineering tactics.
 Encourage users to report security incidents and suspicious activities
promptly.
10. Third-Party Risk Management:
 Evaluate and monitor the security practices of third-party vendors and
service providers involved in the family tree project.
 Implement contractual agreements and security assessments to ensure
third-party compliance with security requirements.

9.2 Recovery Plan

The family tree project involves a meticulous system design that categorizes functionalities
based on their criticality for high availability. To detect faults, including omissions, crashes,
incorrect timing, or responses, additional functionalities are incorporated, with systematic
logging and notifications to alert relevant personnel and systems. Events causing faults are
temporarily disabled, and data abstractions, related operations, and component coordination
are assessed independently. Resources for fault logging, notification, and masking are
maintained separately.

Active redundancy is implemented for highly critical operations, distributing input to all
nodes in parallel, ensuring swift takeover by redundant spares configured identically to the
active component. Synchronization is maintained between the active and redundant spare.

Passive redundancy is employed for compute-intensive components, with loosely coupled


state management by redundant spares for non-highly available components. A rollback
mechanism reverts the system to the last known good state, allowing continued operation
upon completion. Regularly saved and updated checkpoints facilitate this process.

Retry mechanisms are deployed for functions with a high expected fault rate, introducing
delays between retries. A degradation mechanism prioritizes critical functionalities, dropping
less critical ones when faults are identified, ensuring the availability of components for
proper processing of critical operations. This comprehensive recovery plan integrates active
and passive redundancy, rollback procedures, retry mechanisms, and degradation strategies to
fortify the hospitality management system against various disruptions.

9.3 Fault Detection


1. Asynchronous Communication
- Facilitates message exchange between modules or services.
- Enables determination of reachability and response times.
- Strengthens architecture resilience and robustness.
- Identifies delays or failures in message exchanges.
- Validates faults in system nodes.

2. Health Monitoring Tool


- Tracks critical component health in real-time.
- Monitors servers, databases, network connectivity, and resources.
- Detects failures, congestion, or abnormal behaviour.
- Identifies malfunctioning components.
- Ensures overall system health and performance.

3. Periodic Component Communication


- Implements periodic message exchange with a heartbeat mechanism.
- Utilizes heartbeat messages to reset watchdog timers.
- Proactively monitors system components.
- Identifies potential defects by monitoring absence or irregularity of heartbeat signals.
- Addresses issues before escalation.
4. Timestamps for Event Sequencing

- Adds timestamps to events and actions.


- Facilitates evaluation of event sequences.
- Analyses chronological order for accurate sequencing.
- Identifies incorrect sequences.
- Detects anomalies in the timing of operations.

5. Sanity Checkers
- Enhances system reliability with integrated sanity checkers.
- Checks critical processes, transactions, or data outputs.
- Ensures regular validation against expected criteria.
- Maintains integrity of the hospitality management system.
- Promptly identifies and addresses issues related to specific operations.

6. Triple Modular Redundancy (TMR)


- Reduces errors through Triple Modular Redundancy (TMR) techniques.
- Implements replication and functional redundancy.
- Applies analytic redundancy for cross-verifying results.
- Provides resilience in handling errors and inconsistencies.
- Ensures reliability and fault tolerance of the system.

7. Self-Testing Procedures
- Conducts periodic self-test procedures by system components.
- Components autonomously perform self-checks.
- Verifies correct operation and functionality.
- Enables early detection and resolution of potential problems.
- Contributes to system stability and reliability.

10. Scalability
Scalability in the context of a family tree project refers to the system's ability to
handle increasing data loads, user interactions, and transactions while maintaining optimal
performance, responsiveness, and reliability. A scalable family tree project should efficiently
grow in capacity and functionality to meet the demands of a growing business, whether in
terms of the number of users, the volume of transactions, or the addition of new features and
modules.
Vertical Scaling (Scaling Up):

o Enhance server capabilities to improve scalability and performance. o


Implement temporary fixes to handle increased loads.

Horizontal Scaling (Scaling Out):

o Add more servers and nodes to distribute the load and increase efficiency. o
Ensure reliability by distributing the load across multiple servers.

Diagonal Scaling:

o Combine horizontal and vertical scaling techniques. o Consider factors like


cost and performance for an optimal approach.

Technology Stack Selection: o Choose programming languages, databases, frameworks, and


libraries with scalability in mind.
o Prioritize functional correctness while ensuring lesser resource
requirements for quicker scaling.

Data Store Considerations: o Address performance degradation in database queries due to data
quantity and simultaneous requests.
o Introduce replication and sharding techniques to mitigate issues. o Split
data into segments and replicate it in multiple instances to reduce reliance
on the primary database.

Priority in Project Implementation:

a) While ensuring scalability, prioritize functional correctness.


b) Select technologies that allow for smaller server provisioning and quick scaling
capabilities.

Project-Specific Implementation:

c) Tailor scalability measures to the unique requirements of a hospitality management


system.
d) Consider factors like data storage, simultaneous requests, and real-time processing.
11. Performance
Define performance goals: -Every workflow's anticipate workflow's anticipated performance
will be determined and specified. Every component's and every API's anticipated
performance shall be specified. To set service-level goals, the performance will be adjusted.
As a guide for implementation, the performance service level targets are established. The
defined service level objectives will guide the optimization of the implementations.
ted performance will be determined and specified. Every component's and every API's
anticipated performance shall be specified. To set service-level goals, the performance will be
adjusted. As a guide for implementation, the performance service level targets are established.
The defined service level objectives will guide the optimization of the implementations.

11.1. Performance metrics


Performance metrics will be monitored during the implementation phase, and monitoring
tools will be used to measure the performance of the production servers. The application's
performance will be evaluated using the events that were logged. The effectiveness of
performance optimization strategies is reduced in the absence of supporting data from
monitoring instruments.

11.2. Sharing the load with the client


The static contents will be loaded in the front-end client instead of using an API to serve the
contents. Dynamic data that can be changed as static will be loaded in the front end. This
removes the dependency on the back-end servers to cater to such requirements. The security
risk associated with the method is that the client code can be modified. Thus, the balance
between security and performance must be preserved.

11.3. Caching
Caching results, database query results, and so on will allow the components to
process the input or requests without having to process them again. The caching approach
will be evaluated, and the best fit for the need will be implemented. Different strategies for
various components can be combined.

11.4. Limiting the Number of Microservices


A large amount of microservices or nano services will add complexity to the design of the
application. To be finished, the request must be transmitted to multiple services.
11.5. Microservices
Separating issues amongst services and sustaining each service separately will allow the
service to be scaled effectively. Because of the resource requirements, growing larger services
or monoliths is not cost-effective. Smaller services can be scaled without incurring excessive
costs during changes in load.

11.6. Choice of Technology


The technology also influences the performance of the application. Replacing
lowperformance technology with high-performance alternatives can increase overall system
performance.

11.7. Database Performance


Running bulk queries like as update and delete queries will boost concurrency. ORMs, in
general, introduce a layer between the client and the database, reducing performance. ORMs
can also arrange queries for optimal performance. Indexing frequently searched columns
enhances search performance in the database. When dealing with enormous amounts of data,
the database's performance suffers. Database caching strategies can be tailored to meet
specific requirements. Database speed can be improved via pooling connections, sharding,
and normalization techniques.

11.8. Pre-Application Server Caching Techniques


The proxy servers with pre-application caches can reduce the latency. The requests will be
served from the cache before the request reaches the application.

11.9. Optimizing Static Contents


Before being served to the browsers, large files will be compressed. When delivered without
compression, the high-resolution photos will need a certain amount of processing power.

Using CDN
Content delivery networks that have hardware optimized for serving static contents perform
better serving static contents. CDNs will be able to deliver images, CSS, JS, fonts, etc to the
users in an optimized manner. CDN is geographically distributed allowing better connectivity.

11.10. TTFB
Time to First Byte plays an important role in the overall system’s performance. TTFB will be
optimized based on the technology and mostly in cases where any client pages are rendered
by the server.
11.11. Gzip Compression
In order to cater to textual response Gzip compression will be used. This will reduce load
time and bandwidth.

11.12. Asynchronously Loading JS


Lazy loading techniques load required resources when the resource is actually required.
Loading heavier resources requires the data to be fetched and rendered causing delays when
not required. Prefetch, Preconnected, and prerender techniques can be used to better the
application’s performance whenever required. Code Split between multiple smaller chunks
which will be bundled and loaded dynamically. This optimization technique will allow
smaller modules to be loaded quickly.

11.13. The Dependencies


The dependencies particularly outside dependencies whether inside or outside have limited
scope for optimization, scalability, and availability. The lower number of outside
dependencies and building in-house modules with similar capabilities enables techniques to
be introduced at the expense of development and maintenance costs.

12. Testing
12.1 Functional Testing:
In prioritizing the identification of functional issues within the hospitality management
application, a comprehensive functional testing approach will be undertaken. This includes
the identification, listing, and testing of both external and internal links. Furthermore, the
system's functionalities, especially those dependent on other modules, will be thoroughly
identified and tested. Special attention will be given to testing the forms utilized within the
system, analysing validations for fields added by users or imported from other modules. The
evaluation encompasses scenarios involving default values and the system's response to
incorrect data inputs. Additionally, verification of stored cookies at the client's end, including
testing retention and updates, will be conducted. The potential functional implications of
users disabling cookies will also be systematically tested. Recognizing the impact of data
inconsistency on the application's functional needs, the testing process will prioritize the
identification of any loopholes that may lead to inconsistent data being added to the system.
The database, as a vital component providing system functionality, will undergo thorough
analysis to ensure correct data storage. Field validations will include displaying proper error
messages to users in cases where added data fails the system's validation process.

12.2 Usability Testing:


Usability testing for the hospitality management system will focus on enhancing the ease of
human interaction with the application. Emphasis will be placed on understanding the user's
journey and ensuring clarity in instructions. The testing will evaluate whether users can easily
comprehend instructions and if they are sufficient to fulfil the intended purpose. Aspects such
as typo errors in content, simpler content suggestions, and adherence to commonly accepted
design standards, including colour, fonts, and frames, will be identified. Furthermore, the
proper size, shapes, and placement of images, texts, and videos will be examined to optimize
user experience.

12.3 Interface Testing:


The interfaces, encompassing web servers, application servers, proxies, load balancers, and
database servers, will undergo rigorous testing to identify and address connectivity issues.
Recognizing that any malfunction in these modules renders the application unusable, the
testing will focus on ensuring proper interactions and error handling. Quality assurance is
contingent on the interfaces' capability to effectively handle connections. Hardware, software,
network, and database components will be systematically tested, with transactional
workflows verified for seamless functionality. The use of different browsers will be
incorporated to identify and address compatibility issues.

12.4 Performance Testing:


In assessing the hospitality management system's performance, web load and web stress
testing will be implemented. This comprehensive testing approach considers established
service level objectives as requirements. The system's behaviour under simultaneous requests,
larger input data, parallel database connections, and impacts on pages rendering larger data
will be meticulously analysed. Stress testing will be incorporated to identify breaking points,
failure modes, and module behaviour. Continuous monitoring of the impact on memory,
CPU, and network utilization under varying loads will be a key focus.

12.5 Digital Twin Testing:


For the hospitality management system's digital twin component, elevation points associated
with each cell will be randomly validated concerning other elevation APIs. While
comprehensive testing of all cells in the grid may be impractical, the sanity of the elevation
solution will be rigorously tested for select points. Adjustments to water levels will be
individually tested to assess the impact on neighbouring cells based on elevation.
Modification of rainfall levels will be used to evaluate the algorithm's functionality.
Additionally, combined adjustments to water level and rainfall will be implemented to
validate the algorithm comprehensively. The testing process may incorporate visualization
techniques, and the selection of latitude-longitude pairs will involve random selection and
identifying the lowest elevation path to a point from the water body. This holistic testing
strategy aims to ensure the reliability and functionality of the digital twin component within
the hospitality management system.

13. Maintenance
The application requires it to be maintained continuously for better usability. The application
needs to be capable to allow fixes for defects, repairing or replacing modules, extending the
application’s functionality, maximize usability, reliability, safety, and efficiency. Shorter units
of code are better testable and maintainable. Splitting larger requirements into shorter
modules will benefit from better maintainability. Constructing simpler solutions for complex
use cases enables the team to quickly learn the code. Coding standards with coding standards,
the code can be easily understood and maintain the application better. The standards will
allow the code to be easily handled by other resources. The documentation for standards used
in the system will be available for the teams. This resolves the confusion about which
standards are followed in the application. Using static analysis tools will help in establishing
rules for the development process. The conventions and standards are not restricted to the
code base but also to the process and tools used.
▫ Using comments and human-readable names for variables, components, functions,
classes, and interfaces will increase the maintainability of the application’s code base.
Mixed usage of naming conventions will be restricted. The naming conventions and
similar standards also depend upon the programming language used.
▫ Separating configurations from the code in a consistent, defined, and centralized
manner are prefer o/ed. This enables the configuration to be managed separately 35
without impacting the code. Organizing and describing the configurations makes it
much easier for migrations and scaling the team.
▫ Reduced redundancy - Accommodating changes becomes easier when the same logic
is not implemented in multiple places. The impacts of errors due to unintentional
omission of login in redundant places will be reduced if the code is implemented in a
single place and reused as required.

14.Security Measures
1. Secure Authentication:
 Implement strong authentication mechanisms such as password hashing,
multi-factor authentication (MFA), or biometric authentication to verify the
identity of users before granting access to the application.
2. Authorization Controls:
 Enforce access controls to ensure that users can only access the data and
features that they are authorized to use based on their roles and permissions.
 Implement role-based access control (RBAC) or attribute-based access control
(ABAC) to manage authorization rules effectively.
3. Data Encryption:
 Encrypt sensitive data, including user credentials, personal information, and
family tree data, both at rest and in transit, using strong encryption algorithms
(e.g., AES) and secure communication protocols (e.g., HTTPS).
4. Input Validation:
 Validate and sanitize user inputs to prevent common security vulnerabilities
such as SQL injection, cross-site scripting (XSS), and command injection
attacks.
 Implement server-side and client-side validation to ensure that user inputs
meet the expected format and constraints.
5. Session Management:
 Use secure session management techniques such as session tokens, session
expiration, and session fixation prevention to protect against session hijacking
and session fixation attacks.
 Store session tokens securely and invalidate sessions after a period of
inactivity or upon logout.
6. Secure Coding Practices:
 Follow secure coding practices such as least privilege, principle of least
astonishment, and secure error handling to minimize the risk of introducing
vulnerabilities during development.
 Conduct regular code reviews and security audits to identify and remediate
security issues early in the development lifecycle.
7. Security Headers:
 Set appropriate security headers in HTTP responses, such as Content Security
Policy (CSP), X-Content-Type-Options, and X-XSS-Protection, to mitigate
common web security vulnerabilities and protect against attacks such as cross-
site scripting (XSS) and clickjacking.
8. Logging and Monitoring:
 Implement logging mechanisms to record security-relevant events, including
authentication attempts, access control decisions, and system errors, for
auditing and forensic analysis.
 Set up monitoring and alerting systems to detect and respond to security
incidents in real-time, including anomalous behavior, unauthorized access
attempts, and potential data breaches.
9. Third-Party Integration Security:
 Assess the security posture of third-party services and APIs before integrating
them into the application, ensuring that they follow security best practices and
comply with relevant regulations.
 Implement secure communication channels and data validation mechanisms to
protect against security risks associated with third-party integrations, such as
data leakage or injection attacks.
10. Regular Security Assessments:
 Conduct regular security assessments, penetration testing, and vulnerability
scanning to identify and remediate security weaknesses and potential attack
vectors.
 Stay informed about emerging security threats and best practices in web
application security to proactively address evolving risks and vulnerabilities.

15. Deployment Strategy


The deployment strategy for the Family Tree Web Application encompasses a
comprehensive approach aimed at ensuring seamless, reliable, and efficient delivery
of updates and new features to users while minimizing disruption and risk. Leveraging
continuous integration and continuous deployment (CI/CD) pipelines, the application
undergoes automated build, test, and deployment processes, enabling frequent
releases with consistent quality assurance. By maintaining separate environments for
development, testing, staging, and production, controlled deployments are facilitated,
reducing the likelihood of introducing bugs into the live environment
Post-deployment activities focus on monitoring, user support, and performance testing to
identify areas for optimization. Security measures, including the implementation of SSL/TLS
and user access controls, are prioritized to safeguard data and enhance overall system
security.

Continuous improvement is emphasized through feedback collection, patch management,


and scalability assessments to adapt to evolving business needs and ensure ongoing success.
The deployment strategy is not a one-time event but a dynamic process that considers the
continuous growth and optimization of the family tree project in the ever-changing hospitality
landscape.

16. CI/CD
16.1 GitHub Actions
GitHub Actions is a continuous integration and continuous delivery (CI/CD) platform that
allows automation of the build, test, and deployment pipeline.
The components of GitHub Actions
1) Workflows - Workflows are defined by a YAML file checked into the repository and
will run when triggered by an event in the repository, or they can be triggered manually, or at
a defined schedule. Workflows are defined in the GitHub/workflows directory in a repository,
and a repository can have multiple workflows, each of which can perform a different set of
tasks.
2) Events - An event is a specific activity in a repository that triggers a workflow run.
For example, activity can originate from GitHub when someone creates a pull request, opens
an issue, or pushes a commit to a repository. You can also trigger a workflow to run on a
schedule, by posting to a REST API, or manually.
3) Jobs - A job is a set of steps in a workflow that executes on the same runner. Each step
is either a shell script that will be executed or an action that will be run. Steps are executed in
order and are dependent on each other. Since each step is executed on the same runner, you
can share data from one step to another.
4) Actions - An action is a custom application for the GitHub Actions platform that
performs a complex but frequently repeated task. Use action to help reduce the amount of
repetitive code that you write in your workflow files. An action can pull your git repository
from GitHub, set up the correct toolchain for your build environment, or set up the
authentication to your cloud provider.
5) Runners - A runner is a server that runs your workflows when they're triggered. Each
runner can run a single job at a time. GitHub provides Ubuntu Linux, 39 Microsoft Windows,
and macOS runners to run your workflows; each workflow run executes in a fresh, newly
provisioned virtual machine.

17. Application/Infrastructure Monitoring


Application/Infrastructure monitoring is the process of measuring, evaluating, and
troubleshooting the effectiveness of your software applications to guarantee accessibility,
performance, and a superior user experience. APM helps you ensure your mission-critical
applications operate smoothly and at optimum levels. APM features include
▫ CPU usage and server monitoring where key applications are stored and functioning
▫ Evaluating access registers to your web server to compare user requests with how
much time it takes to react to all requests
▫ Monitoring error rates
▫ Checking network traffic and application downtimes
▫ Monitoring website or web apps with the help of a certain analytics system to examine
and discover pages with low velocity
▫ Scaling as well as estimating key performance metrics.
17.1 New Relic
New Relic makes the process of APM easier by automatically discovering the applications,
infrastructure, and log sources running in your environment. New Relic instruments the
application at a code level through the use of one of its many language agents. These agents
gather metrics from the application and send them to New Relic APM so that the app can be
monitored through pre-built dashboards. New Relic provides flexible, dynamic observability
of the entire infrastructure, from services running in the cloud or on dedicated hosts to
containers running in orchestrated environments. The health and performance of all your
hosts can be connected to the application context, logs, and configuration changes.

18. Disaster Recovery


The disaster recovery plan for the family tree project comprises two key categories: Backup
and Restore, and Multi-Region Disaster Recovery.
18.1. Disaster Recovery:

In the event of unforeseen incidents, the family tree project is equipped with a comprehensive
disaster recovery plan to ensure the integrity of data and the continuity of operations across
its various modules. This overarching strategy encompasses both Backup and Restore and
Multi-Region Disaster Recovery.

18.2. Backup and Restore:

Under this category, the focus is on safeguarding data integrity through regular backups and
efficient restore mechanisms for each module within the system. Whether it is family data,
front office information, or details from the laundry service, a systematic approach to data
protection is implemented. The strategy involves conducting routine backups to enable swift
restoration in cases of system failures or data corruption. This ensures that critical data is
preserved and can be efficiently recovered, minimizing downtime and operational
disruptions.

18.3. Multi-Region Disaster Recovery:

The second component of the disaster recovery plan involves establishing protocols for
Multi-Region Disaster Recovery. This is designed to ensure uninterrupted system availability
and data redundancy, particularly in the face of regional disasters. The system is structured to
allow for continuous operations across different geographic regions, providing resilience and
maintaining service levels even in challenging circumstances. Each module, such as the front
office, gym, or restaurant services, benefits from specific disaster recovery protocols tailored
to its unique requirements. These protocols contribute to an overall framework that
safeguards data, minimizes downtime, and upholds operational resilience on a broader scale.

19. Future Scope


The future scope of a Family Tree Project involves anticipating trends, emerging
technologies, and industry needs to ensure the system remains relevant and can adapt to
evolving requirements. Here are potential areas of future development for an Family tree :
1. Integration with DNA Testing Services:

Explore integration with popular DNA testing services to allow users to link DNA
results with their family trees, providing insights into genetic ancestry and potential
family connections.
2. Historical Context and Timeline Integration:

Enhance the application by integrating historical context and timelines, allowing users
to overlay historical events, migrations, and milestones onto their family trees for a
richer understanding of their ancestors' lives.

3. Advanced Search and Discovery:


Implement advanced search functionality with filters and sorting options to help users
discover relatives, historical records, and relevant genealogical data more efficiently.

4. Virtual Reality (VR) and Augmented Reality (AR) Experiences:

Explore the use of VR and AR technologies to create immersive experiences that


allow users to virtually explore ancestral homes, landmarks, and historical sites
associated with their family history.
5. Interactive Storytelling Features:

Introduce interactive storytelling tools that enable users to create multimedia-rich


narratives about their ancestors, incorporating photos, videos, documents, and oral
histories into their family trees.

6. Community Collaboration and Crowdsourcing:

Foster community collaboration by enabling users to contribute to shared family trees,


collaborate on research projects, and crowdsource information from other users with
shared ancestral connections.

7. Integration with Educational Institutions:

Partner with educational institutions to integrate the Family Tree Web Application into
genealogy and history curricula, providing students with hands-on experience in
exploring and documenting family history.
8. Mobile and Wearable Device Integration:

Develop dedicated mobile applications and integrate with wearable devices to enable
on-the-go access to family tree data, notifications, and collaboration features.
9. Data Preservation and Archiving:

Implement features for long-term data preservation and archiving, including options
for exporting family tree data in standardized formats and storing backups in secure,
redundant storage systems.
10. AI-Powered Insights and Recommendations:

Utilize artificial intelligence and machine learning algorithms to analyze family tree
data and provide personalized insights, recommendations, and automated research
suggestions based on user preferences and historical patterns.
11.Blockchain-based Authentication and Data Security:

Explore the use of blockchain technology for secure authentication, data integrity
verification, and decentralized storage of sensitive user data, ensuring enhanced
security and privacy protection.
12. Gamification and Rewards System:

Introduce gamification elements and rewards systems to incentivize user engagement,


encourage participation in research projects, and recognize contributions to the
community.

20. Development Phase


Certainly, let's categorize the development phases of a Family Tree Project into distinct
categories for better clarity:

20.1 Initiation and Planning:


Project Initiation:

▫ Define scope, goals, and initial requirements.


▫ Conduct feasibility study, outline project objectives, identify stakeholders, and establish
the project team.

Requirements Analysis:

▫ Gather and analyse detailed requirements for the Family tree project.
▫ Conduct stakeholder interviews, create use cases, and prioritize requirements.

20.2 Design and Prototyping:


System Design:

▫ Create a detailed system design based on requirements.


▫ Design system architecture, define data models, and create wireframes.

Prototyping (Optional):

▫ Develop a prototype to validate design concepts.


▫ Implement a limited functionality prototype and collect stakeholder feedback.

20.3 Development and Implementation:


Development:

▫ Implement the family tree project based on the approved design.


▫ Write code, implement database functionality, and integrate security measures.

Testing:

▫ Ensure the family tree project functions correctly and meets quality standards.
▫ Conduct unit testing, integration testing, system testing, and user acceptance testing.

Deployment:

▫ Release the family tree project for production use.


▫ Prepare deployment plans, execute deployment, and monitor system performance.

20.4 Transition and Support


Training and Documentation:

▫ Train users and create documentation for system usage.


▫ Develop training materials, conduct training sessions, and create user manuals.

Post-Implementation Support:

▫ Provide ongoing support and address post-deployment issues.


▫ Establish a support system, monitor system performance, and address reported issues.

20.5 Ongoing Maintenance and Upgrades:


Maintenance and Upgrades:

▫ Implement regular maintenance tasks and plan for system upgrades.


▫ Schedule routine system maintenance, assess and implement upgrades, and stay
informed about industry trends.

You might also like