Full Stack Web Development CD
Full Stack Web Development CD
INTRODUCTION
1.1.Objective
1.2.Overview
The Weather App is a digital application built using HTML, CSS, and
JavaScript to provide real-time weather updates to users. HTML serves as the
structural foundation of the app, CSS is used for styling and responsive design,
while JavaScript adds interactivity by fetching live weather data from external
APIs and updating the interface dynamically. The app aims to offer an easy-to-use,
visually appealing, and responsive platform for users to check weather forecasts
and track conditions in various locations. The project highlights the synergy
between these technologies in creating a functional, accessible, and engaging
weather tool.
1
CHAPTER-2
FLOW CHART
2
CHAPTER-3
SYSTEM DESIGN
3.1.ARCHITECTURE OVERVIEW
The Weather App's architecture hinges on the fusionof HTML, CSS, and
JavaScript. HTML forms the structural base, CSSenhances visuals, and JavaScript
enables dynamic interactions.Leveraging weather APIs, the app fetches and
processesreal- time data, presenting users with an intuitive interfacefor
easyweather tracking. This layered approach ensures a responsive, user-friendly
experience.
3.2.COMPONENTS
3.2.1.HTML STRUCTURE
Forms the foundational structure, outliningthe layout and content
presentation of the application.
DOCTYPE: Specifies that this is an HTML5 document.
HTML Element: The root container for all content, with a language set to
English (lang="en").
Head Section: Contains metadata, the document title, and viewport settings.
Body Section: Contains all the visible content of the page, including the header,
navigation, main content, and footer.
Header: Contains the page's title and navigation menu.
Main: Holds the primary content of the webpage (e.g., articles, sections).
Footer: Typically contains copyright information or other relevant links.
3
3.2.2.CSS STYLING:
3.2.3.JAVASCRIPT FUNCTIONALITY
4
3.2.4.WEATHER APIS INTEGRATION:
5
CHAPTER-4
TECHNOLOGY USED
4.1. HTML
6
4.2.CSS
7
4.3.JAVASCRIPT
8
4.4.Weather APIs (Application Programming Interfaces)
4.5.Technology Integration
9
CHAPTER -5
CONCLUSION
10
ANNEXURES
ANNEXURE A: SOURCE CODE
-WEATHER.HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Weather App</title>
<link rel="stylesheet" href="weather.css">
</head>
<body>
<div class="card">
<div class="search">
<input type="text" placeholder="enter city name" spellcheck="false">
<button><img src="icons/search.png"></button>
</div>
<div class="error">
<p>Invalid City Name</p>
</div>
<div class="weather">
<img src="icons/clear.png" class="weather-icon">
<h1 class="temp">22°c</h1>
<h2 class="city">Meerut</h2>
<div class="details">
<div class="col">
11
<img src="icons/humidity.png">
<div>
<p class="humidity">50 %</p>
<p>Humidity</p>
</div>
</div>
<div class="col">
<img src="icons/wind.png">
<div>
<p class="wind">15 Km/h<p>
<p>Wind Speed</p>
</div>
</div>
</div>
</div>
</div>
<script src="weather.js"></script>
</body>
</html>
-WEATHER.CSS
*{
margin: 0;
padding: 0;
font-family: sans-serif;
box-sizing: border-box;
}
body{
12
background: #222;
}
.card{
width: 90%;
max-width: 470px;
background: linear-gradient(135deg, #00feba, #5b548a);
color: #fff;
margin: 100px auto 0;
border-radius: 20px;
padding: 40px 35px;
text-align: center;
}
.search{
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
}
.search input{
border: 0;
outline: 0;
background: #ebfffc;
color: #555;
padding: 10px 25px;
height: 60px;
border-radius: 30px;
flex: 1;
13
margin-right: 16px;
font-size: 18px;
}
.search button{
border: 0;
outline: 0;
background: #ebfffc;
border-radius: 50%;
width: 60px;
height: 60px;
cursor: pointer;
}
.search button img{
width: 18px;
}
.weather-icon{
width: 170px;
margin-top: 30px;
}
.weather h1{
font-size: 80px;
font-weight: 500;
}
weather h2{
font-size: 45px;
font-weight: 400;
margin-top: -10px;
14
}
.details{
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 20px;
margin-top: 50px;
}
.col{
display: flex;
align-items: center;
justify-content: left;
}
.col img{
width: 40px;
margin-right: 10px;
}
.humidity, .wind{
font-size: 28px;
margin-top: -6px;
}
.weather{
display: none;
}
.error{
text-align: left;
margin-left: 10px;
15
font-size: 14px;
margin-top: 10px;
display: none;
}
-WEATHER.JS
const apiKey = "8ce6268382acb2c82d8070f889bd33b9";
const api url = "https://api.openweathermap.org/data/2.5/weather?
units=metric&q=";
const searchbox = document.querySelector(".search input");
const searchbtn = document.querySelector(".search button");
const weatherIcon = document.querySelector(".weather-icon");
async function checkWeather(city){
const response = await fetch(apiurl + city + `&appid=${apiKey}`);
if(response.status == 404){
document.querySelector(".error").style.display = 'block';
document.querySelector(".weather").style.display = 'none';
}
else{
var data = await response.json();
document.querySelector(".city").innerHTML = data.name;
document.querySelector(".temp").innerHTML = Math.round(data.main.temp) +
"°c";
document.querySelector(".humidity").innerHTML = data.main.humidity+"%";
document.querySelector(".wind").innerHTML = data.wind.speed + " Km\h";
if(data.weather[0].main == "Clouds"){
weatherIcon.src = "icons/clouds.png" }
else if(data.weather[0].main == "Clear"){
16
weatherIcon.src = "icons/clear.png" }
else if(data.weather[0].main == "Rain"){
weatherIcon.src = "icons/rain.png" }
else if(data.weather[0].main == "Drizzle"){
weatherIcon.src = "icons/drizzle.png" }
else if(data.weather[0].main == "Mist"){
weatherIcon.src = "icons/mist.png" }
document.querySelector(".error").style.display = 'none';
document.querySelector(".weather").style.display = 'block';
}
}
searchbtn.addEventListener("click", ()=>{
checkWeather(searchbox.value);
})
ANNEXURE B:SCREENSHOTS
17
18
19
FIGURE NO 5.1 -OUTPUT SCREEN
20
BIBLIOGRAPHY
1. MDN Web Docs
2. W3Schools
3. Stack Overflow
various online forums offered comprehensive insights and solutions to
intricate coding challenges.
Additionally, tutorials and guides fromreputablesources like YouTube
channels and tech blogs offeredstep-by-step instructions and practical examples
that significantly contributed to our understanding and implementation of crucial
app functionalities.
21