Architecture React Project Report
Architecture React Project Report
The "Website for Architecture" project endeavors to establish a robust online platform tailored for
architects and clients alike, aiming to streamline the process of architectural service exploration,
engagement, and collaboration. This project integrates cutting-edge technologies such as ReactJS
for the frontend and [Link] for the backend to create a dynamic and interactive user experience.
Key features include a user-friendly interface with essential sections like Home, About Us,
Services, Portfolio, Appointment Scheduling, Testimonials, and Contact Us. The platform
facilitates easy navigation and access to detailed architectural services, project portfolios, and
client testimonials, enhancing transparency and credibility.
Ultimately, the "Website for Architecture" project aims to foster collaboration and innovation
within the architecture community, providing a centralized hub where architects can showcase
their expertise and clients can discover and engage with high-quality architectural services
efficiently.
INDEX
In today's digital era, creating dynamic and responsive web applications has become a cornerstone
for any business aiming to thrive online. This project focuses on developing a sophisticated front-
end for a web application utilizing the powerful and versatile framework, React. React is renowned
for its efficiency and flexibility in building user interfaces, especially for single-page applications
where a seamless user experience is paramount.
Our front-end development project integrates fundamental web technologies such as HTML, CSS,
and JavaScript alongside NodeJS, establishing a robust environment for developing and managing
application states and logic. HTML serves as the backbone of our web content, CSS ensures a
visually appealing and responsive design, while JavaScript brings interactivity and dynamic
content to our application. NodeJS, with its non-blocking, event-driven architecture, supports our
backend operations, enabling smooth data handling and API integrations.
React, the centerpiece of our project, leverages its component-based architecture to promote
reusable UI components, making development more efficient and maintainable. By using React's
virtual DOM, our application ensures high performance and a smooth user experience even with
extensive updates and user interactions.
This project aims to demonstrate the synergy between these technologies to build a modern,
interactive, and responsive web application. It will highlight the processes and best practices in
front-end development, from initial setup and component creation to state management and final
deployment. Through this project, we aim to showcase the potential of React in building scalable
and high-performance web applications.
The "Web App for Architecture" project aims to develop a comprehensive platform tailored for
showcasing architectural services, catering to clients globally. Utilizing HTML, CSS, JavaScript,
7
[Link], and React, this platform will facilitate the seamless presentation of architectural offerings,
enabling the creation of detailed service pages with information, portfolios, and contact options.
This platform aims to streamline the process for both architects and clients, making it easier to
discover and engage with architectural services.
The primary objective of this project is to create a system that centralizes architectural service
offerings and simplifies the client engagement process. Currently, clients face challenges in
finding reliable architectural services and managing interactions across multiple channels.
By consolidating architectural service offerings and simplifying access, this project aims to
enhance the accessibility and enjoyment of discovering architectural services. The platform will
feature multiple pages, including Home, About Us, Features, Our Projects, Appointment,
Testimonials, Contact Us, and a Login page to enrich the user experience further.
8
AIM AND SCOPE OF THE PROJECT
The aim of the "Website for Architecture" project is to establish a centralized platform that
showcases a diverse array of architectural projects and services of architecture firms. This platform
will function as a comprehensive hub for potential clients worldwide, offering convenient access
to detailed information about architectural designs and services through a single dynamic website.
Admin functionalities will facilitate the effortless addition and management of project portfolios
and service offerings, enabling us to showcase architectural expertise efficiently. Through the
creation of an intuitive and user-friendly interface, the project seeks to streamline the process of
discovering, exploring, and booking architectural services.
Ultimately, the objective is to enhance accessibility and engagement with architectural services,
providing clients with a unified platform where they can explore projects, access detailed
information, and book appointments tailored to their needs and preferences. By implementing this
project, we aim to contribute to the enrichment of the architectural community by providing a
platform that fosters connectivity, discovery, and appreciation of innovative architectural designs
and services.
SCOPE: The scope of the "Website for Architecture" project encompasses the development of an
intuitive and user-friendly website interface designed to feature a wide array of architectural
services and projects. Administrative functionalities will facilitate content management, including
the addition, modification, and removal of project details, team information, and service
9
descriptions.
User accounts with features such as appointment scheduling, project tracking, and personalized
consultations will be implemented. Interactive elements will be incorporated to enhance user
engagement and provide an immersive experience for potential clients.
Advanced search and filtering options will enable seamless discovery of architectural projects and
services based on style, scale, and client preferences. Secure communication channels will be
integrated to facilitate smooth consultations and appointment bookings. Responsive design
principles will ensure optimal website performance across various devices, enhancing accessibility
and user satisfaction.
The website will include a Home page, About Us page, Features page, our project portfolio,
appointment scheduling system, testimonial section, contact form, and login page to provide a
complete architectural service experience.
OBJECTIVE: The primary objective of this project is to establish a centralized platform for
offering a diverse range of architectural services and showcasing exemplary projects, ensuring
accessibility and convenience for clients globally.
It aims to streamline the process of discovering, engaging, and collaborating with architectural
firms, enhancing the overall client experience. This project seeks to empower architects and
designers to effectively present their work, fostering collaboration and innovation within the
architecture community.
10
Additionally, it aims to cultivate a vibrant online community, where clients can share their
experiences, provide testimonials, and connect with architects to enhance their journey and foster
trust in architectural services.
Pen and touch: No pen or touch input is available for this display.
11
INTERNET INFORMATION SERVICES 7.5 (IIS 7.5)
Microsoft IIS was used as the web server in this project, even though there were many other web
servers, it is the most used web server after Apache and it does not need any complicated
configurations before being used [2]. Furthermore, after IIS 6.0 was released, Microsoft’s security
was greatly improved and especially it cooperated with the .net environment, the cooperation made
the security almost perfect.
3.1 Features
The difficulty of the tool directly affects the number of users, especially the web publishing tool.
After all, many companies want to have their websites but do not want to hire a high-paid network
administrator to maintain them. Therefore, the companies must use tools that are relatively easy to
build the website with.
It is easier to use IIS as the web server, make it work, and publish the website and its configuration
is graphical.
The language of establishing a website or forum is varied, such as ASP, PHP, JSP, and other
languages. It is quite stable to run ASP on IIS, especially in the .net environment. However, PHP
is supported on Windows 7 only after a complex configuration.
The FTP Server, Web Management Tools, and World Wide Web Services were turned on before
the IIS configuration. To support PHP, Module Mapping was added in IIS, and the executable
option was associated with the location of [Link] after installing PHP in the local server.
An application pool was proposed after IIS6.0 was released to support high-performance web
application design. It associates one or several applications with one or several groups of
processes. Those groups can avoid the overflow effectively when the website consumes too large
memory.
12
The website was assigned a separate application pool in this project, an independent process called
[Link] was created in the system once the site started, therefore, even if the site hangs up for
some reason, it will not influence other sites that ran on the same web server.
If each site used a separate application pool, there would be a problem that the server would be
overloaded. Meanwhile, the server would need to allocate more memory and CPU usage.
However, for high-performance servers located in a company, using a separate application pool is
the best choice to provide the users with the server’s strong performance regardless of system
resources.
3.3 Security
Timely installation of patches for the IIS web server is especially important since the security
patches relate to system security. The Microsoft official website often publishes the latest security
patches. For this reason, the server used in this project was ensured to be updated once a week.
And the FTP root directory was assigned to the logical drive to prevent hackers’ attacks. In
addition, the FTP default port was modified to other than 21 and the log was enabled in case of
server exception.
13
HTML
Basics
Welcome to HTML Basics. This course leads you through the basics of Hyper Text Markup
Language (HTML). HTML is the building block for web pages. You will learn to use HTML to
create an HTML page to display in a web browser.
Objectives:
By the end of this course, you will be able to:
• Use a text editor to author an HTML document.
• Be able to use basic tags to denote paragraphs, emphasis, or special type.
• Create hyperlinks to other documents.
• Create an email link.
• Add images to your document.
• Use a table for layout.
• Apply colors to your HTML document.
Prerequisites:
You will need a text editor, such as Notepad, and an Internet browser, such as Internet Explorer or
Netscape.
Q: What is Notepad and where do I get it?
A: Notepad is the default Windows text editor. On most Windows systems, click your Start
button and choose Programs then Accessories. It is a little blue notebook.
Mac Users: SimpleText is the default text editor on the Mac. In OSX use TextEdit and
change the following preferences: Select (in the preferences window) Plain text instead of
Rich text and then select Ignore rich text commands in HTML files. This is very important
because if you don't do this HTML code probably won't work.
14
One thing you should avoid using is a word processor (like Microsoft Word) for authoring your
HTML documents.
HTML is a format that tells a computer how to display a web page. The documents themselves are
plain text files with special "tags" or codes that a web browser uses to interpret and display
information on your computer screen.
• HTML stands for Hyper Text Markup Language
• An HTML file is a text file containing small markup tags
• The markup tags tell the Web browser how to display the page
• An HTML file must have an htm or html file extension
Try It?
Open your text editor and type the following text:
<html>
<head>
<title>My First Webpage</title>
</head>
<body>
This is my first homepage. <b>This text is bold</b>
</body>
</html>
Save the file as [Link]. Start your Internet browser. Select Open (or Open Page) in the File
menu of your browser. A dialog box will appear. Select Browse (or Choose File) and locate the
html file you just created - [Link] - select it and click Open. Now you should see an address
in the dialog box, for example, C:\MyDocuments\[Link]. Click OK, and the browser will
display the page. To view how the page should look, visit this web page:
[Link]
Example Explained
15
What you just made is a skeleton HTML document. This is the minimum required information for
a web document and all web documents should contain these basic components. The first tag in
your html document is <html>. This tag tells your browser that this is the start of an HTML
document. The last tag in your document is </html>. This tag tells your browser that this is the end
of the HTML document.
The text between the <head> tag and the </head> tag is header information. Header information
is not displayed in the browser window.
The text between the <title> tags is the title of your document. The <title> tag is used to uniquely
identify each document and is also displayed in the title bar of the browser window.
The text between the <body> tags is the text that will be displayed in your browser.
The text between the <b> and </b> tags will be displayed in a bold font.
HTML Tags
16
• HTML tags are surrounded by the two characters < and >
• The surrounding characters are called angle brackets
• HTML tags normally come in pairs like <b> and </b>
• The first tag in a pair is the start tag, the second tag is the end tag
• The text between the start and end tags is the element content
• HTML tags are not case sensitive, <b> means the same as <B>
17
CSS
A CSS comprises style rules that are interpreted by the browser and then applied to the
corresponding elements in your document. A style rule is made of three parts:
Selector: A selector is an HTML tag to which a style will be applied. This could be any tag like
<h1> or <table> etc.
Property: A property is a type of attribute of an HTML tag. Put simply, all the HTML attributes
are converted into CSS properties. They could be color, border, etc.
Value: Values are assigned to properties. For example, color property can have the value either
red or #F1F1F1, etc.
You can put CSS Style Rule Syntax as follows:
selector { property: value }
Here table is a selector and border is a property and the given value 1px solid #C00 is the value of
that property. You can define selectors in various simple ways based on your comfort. Let me put
these selectors one by one.
18
The Universal Selectors
Rather than selecting elements of a specific type, the universal selector quite simply
matches the name of any element type:
*{
color: #000000;
}
This rule renders the content of every element in our document in black.
19
</p>
The ID Selectors
You can define style rules based on the id attribute of the elements. All the elements
having that id will be formatted according to the defined rule.
#black {
color: #000000;
}
CSS
5
This rule renders the content in black for every element with id attribute set to black in our
document. You can make it a bit more particular.
For example:
h1#black {
color: #000000;
}
This rule renders the content in black for only <h1> elements with id attribute set
to black.
The true power of id selectors is when they are used as the foundation for descendant
selectors.
For example:
#black h2 {
color: #000000;
}
In this example, all level 2 headings will be displayed in black color when those headings will lie
within tags having id attribute set to black.
20
body > p {
color: #000000;
}
This rule will render all the paragraphs in black if they are a direct child of the <body>element.
Other paragraphs put inside other elements like <div> or <td> would not have any effect on this
rule.
21
JavaScript
Overview
JavaScript is a rich and expressive language in its own right. This section covers the basic concepts
of JavaScript, as well as some frequent pitfalls for people who have not used JavaScript before.
While it will be of particular value to people with no programming experience, even people who
have used other programming languages may benefit from learning about some of the peculiarities
of JavaScript.
If you’re interested in learning more about the JavaScript language, I highly recommend
JavaScript: The Good Parts by Douglas Crockford.
Syntax Basics
Understanding statements, variable naming, whitespace, and other basic JavaScript syntax.
Operators
Basic Operators
Basic operators allow you to manipulate values.
Concatenation
22
var foo = ’ hello ’;
var bar = ’ world ’;
c o n s o l e . log ( foo + ’ ’ + bar ); // ’ h e l l o world ’
Logical Operators
Logical operators allow you to evaluate a series of operands using AND and OR operations.
Logical AND and OR operators
23
var foo = 1;
var bar = 0;
var baz = 2;
foo || bar ; // r e t u r n s 1 , w h i c h is true
bar || foo ; // r e t u r n s 1 , w h i c h is true
foo && bar ; // r e t u r n s 0 , w h i c h is f a l s e
foo && baz ; // r e t u r n s 2 , w h i c h is true
baz && foo ; // r e t u r n s 1 , w h i c h is true
Though it may not be clear from the example, the || operator returns the value of the first truthy
operand, or, in cases where neither operand is truthy, it’ll return the last of both operands. The
&& operator returns the value of the first false operand, or the value of the last operand if both
operands are truthy.
Be sure to consult the section called “Truthy and Falsy Things” for more details on which values
evaluate to true and which evaluate to false.
24
[Link]
3. Package Management
[Link] comes with a powerful package manager called npm (Node Package Manager). npm hosts
thousands of libraries and modules that developers can use to add functionality to their
applications. This ecosystem accelerates development by providing pre-built solutions for
common tasks.
4. Scalability
[Link] is designed for scalability. Its non-blocking architecture and event-driven nature make it
ideal for applications that require high concurrency, such as real-time chat applications, online
gaming, and live streaming services.
25
5. Performance
By leveraging the V8 engine, [Link] executes JavaScript code with high efficiency. V8 compiles
JavaScript directly to machine code, resulting in faster execution times compared to interpreted
languages.
Verifying Installation
After installation, you can verify that [Link] and npm are installed correctly by running the
following commands in your terminal:
node -v
npm -v
These commands should print the installed versions of [Link] and npm, respectively.
[Link] provides you with the necessary packages and tools to build, bundle, and run your React
application.
1. Package Management
npm (Node Package Manager) or yarn is used to manage the dependencies and libraries that your
React application needs.
You install [Link] packages using npm or yarn, which include React itself, as well as other
libraries and tools.
2. Development Server
Create React App (CRA): A popular boilerplate tool for quickly setting up a new React application.
It sets up a local development server, provides hot-reloading, and configures Webpack and Babel
26
under the hood.
3. Build Tools
Webpack: A module bundler that takes your code and assets and bundles them into a single file or
a set of files that can be served to the browser.
Babel: A JavaScript compiler that converts modern JavaScript code into a backward-compatible
version for older browsers.
27
React
1. Component-Based Architecture
React's component-based architecture allows developers to build encapsulated components that
manage their own state. These components can be composed to form complex user interfaces. This
modular approach makes it easier to manage and scale applications.
2. Virtual DOM
React introduces the concept of a Virtual DOM, which is a lightweight representation of the actual
DOM. When the state of a component changes, React updates the Virtual DOM first. It then
calculates the most efficient way to update the real DOM, minimizing the number of direct
manipulations and improving performance.
3. JSX
JSX (JavaScript XML) is a syntax extension for JavaScript that allows developers to write HTML
directly within JavaScript code. JSX makes the code more readable and expressive by allowing
HTML-like syntax in React components.
28
5. Declarative Programming
React's declarative nature allows developers to describe what the UI should look like based on the
application's state. React takes care of updating the UI to match the state, providing a clear and
predictable way to manage the user interface.
8.3 Installation
Setting Up a React Environment
To start using React, you need to set up a development environment. The easiest way to create a
new React project is by using Create React App, a command-line tool that sets up a new React
project with a sensible default configuration.
This will start the development server, and you can view your React application by navigating to
‘[Link] in your browser.
29
8.4 Understanding React Components
Function Components
Function components are the simplest way to write a component in React. They are JavaScript
functions that return JSX.
Class Components
Class components are ES6 classes that extend from React. Component. They have additional
features, such as state and lifecycle methods.
Component Composition
Components can be composed together to build complex UIs. A parent component can pass data
to its child components via props.
State
State is a built-in object that allows components to create and manage their own data. Unlike props,
state is mutable and can be updated using the ‘setState’ method in class components or the
‘useState’ hook in function components.
30
React Hooks
React Hooks are functions that let you use state and other React features in function components.
Introduced in React 16.8, hooks provide a more direct way to use React features without writing
class components.
Common Hooks:
‘useState’: Allows you to add state to function components.
‘useEffect’: Lets you perform side effects in function components (similar to lifecycle methods in
class components).
‘useContext’: Provides a way to access context values.
‘useRef’: Gives access to a mutable ref object.
‘useReducer’: Manages complex state logic.
React is a powerful and flexible JavaScript library that revolutionizes the way developers build
user interfaces. By adopting a component-based architecture, React promotes the creation of
reusable, maintainable, and efficient code, which is crucial for developing scalable web
applications. Its key features, such as the Virtual DOM, JSX, one-way data binding, and hooks,
enhance the development experience and enable the creation of dynamic and interactive user
interfaces.
React's declarative nature simplifies the process of designing UIs, allowing developers to focus on
what the interface should look like rather than how to implement it. This approach leads to more
predictable and easier-to-debug code. Additionally, React's ecosystem, including tools like Create
React App, React Router, and state management libraries like Redux and MobX, further extends
its capabilities, making it a comprehensive solution for front-end development.
31
Redux
Redux is a state management library for JavaScript applications, most commonly used with React.
It provides a predictable state container that helps consistently manage the application state.
Redux's principles of a single source of truth, state immutability, and unidirectional data flow make
it an essential tool for building scalable and maintainable applications.
Predictable State: By centralizing the state and enforcing strict rules for state changes, Redux
makes the state predictable.
Easier Debugging: Redux DevTools allows developers to inspect every state change, making
debugging easier.
Simplified State Management: Redux abstracts the state management logic into a centralized
store, simplifying the process of state updates.
Consistency: With Redux, the state updates follow a strict flow, ensuring consistency across the
32
application.
9.3 Installation
Setting Up Redux
To set up Redux in a React application, follow these steps:
3. Define Actions:
Actions are payloads of information that send data from the application to the Redux store.
// [Link]
export const increment = () => ({
type: 'INCREMENT'
});
4. Create Reducers:
33
Reducers specify how the application's state changes in response to actions.
// [Link]
const initialState = {count: 0 };
// [Link]
import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import App from './App';
import store from './store';
[Link](
<Provider store={store}>
<App />
</Provider>,
34
[Link]('root')
);
// [Link]
import React from 'react';
import { useSelector, useDispatch } from 'react-redux';
import { increment, decrement } from './actions';
return (
<div>
<h1>{count}</h1>
<button onClick={() => dispatch(increment())}>Increment</button>
<button onClick={() => dispatch(decrement())}>Decrement</button>
</div>
);
};
35
npm install redux-thunk
// [Link]
import { createStore, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';
import rootReducer from './reducers';
Redux Toolkit
Redux Toolkit is an official, opinionated, batteries-included toolset for efficient Redux
development. It simplifies many common tasks, such as setting up the store, creating reducers and
actions, and managing complex state logic.
// [Link]
import { configureStore } from '@reduxjs/toolkit';
import counterReducer from './counterSlice';
36
Keep Actions Simple: Actions should be as simple and descriptive as possible.
Normalize State: Store data in a normalized format to avoid nested state objects and arrays.
Use Selectors: Create selectors to encapsulate the logic for extracting data from the state.
Use Redux DevTools: Utilize Redux DevTools for debugging and monitoring state changes.
Redux is a powerful state management tool that, when combined with React, provides a robust
architecture for managing complex application states. Its predictable state container, middleware
support, and advanced development tools like Redux Toolkit make it an indispensable part of
modern web development. By adhering to best practices and leveraging Redux's features,
developers can create scalable, maintainable, and high-performance applications.
37
SYSTEM AND DEVELOPMENT TOOLS
The key components that are necessary for the development of the React-based website will be
discussed in this section. The computer required the appropriate operating system to support
modern development tools and server environments. The development process was facilitated by
a code editor tailored for React and JavaScript development. Finally, the design and distribution
of the website were managed using web development applications.
In the final implementation, the React website was tested on multiple operating systems, including
Windows 10, macOS, and various distributions of Linux, ensuring compatibility across different
environments. Browsers used for testing included Google Chrome, Mozilla Firefox, Microsoft
Edge, and Safari.
38
• Syntax highlighting and IntelliSense for JavaScript and JSX.
• Integrated terminal for running build and development scripts.
• Extensive plugin ecosystem, including ESLint, Prettier, and React-specific tools.
• Git integration for version control.
Babel was employed as the JavaScript compiler to transform ES6+ syntax into compatible
JavaScript that can be run in current and older browsers.
Requirements
The minimum requirements for running the development environment and tools for the React
project were as follows:
39
Operating System: Windows 10, macOS, or a Linux distribution.
Processor: Intel® Core™ i5 or equivalent.
Memory: 8GB of RAM.
Storage: 20GB of available hard disk space.
Display: 1920x1080 resolution with 24-bit color.
By utilizing these tools and systems, the development process of the React website was
streamlined, leading to an efficient and productive workflow. This ensured that the application was
developed, tested, and deployed in a consistent and high-quality manner.
40
Screenshots of Coding
Figure 1
Figure 2
41
Figure 3
Figure 4
42
Figure 5
Figure 6
43
Figure 7
Figure 8
44
Figure 9
Figure 10
45
Screenshots of Project
Figure 11
Figure 12
Figure 13
46
Figure 14
Figure 15
Figure 16
47
Figure 17
Figure 18
Figure 19
48
Figure 20
Figure 21
49
Conclusion
In conclusion, the development of a website for architectural services requires the acquisition
of appropriate tools and resources. Standardization plays a crucial role in ensuring that the
platform meets the expectations of users across different devices and browsers. By employing
standardized resources and tools, we guarantee that clients can access and enjoy a seamless
browsing experience, regardless of their preferred browser or device.
Moreover, utilizing the right resources enables us to create a contemporary platform that
integrates seamlessly with current technologies and software, enhancing the overall user
experience for clients seeking architectural services. The incorporation of standard tools
ensures that navigation, menus, and layout adhere to familiar practices, facilitating ease of use
for clients.
Ultimately, investing in the right tools and resources not only enhances the functionality and
performance of the architectural services website but also contributes to its growth and
popularity within the architectural community. The features such as Home, About Us, Features,
Our Projects, Appointment, Testimonials, Contact Us, and Login are designed to provide a
comprehensive and user-friendly journey, ensuring client satisfaction and fostering a loyal
client base.
50
References
51
Bibliography
• [Link]
• [Link]
• From Wikipedia, “HTML”, [Link]
• [Link]
• [Link]
52