It3511 - Full Stack Web Development - Faculty - Manual
It3511 - Full Stack Web Development - Faculty - Manual
363, Arcot Road, Kodambakkam, Chennai – 600 024, Tamil Nadu, India
LAB MANUAL
COURSE OBJECTIVES:
• To develop full stack applications with clear understanding of user interface, business
logic and data storage.
• To design and develop user interface screens for a given scenario
• To develop the functionalities as web components as per the requirements
• To implement the database according to the functional requirements
• To integrate the user interface with the functionalities and data storage.
COURSE OUTCOMES:
CO1: Design full stack applications with clear understanding of user interface, business
logic and data storage.
CO2: Design and develop user interface screens
CO3: Implement the functional requirements using appropriate tool
CO4: Design and develop database based on the requirements
CO5: Integrate all the necessary components of the application
DEPARTMENT OF INFORMATION TECHNOLOGY
EXP
TITLE OF THE EXPERIMENT
NO.
AIM:
To do the installation and setup up the environment of full stack web
development framework using Node.js.
INSTALLATION:
COMMANDS:
1. console.log ("hello world");
2. npm install package-name
3. node script.js
4. mkdir-my folder
VIVA QUESTIONS:
PROCEDURE:
Create Project Structure:
Create a new directory for your project and navigate to it in the terminal.
Install Dependencies:
Run these commands to initialize your project and install necessary package
Create Files:
Set up your project structure with the following files and folders:
my-portfolio(dir)-public(dir)-css(dir)-style.css(css file)
my-portfolio(dir)-view(dir)-index.html(html file)
my-portfolio(dir)-app.js(js file)
HTML Code (views/index.html):
Create an index.html file in the views directory with your HTML structure.
CSS File (public/css/style.css):
Create a style.css file in the public/css directory for your styles.
Node.js Server (app.js):
Create a Node.js server in the app.js file to serve your portfolio website.
Run the Server:
Run your Node.js server with the following command.
View Portfolio:
Open your web browser and navigate to the port to view your portfolio.
PROGRAM:
Create a New Project Directory:
mkdir portfolio
Install Dependencies:
npm init
npm install express ejs
HTML Code (views/index.html):
Create an index.html file in the views directory with your HTML structure.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/css/style.css">
<title>My Portfolio</title>
</head>
<body>
<header>
<h1>Welcome to My Portfolio</h1>
<nav>
<ul>
<li><a href="/">Home</a></li>
<li><a href="/about">About</a></li>
<li><a href="/projects">Projects</a></li>
<li><a href="/contact">Contact</a></li>
</ul>
</nav>
</header>
<section class="hero">
<h2>Hi, I'm N Yogeshwaran</h2>
<p>Front-End Developer</p>
</section>
<section class="about">
<h2>About Me</h2>
<p>I am a passionate developer with a keen interest in creating user-friendly and visually
appealing web experiences. I specialize in front-end development and enjoy creating intuitive and
elegant user interfaces.</p>
</section>
<section class="projects">
<h2>Projects</h2>
<div class="project">
<h3>Portfolio Website</h3>
<p>Designed and developed my personal portfolio website to showcase my skills and
projects.</p>
</div>
OUTPUT:
RESULT:
VIVA QUESTIONS:
Q1: What is the purpose of a portfolio website?
A1: A portfolio website showcases an individual's skills, projects, and experiences, serving as a digital
resume to attract potential employers or clients.
ABSTRACT
We are developing a web application to manage the to-do lists of users. The
application will allow users to create, edit, and delete to-do items, as well asset
deadlines and priorities. Users will also be able to create multiple to-do lists, and
organise their tasks by category. The application will be implemented using a
variety of web development technologies, including HTML, CSS, JavaScript, and
a backend framework such asNode.JS The application will be hosted on a cloud
server, and will be accessible to users from anywhere in the world with an internet
connection.The application will be designed to be user-friendly andeasy to use.
It will have a clean and modern interface, and will be responsive, sothat it can be
used on a variety of devices, including desktop computers, laptops, tablets, and
smartphones.The application will also be secure. Users will be required to create
an account and log in before they can use the application. All user data will be
stored on the server in an encrypted format.The applicationwill be beneficial
to users in a number of ways. It will help them to stay organised and on track with
their tasks. It will also help them to prioritise their tasks and to focus on the most
important things. Additionally, the application will make it easy for users to share
their to-do lists with others, such as colleagues or family members.
SYSTEM REQUIREMENTS
● PC
● Vs Code
● Client Side- HTML, Javascript, CSS
● Server Side- Node js
SYSTEM DESIGN AND ARCHITECTURE
The web application to manage the to-do list of users will work as follows:
1. User registration and login: Users will need to create an account and
log in before they can use the application. This will allow the
application to track each user's to-do list separately.
2. Adding to-do items: Users can add to-do items by entering a task
description, deadline, priority, and any other relevant information.
3. Editing and deleting to-do items: Users can edit or delete to-do
items at any time.
4. Organizing to-do items: Users can organize their to-do items into
multiple lists and categories. This can be helpful for prioritizing tasks
or grouping related tasks together.
5. Viewing to-do items: Users can view their to-do list in a variety of
ways, such as by due date, priority, or list.
6. Completing to-do items: When users complete a task, they can mark
it as complete. This will remove the task from the to-do list and move
it to a completed tasks list.
CODE
Login.html
<!DOCTYPE html>
<html>
<head>
<title>Login</title>
<style>
body {
font-family: 'Arial', sans-serif; background-
color: #2C3E50;
color: #ecf0f1; text-align:
center; display: flex;
justify-content: center; align-items:
center; height: 100vh;
margin: 0;
}
.login-container { background:
#34495e; border-radius: 5px;
padding: 20px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); max-width:
400px;
}
h2 {
margin-left: 0 0 20px; color:
#ecf0f1;
}
.login-container input[type="text"],
.login-container input[type="password"] { width: 100%;
padding: 10px; border:
none;
border-bottom: 2px solid #3498db;
background-color: #2C3E50;
color: #ecf0f1; border-
radius: 0;
margin: 10px 0; /* Add margin for spacing */
}
.login-container button { width:
100%; padding: 10px;
background: #3498db; color:
#ecf0f1; border: none;
border-radius: 3px; cursor:
pointer;
transition: background-color 0.3s;
}
.login-container button:hover { background:
#2980b9;
}
</style>
</head>
<body>
<div class="login-container">
<h2>Login</h2>
<form id="loginForm" onsubmit="return validateForm()">
<input type="text" id="username" placeholder="Username"
required>
<input type="password" id="password" placeholder="Password"
required>
<button type="submit">Login</button>
</form>
</div>
<script>
function validateForm() {
// Replace with your authentication logic (e.g., calling an
API)
const username = document.getElementById("username").value; const password =
document.getElementById("password").value;
}
.completed {
text-decoration: line-through; color: #999;
}
.delete-button { background:
#e74c3c; color: #ecf0f1;
border: none;
border-radius: 3px;
padding: 5px 10px; cursor:
pointer;
}
.list-button { width: 100%;
padding: 10px;
background: #3498db; color:
#ecf0f1; border: none;
border-radius: 3px;
cursor: pointer; margin-
top: 10px;
}
.list-button:hover { background:
#2980b9;
}
</style>
</head>
<body>
<div class="container">
<h1>To-Do List</h1>
<div class="input-container">
<input type="text" id="taskInput" placeholder="Add a new
task...">
<button onclick="addTask()">Add</button>
</div>
<ul id="taskList">
<!-- Tasks will be added here dynamically -->
</ul>
<button class="list-button" onclick="viewTaskList()">List of Tasks</button>
</div>
<script>
const taskInput = document.getElementById('taskInput'); const taskList =
document.getElementById('taskList');
// Retrieve task history data from local storage
const tasksData = localStorage.getItem('taskHistoryData'); const tasks = tasksData
? JSON.parse(tasksData) : [];
// Display task history on the page function
displayTaskHistory() {
taskHistory.innerHTML = ''; tasks.forEach(task
=> {
const taskItem = document.createElement('li'); taskItem.innerHTML = `
<span>${task.text}</span>
<span>${task.action}</span>
`; taskHistory.appendChild(taskItem);
});
}
function addTask() {
const taskText = taskInput.value.trim(); if (taskText ===
'') {
return;
}
const taskItem = document.createElement('li'); taskItem.innerHTML = `
<span>${taskText}</span>
<button class="delete-button" onclick="deleteTask(this)">Delete</button>;
taskList.appendChild(taskItem); taskInput.value
= '';
// Record the task addition to the task history tasks.push({ text: taskText,
action: 'Added' }); localStorage.setItem('taskHistoryData',
JSON.stringify(tasks));
displayTaskHistory();
}
function deleteTask(element) { taskList.removeChild(element.parentElement);
// Record the task deletion to the task history const taskText =
element.parentElement.querySelector('span').innerText; tasks.push({ text: taskText, action:
'Deleted' }); localStorage.setItem('taskHistoryData',
JSON.stringify(tasks));
displayTaskHistory();
}
function viewTaskList() {
window.open('task-list.html', '_blank');
}
</script>
</body>
</html>
Task-list.html
<!DOCTYPE html>
<html>
<head>
<title>Task History</title>
<style>
body {
font-family: Arial, sans-serif; background-
color: #2C3E50; color: #ecf0f1;
text-align: center; margin:
0;
padding: 0;
}
.container {
max-width: 400px; margin:
20px auto; background:
#34495e; border-radius: 5px;
padding: 20px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
h1 {
margin: 0 0 20px; color:
#ecf0f1;
}
ul {
list-style-type: none; padding:
0;
}
li {
display: flex;
justify-content: space-between; align-items:
center; background: #34495e;
border: 1px solid #2C3E50; border-
radius: 3px; padding: 10px;
margin-bottom: 5px;
}
.clear-button { width:
100%; padding: 10px;
background: #e74c3c; color:
#ecf0f1; border: none;
border-radius: 3px; cursor:
pointer; margin-top: 10px;
}
.clear-button:hover { background:
#c0392b;
}
</style>
</head>
<body>
<div class="container">
<h1>Task History</h1>
<ul id="taskHistory">
<!-- Task history will be displayed here dynamically -->
</ul>
<button class="clear-button" onclick="clearTasks()">Clear Tasks</button>
</div>
<script>
const taskHistory = document.getElementById('taskHistory');
// Retrieve task history data from local storage
const tasksData = localStorage.getItem('taskHistoryData'); const tasks = tasksData
? JSON.parse(tasksData) : []; function displayTaskHistory() {
taskHistory.innerHTML = ''; tasks.forEach(task => {
const taskItem = document.createElement('li'); taskItem.innerHTML = `
<span>${task.text}</span>
<span>${task.action}</span>
`; taskHistory.appendChild(taskItem);
});
}
displayTaskHistory(); function
clearTasks() {
localStorage.removeItem('taskHistoryData'); // Clear the local
storage
taskHistory.innerHTML = ''; // Clear the displayed tasks
}
</script>
</body>
</html>
CONCLUSION
In conclusion, developing a web application to manage a to-do list is a valuable
project that can greatly enhance productivity and organisation. By providing
users with a user-friendly interface, task prioritisation, and reminders, such an
application can help individuals and teams effectively manage their tasks and
responsibilities. The project requires careful planning, a well-thought-out
design, robust backend development, and thorough testing to ensure its
success. Additionally, ongoing maintenance and updates will be essential to
keep the application relevant and responsive to user needs. Overall, the
development of a to-do list web application can be a rewarding endeavour,
contributing to increased efficiency and time management for its users.
Viva questions:
Q1: What is a To-Do list application, and why is it useful?
A1: A To-Do list application helps users manage tasks by allowing them to create, update, and delete
tasks, making it easier to organize and prioritize their daily activities.
ABSTRACT
SYSTEM REQUIREMENTS
● PC
● Vs Code
● Client Side- HTML, Javascript, CSS
● Server Side- Node js
2. Back-End:
Web Server: A web server (e.g., Apache, Nginx) handles HTTP requests and
serves web pages to users.
Database Server: Stores user data, posts, and other relevant information. A
relational database (e.g., MySQL, PostgreSQL) or a NoSQL database (e.g.,
MongoDB) may be used, depending on the requirements.
5. Posting and Messaging: Users can create, edit, and delete posts with text
and multimedia content. Enable users to comment on and like posts.
Implement direct messaging or private messaging features for one-on-one
communication.
6. News Feed: Create personalized news feeds for each user, showing posts
from users they follow. Implement algorithms to rank and filter posts based
on relevance and user preferences.
CODE
Index.js
if (postContent) {
// Store the new post in the array (in a real app, you'd use a
database)
posts.push({ content: postContent, date: new Date()
});
}
res.redirect('/');
});
app.listen(port, () => {
console.log(`Microblogging App listening on port
${port}`);
});
index.html
<!DOCTYPE html>
<html>
<head>
<title>Microblogging App</title>
</head>
<body>
<h1>Welcome to the Microblogging App</h1>
<form action="/post" method="post">
<input type="text" name="postContent"
placeholder="What's on your mind?">
<button type="submit">Post</button>
</form>
<h2>Recent Posts:</h2>
<ul id="postList">
<!-- Posts will be displayed here -->
</ul>
</body>
</html>
SNAPSHOTS:
CONCLUSION
Viva questions:
Q1: What is a microblogging application?
A1: A microblogging application allows users to post short messages or updates, similar to Twitter, where
content is generally brief and focuses on real-time communication.
RESULT:
EX.NO: 4 SELLING AND BUYING APPLICATION
DATE:
AIM:
ABSTRACT:
In today's digital age, the buying and selling landscape has evolved significantly,
with a growing demand for user-friendly and feature-rich online platforms. This abstract introduces a
cutting-edge web application built with HTML, CSS, and React.js that revolutionizes the way users
engage in e-commerce transactions.
Our innovative online marketplace provides a dynamic and interactive environment for buyers and
sellers to connect, browse, and trade products and services. Leveraging the power of React.js, we have
developed a responsive, lightning- fast, and highly customizable platform that meets the demands of
modernonlineconsumers.
SYSTEM ARCHITECTURE:
BUYING
CUSTOMIZATIO
DATA
AND
SYSTEM IMPLEMENTATIONS:
LOGIN WITH REACT .JS
import React, { Component } from 'react'; class
Login extends Component {
constructor(props) {
super(props); this.state
={
username: '',
password: '', loggedIn:
false
};
}
handleLogin = () => { this.setState({
loggedIn: true });
render() {
if (this.state.loggedIn) {
return <Redirect to="/profile" />;
} return (
<div>
<h1>Login</h1>
<input
type="text" placeholder="Username"
value={this.state.username}
onChange={(e) => this.setState({ username: e.target.value })}
/>
<input
type="password"
placeholder="Password"
value={this.state.password}
onChange={(e) => this.setState({ password: e.target.value })}
</div>
);
}
}export default Login;
PATH ROUTE
import React from 'react';
import { BrowserRouter as Router, Route } from 'react-router-dom'; import Login
from './Login';
import Profile from './Profile'; function
App() {
return (
<Router>
<Route path="/" exact component={Login} />
<Route path="/profile" component={Profile} />
</Router>
);
}
export default App;
</div>
<div class="carousel-item">
<img src="https://images.summitmedia-
digital.com/topgear/images/2021/02/16/jaguar-sports-cars-ev-2-1613462813.jpg" class="d- block w-
100" alt="..." />
</div>
<div class="carousel-item">
<img src="https://th.bing.com/th/id/R.e4cac3e21ec3ad456abd758190d98be6?rik=zYuPUGkusjVC
1A&riu=http%3a%2f%2fimages.cdn.autocar.co.uk%2fsites%2fautocar.co.uk%2ffiles%2fstyles
%2fgallery_slide%2fpublic%2fjaguar-f-type-coupe-1-
06_1.jpg%3fitok%3d1VPCYpct&ehk=URNb3Ky1xgOe1RdWmthBO8g8jHy9XQvSNCzcj6iJXGs%
3d&risl=&pid=ImgRaw&r=0" class="d-block w-100" alt="..." />
</div>
</div>
<a class="carousel-control-prev" href="#carouselExampleIndicators1" role="button"
data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</a>
<a class="carousel-control-next" href="#carouselExampleIndicators1" role="button"
data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</a>
</div>
<div class="detailed-view-card-text-container">
<h1 class="detailed-view-card-heading">Jaguar</h1>
<p class="detailed-view-card-description">
The Jaguar F-Type (X152) is a series of two-door, two-seater grand tourers manufactured
by British car manufacturer Jaguar Land Rover under their Jaguar Cars marque since 2013.
The car's JLR D6a platform is based on a shortened version of the XK's platform. It is the
so-called "spiritual successor" to the famous E-Type
</p>
</div>
</div>
<button class="btn btn-dark" onclick="display('sectionbrowserPlaces')"> back
</button>
</div>
<div id="sectionGoldenTempleDetailedView">
<div class="detailed-view-bg-container">
<h1 class="detailed-view-heading">Detailed View</h1>
<div class="detailed-view-card-container">
<div id="goldenTempleCarousel" class="carousel slide" data-ride="carousel">
<ol class="carousel-indicators">
<li data-target="#goldenTempleCarousel" data-slide-to="0" class="active"></li>
<li data-target="#goldenTempleCarousel" data-slide-to="1"></li>
<li data-target="#goldenTempleCarousel" data-slide-to="2"></li>
</ol>
<div class="carousel-inner">
<div class="carousel-item active">
<img
src="https://i.pinimg.com/originals/1d/b4/28/1db4285c5c92986ba90cb3fb7ce9f8af.jpg" class="d-
block w-100" alt="..." />
</div>
<div class="carousel-item">
<img
src="https://th.bing.com/th/id/OIP.rXxduez3_IFzX1pY9iFPAAHaFj?pid=ImgDet&rs=1"
class="d-block w-100" alt="..." />
</div>
<div class="carousel-item">
<img
src="https://th.bing.com/th/id/OIP.YtH1uwDATH5m8X382XAnCAHaJ4?pid=ImgDet&rs=1"
class="d-block w-100" alt="..." />
</div>
</div>
<a class="carousel-control-prev" href="#goldenTempleCarousel" role="button" data-
slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</a>
<a class="carousel-control-next" href="#goldenTempleCarousel" role="button" data-
slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</a>
</div>
<div class="detailed-view-card-text-container">
<h1 class="detailed-view-card-heading">Dogs and Cats</h1>
<p class="detailed-view-card-description">
Husky is a general term for a dog used in the polar regions,
primarily and specifically for work as sled dogs. It refers to a traditional
northern type,
notable for its cold-weather tolerance and overall hardiness.
Modern racing huskies that maintain arctic breed traits
(also known as Alaskan huskies) represent an ever-changing crossbreed of the
fastest dogs.
The Persian cat, also known as the Persian longhair,
is a long-haired breed of cat characterised by a round face and short muzzle.
</p>
</div>
</div>
<button class="btn btn-dark" onclick="display('sectionFavouritePlaces')"> back
</button>
</div>
</div>
.bg-container {
background-image: url("https://wallpapercave.com/wp/uUqxVHp.jpg");
height: 100vh;
background-size: cover;
}
.tourism-card {
text-align: center; background-
color: white; border-top-left-
radius: 25px; border-top-right-
radius: 25px; padding: 5px;
}
.button { color:
white;
background-color: #25b1cc; width:
138px;
height: 36px;
border-width: 0px;
border-radius: 20px;
}
.main-heading {
font-family: "Roboto";
}
.paragraph {
font-family: "Roboto";
}
.favourite-places-bg-container {
background-image: url("https://wallpapercave.com/wp/uUqxVHp.jpg"); height:
100vh;
background-size: cover; padding:
24px;
}
.favourite-places-heading { color:
white;
font-family: "Roboto";
font-size: 28px;
font-weight: bold;
}
.favourite-place-card-container {
background-color: white;
border-radius: 8px;
padding: 16px;
margin-bottom: 15px;
}
.favourite-place-card-heading { color:
#0f0e46;
font-family: "Roboto";
font-size: 23px;
font-weight: bold;
}
.favourite-place-card-description {
color: #6c6b70;
font-family: "Roboto";
font-size: 13px;
}
.favourite-place-card-image { width:
80px;
height: 100px;
}
.favourite-place-card-text-container {
margin-right: 15px;
}
.detailed-view-bg-container {
background-image: url("https://wallpapercave.com/wp/uUqxVHp.jpg"); height:
100vh;
background-size: cover;
}
.detailed-view-heading {
color: white;
font-family: "Roboto";
font-size: 28px;
font-weight: bold;
padding: 24px;
}
.detailed-view-card-container {
background-color: white;
border-bottom-right-radius: 8px;
border-bottom-left-radius: 8px;
margin: 24px;
}
.detailed-view-card-heading { color:
#0f0e46;
font-family: "Roboto";
font-size: 23px;
font-weight: bold;
}
.detailed-view-card-description {
color: #6c6b70;
font-family: "Roboto";
font-size: 13px;
}
.detailed-view-card-text-container {
padding: 16px;
}</div></body></html>
SNAPSHOTS:
CONCLUSIONS:
In conclusion, our online marketplace brings together the latest web technologies to create a
feature-rich, user-friendly, and secure environment for buying and selling products and
services. Experience the future of e-commerce with our innovative platform, providing a
seamless and efficient marketplace for all users.
Viva Questions:
Q1: What is an e-commerce application?
A1: An e-commerce application facilitates the online buying and selling of products, enabling users to
browse items, add them to a cart, and purchase them using various payment methods.
Q2: Which technologies are typically used in an e-commerce application?
A2: Frontend technologies include HTML, CSS, and JavaScript frameworks like React.js. Backend can
be handled by Node.js, Express.js, or Django, with databases like MySQL or MongoDB.
Q3: How do you implement a shopping cart feature?
A3: A shopping cart can be implemented by allowing users to add, remove, or update quantities of
products, storing this data in session storage, cookies, or a database until checkout.
Q4: What security measures are necessary for an e-commerce application?
A4: Security measures include HTTPS for secure data transmission, encryption of sensitive data, secure
payment gateways, and proper validation and sanitization of user inputs to prevent attacks.
Q5: How do you handle payment processing in an e-commerce application?
A5: Payment processing is typically handled by integrating third-party payment gateways like PayPal,
Stripe, or Razorpay, which manage the transaction securely on behalf of the application.
RESULT:
DOMAIN: FULL STACK WEB DEVELOPMENT
ABSTRACT
SYSTEM REQUIREMENTS
• Windows 11
• React.js
• Data storage format in react file
SYSTEM ARCHITECTURE:
User
Interface
State
Deployme
Manageme
nt
nt
leave
management
Backup
and Collaborati
ve Tools
Recovery
Data
Storage
SYSTEM DESIGN
System Architecture:
The system can be designed using a three-tier architecture:
Presentation Layer: The front-end application that users interact with, developed using HTML,
CSS, and JavaScript with a framework like React or Angular.
Application Layer: The back-end server that handles user requests, implements business logic,
and communicates with the database. This can be built using Node.js or Python with
frameworks like Express or Django.
Data Layer: The database system (e.g., MySQL or PostgreSQL) where user data, leave
requests, and leave balances are stored.
Components:
• User Interface (UI):
o Create a user-friendly interface that allows users to log in, apply for
different types of leave (casual, medical, etc.), and view their
available leave balances.
o Implement responsive design to support both web and mobile
interfaces.
• Authentication and Authorization:
o Implement user authentication and role-based access control to
manage user access to features and data.
o Use JWT (JSON Web Tokens) or session-based authentication.
• Database:
o Design the database schema to store user information, leave request
details, and leave balance information.
o Tables might include User, LeaveRequest, and LeaveBalance.
• Business Logic:
o Implement the core business logic for handling leave requests and
calculating leave balances.
o Validate leave requests to ensure they meet organization policies
(e.g., available leave days, valid leave types).
o Calculate and update leave balances after leave requests are
approved.
• APIs:
o Develop RESTful or GraphQL APIs to facilitate communication
between the front-end and back-end.
o Define endpoints for user registration, login, leave request
submission, leave balance retrieval, and leave approval/rejection.
• Notification System:
o Implement a notification system to notify users of leave request
status (approved or rejected).
o Notifications can be sent via email or in-app notifications.
Workflow:
• Users log in to the system.
• Users can view their available leave balances.
• Users can submit leave requests, specifying the type of leave (casual,
medical), start date, end date, and reason.
• The system checks if the leave request is valid (e.g., within available leave
balance) and pending approval.
• Leave requests are sent for approval to designated approvers or managers.
• Approvers can review and approve or reject leave requests.
• Approved leave requests update the user's leave balance, and notifications
are sent to the user.
• Users can view the status of their leave requests.
Scalability and Performance:
• To handle potential scalability needs, consider implementing caching
mechanisms, load balancing, and optimizing database queries.
• Monitoring tools should be in place to track performance and identify
bottlenecks.
Deployment:
• Deploy the system to a production server using a hosting service or an on-
premises server.
• Set up a domain and configure SSL for secure communication.
• Implement continuous integration and continuous deployment (CI/CD) for
automated deployment.
Them’s the facts about the system design of our project.
SYSTEM IMPLEMENTATION
CODE
home.html
<!DOCTYPE html>
<html>
<head>
<title>Leave management application </title>
<style>
*{
color:;
}
html,body{
height: 100%;
}
</style>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css"
rel="stylesheet" integrity="sha384-
T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN"
crossorigin="anonymous">
</head>
<body>
<div class="container my-5">
<h1>Leave management Application</h1>
<div>
No. of available casual leaves : {{ data.acleaves }}<br>
No. of causal leaves taken this month : {{ data.tcleaves }}<br>
No. of medical leaves taken this month : {{ data.tmleaves }}<br><br>
</div>
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-
target="#modalhaha">Add leave info</button>
<div class="modal fade" id="modalhaha" tabindex="-1" role="dialog" aria-
labelledby="modelhahalabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Add leave information</h5>
<button type="button" class="close" data-bs-dismiss="modal" aria-
label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<div class="container">
<form method="post">
<div> Leave type: <select name="leavetype" id="leavetype">
<option value="casual">Casual</option>
<option value="medical">medical</option>
</select></div><br>
<div>Start date : <input name="start" type="date"></div><br>
<div>End date : <input name="end" type="date"></div><br>
<button type="button" class="btn btn-secondary" data-bs-
dismiss="modal">Close</button>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
</div> </div></div></div></div></div>
<script
src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"
integrity="sha384-
C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL"
crossorigin="anonymous"></script>
</body></html>
login.html
<!DOCTYPE html>
<html>
<head>
<title> Login Screen</title>
<style>
body{ height:1vh;
}
</style>
<!-- Font Awesome -->
<link
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css"
rel="stylesheet"
/>
<!-- Google Fonts -->
<link
href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap"
rel="stylesheet"
/>
<!-- MDB -->
<link
href="https://cdnjs.cloudflare.com/ajax/libs/mdb-ui-kit/6.4.2/mdb.min.css"
rel="stylesheet"
/>
</head>
<body><div>
<section class="vh-100" style="background-color: #9A616D;">
<div class="container py-5 h-100">
<div class="row d-flex justify-content-center align-items-center h-100">
<div class="col col-xl-10">
<div class="card" style="border-radius: 1rem;">
<div class="row g-0">
<div class="col-md-6 col-lg-5 d-none d-md-block">
<img src="https://mdbcdn.b-cdn.net/img/Photos/new-templates/bootstrap-
login-form/img1.webp"
alt="login form" class="img-fluid" style="border-radius: 1rem 0 0 1rem;" />
</div>
<div class="col-md-6 col-lg-7 d-flex align-items-center">
<div class="card-body p-4 p-lg-5 text-black">
<form method="post">
<div class="d-flex align-items-center mb-3 pb-1">
<i class="fas fa-cubes fa-2x me-3" style="color: #ff6219;"></i>
<span class="h1 fw-bold mb-0">Login Portal</span>
</div>
<h5 class="fw-normal mb-3 pb-3" style="letter-spacing: 1px;">Sign into
your account</h5>
<div class="form-outline mb-4">
<input type="email" id="form2Example17" name="uname" class="form-
control form-control-lg" />
<label class="form-label" for="form2Example17" >Username</label>
</div>
<div class="form-outline mb-4">
<input type="password" id="form2Example27" name="password"
class="form-control form-control-lg" />
<label class="form-label" for="form2Example27">Password</label>
</div>
<div class="pt-1 mb-4">
<button class="btn btn-dark btn-lg btn-block"
type="button">Login</button></div>
<a class="small text-muted" href="#!">Forgot password?</a>
<p class="mb-5 pb-lg-2" style="color: #393f81;">Don't have an account? <a
href="#!"
style="color: #393f81;">Register here</a></p>
<a href="#!" class="small text-muted">Terms of use.</a>
<a href="#!" class="small text-muted">Privacy policy</a>
</form> </div></div></div></div></div></div> </div>
</section>
</div>
<!-- MDB -->
<script
type="text/javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/mdb-ui-kit/6.4.2/mdb.min.js"
></script>
</body>
</html>
SNAPSHOTS:
CONCLUSION
In conclusion, the system design provided offers a robust foundation for a
small-scale leave management system, addressing user needs, security,
scalability, and compliance. It streamlines leave request processes, enhances
transparency, and can boost overall organizational efficiency. By
implementing this design, organizations can create an effective and user-
friendly system that simplifies leave management while ensuring data security
and regulatory compliance. Continuous monitoring and optimization are
crucial for long-term effectiveness and adaptability to changing requirements,
ultimately benefiting both employees and the organization.
VIVA QUESTIONS
Q5: What are the benefits of automating the leave management process?
A5: Automation reduces paperwork, minimizes errors, provides real-time tracking, and speeds up the approval
process, making it more efficient for both students and administrators.
RESULT:
DOMAIN: FULL STACK WEB DEVELOPMENT
ABSTRACT
SYSTEM REQUIREMENTS
● PC
● Vs Code
● Client Side- HTML, Javascript, CSS
● Server Side- Node js
SYSTEM DESIGN AND ARCHITECTURE
2. Front-End Frameworks:
3. Web Server:
A web server (e.g., Node.js, Apache, Nginx) will be used to serve the front-
end web application to users. It will handle HTTP requests and responses.
Backend Server:
The back-end application will be responsible for handling business logic, data
storage, and user authentication. It will be developed using Node.js or another
suitable server-side technology.
4. Database:
5. User Authentication:
6. Task Management:
The system will allow users to add new tasks with task names and descriptions.
They will also be able to update the status of existing tasks among "Pending,"
"In Progress," or "Completed."
7. API Endpoints:
Index.js
const express = require('express');
const bodyParser = require('body-parser');
// Handle POST requests to create new posts app.post('/post', (req, res) => {
const postContent = req.body.postContent;
if (postContent) {
// Store the new post in the array (in a real app, you'd use a database)
posts.push({ content: postContent, date: new Date() });
}
res.redirect('/');
});
app.listen(port, () => {
console.log(`Dashboard Task App listening on port ${port}`);
});
// Sample data to store posts const posts = [];
// Handle POST requests to create new posts app.post('/post', (req, res) => {
const postContent = req.body.postContent;
if (postContent) {
// Store the new post in the array (in a real app, you'd use a database)
posts.push({ content: postContent, date: new Date() });
}
res.redirect('/');
});
app.listen(port, () => {
console.log(`Dashboard Task App listening on port ${port}`);
});
Dashboard.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial- scale=1.0">
<title>Sample HTML Document</title>
<style>
body {
font-family: Arial, sans-serif; margin: 20px;
}
h1 {
color: #333;
}
p{
line-height: 1.6;
}
</style>
</head>
<body>
<header>
</header>
<nav>
<ul>
<li><a href="#section1">Section 1</a></li>
<li><a href="#section2">Section 2</a></li>
<li><a href="#section3">Section 3</a></li>
</ul>
</nav>
<section id="section1">
<h2>Section 1: Introduction</h2>
<p>This is the first section of our sample document, which serves as an introduction
to the content.</p>
</section>
<section id="section2">
<h2>Section 2: Lists and Links</h2>
<p>Here's an unordered list:</p>
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
<p>And an ordered list:</p>
<ol>
<li>First item</li>
<li>Second item</li>
<li>Third item</li>
</ol>
<section id="section3">
<h2>Section 3: Images and Forms</h2>
<p>Here's an image:</p>
<img src="https://via.placeholder.com/300" alt="Sample Image">
<p>A simple form with input fields:</p>
<form>
<label for="name">Name:</label>
<input type="text" id="name" name="name" required>
<br>
<label for="email">Email:</label>
<input type="email" id="email" name="email" required>
<br>
<input type="submit" value="Submit">
</form>
</section>
<footer>
<p>Thank you for exploring our sample HTML document. We hope you found it
informative and useful for learning HTML basics.</p>
</footer>
</body>
</html>
index.html
<!DOCTYPE html>
<html>
<head>
<title>Microblogging App</title>
</head>
<body>
<h1>Welcome to the Microblogging App</h1>
<form action="/post" method="post">
<input type="text" name="postContent" placeholder="What's on your mind?">
<button type="submit">Post</button>
</form>
<h2>Recent Posts:</h2>
<ul id="postList">
<!-- Posts will be displayed here -->
</ul>
</body>
</html>
CONCLUSION
In conclusion, the system design and architecture for the simple project
management dashboard presented herein provide a comprehensive
framework for creating an efficient and user-friendly task management tool.
This architecture encompasses the essential elements required for seamless
user interaction, data security, and scalability. With the combination of front-
end technologies, a robust back-end, secure user authentication, and a well-
structured database, users can easily add, modify, and track tasks while
switching their statuses among "Pending," "In Progress," or "Completed."
Additionally, the system emphasizes data security, scalability, and
responsiveness, ensuring a consistent and reliable user experience across
various devices. As the project management dashboard evolves to meet
increasing demands, this architectural foundation offers the flexibility to
accommodate enhancements and provide valuable insights into user behavior
through analytics, all while adhering to privacy regulations. Ultimately, this
design enables the creation of an effective and user-centric project
management tool suitable for both individual and team-based task tracking.
VIVA QUESTIONS
RESULT:
Ex No: DOMAIN: FULL STACK WEB DEVELOPMENT
DATE: PROJECT: SURVEY APPLICATION
SYSTEM REQUIREMENTS:
• CLIENT-SIDE: HTML, CSS, JAVASCRIPT
• SERVER-SIDE: JSON
SYSTEM ARCHITECTURE:
SYSTEM IMPLEMENTATION:
SOURCE CODE: HTML code:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="./style.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fontawesome/5.15.3/css/all.min.css">
<title>Random Survey</title>
</head>
<body>
<h1>Random Survey</h1>
<form id="survey-form">
<div id="questions-container">
<i class="fas fa-pencil-alt"></i> <!-- Pencil icon -->
<i class="fas fa-check-circle"></i> <!-- Check circle icon -->
</div>
<button class="custom-button primary-button">Submit</button>
</form>
<script type="text/javascript" src="./script.js" ></script>
</body>
</html>
CSS CODE:
/* Global Styles */ body {
font-family: 'Arial', sans-serif; margin: 0;
padding: 0;
background-image: url("sur-1.jpg"), linear-gradient(to bottom, rgba(62, 17,
241, 0.308), rgba(153, 9, 9, 0.736)); background-blend-mode: multiply;
background-repeat: no-repeat; background-size: cover;
background-color: #f7f7f7; /* Light Gray */
}
h1 {
text-align: center; margin: 30px 0;
font-family: 'YourChosenFont', sans-serif; color: #444; /* Dark Gray
*/
}
/* Fade-in Animation */
@keyframes fadeIn {
0% { opacity: 0;
transform: translateY(-20px);
}
100% {
opacity: 1;
transform: translateY(0);
}
}
/* Questions Container */ #questions-container {
margin: 20px auto;
max-width: 800px; /* Wider Container */ padding: 40px;
background-color: rgba(255, 255, 255, 0.95); /* Slightly transparent white */ border: 1px solid #ddd;
border-radius: 20px; /* Rounded Corners */ box-shadow: 0 8px 16px
rgba(0, 0, 0, 0.2); animation: fadeIn 1s ease-in-out;
}
/* Question Styles */
.question { margin-bottom: 40px; padding:
30px;
background-color: #fddb3a; /* Warm Yellow */ border: 3px solid #f58634; /*
Pumpkin Orange */ border-radius: 20px;
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.05);
transition: transform 0.2s ease, border-color 0.3s ease, box-shadow 0.3s ease; cursor: pointer;
}
.question:hover {
transform: translateY(-8px); /* Lift on Hover */ border-color: #e74c3c; /* Tomato
Red on Hover */ box-shadow: 0 10px 20px rgba(0, 0, 0, 0.15);
}
.question p { font-weight: bold; margin-bottom: 15px;
color: #d35400; /* Dark Orange */
}
.primary-button:hover {
background-color: #27ae60; /* Darker Green on Hover */ transform: translateY(-4px);
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.2);
}
/* Secondary Button */ .secondary-button {
background-color: #3498db; /* Blue */ color: #fff;
}
.secondary-button:hover {
background-color: #2980b9; /* Darker Blue on Hover */
transform: translateY(-4px); box-shadow: 0 6px 12px rgba(0,
0, 0, 0.2);
}
/* Custom Illustrations */
.illustration { max-width: 100%;
height: auto; display: block; margin: 0
auto;
}
JAVASCRIPT CODE:
JSON FILE:
{
"questions": [
{ "text": "what is your name?",
"name": "username"
},
{
"text": "What's your preferred social media platform?",
"name": "socialmedia"
},
{
"text": "What's the last movie you watched and loved?",
"name": "movie"
}, {
"text": "What's your favorite season of the year?",
"name": "season"
},
{
"text": "Are you more of an introvert or an extrovert?",
"name": "personality"
},
{
"text": "What is your profession?",
"name": "profession"
}
]
}
SNAPSHOTS:
CONCLUSION:
In conclusion, the development of an online survey application is a valuable endeavor that offers numerous
benefits for a wide range of users, including researchers, businesses, educational institutions, government
agencies, nonprofits, and more. Such an application, equipped with the capability to present users with random
sets of questions, fosters a more engaging and dynamic survey-taking experience.
VIVA QUESTIONS:
Q4: How can you ensure the security and privacy of survey participants?
A4: Security and privacy can be ensured by using HTTPS for secure data transmission, encrypting sensitive
data, implementing authentication for access control, and allowing anonymous responses if necessary.
Q5: What methods can be used to analyze the data collected from an online survey?
A5: Data analysis can be done using statistical tools or built-in analytics features within the application. This
can include generating reports, visualizing data through charts and graphs, and exporting data to CSV or other
formats for further analysis.
RESULT:
PROJECT:TASK DASHBOARD WEB APP
SYSTEM REQUIREMENTS
● PC
● Vs Code
Index.js
= 3000;
// Handle POST requests to create new posts app.post('/post', (req, res) =>
if (postContent) {
// Store the new post in the array (in a real app, you'd use a database)
}
res.redirect('/');
});
=> {
res.json(posts);
});
app.listen(port, () => {
});
Dashboard.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<style>
body {
h1 {
color: #333;
}
p{
line-height: 1.6;
</style>
</head>
<body>
<header>
<p>This is a sample HTML document that showcases various HTML elements and their
usage.</p>
</header>
<nav>
<ul>
</ul>
</nav>
<section id="section1">
<h2>Section 1: Introduction</h2>
<p>This is the first section of our sample document, which serves as an introduction to the
content.</p>
</section>
<section id="section2">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
<ol>
<li>First item</li>
<li>Second item</li>
<li>Third item</li>
</ol>
<ul>
<li><a href="https://www.example.com">Example.com</a></li>
<li><a href="https://www.openai.com">OpenAI</a></li>
</ul>
</section>
<section id="section3">
<p>Here's an image:</p>
<form>
<label for="name">Name:</label>
<br>
<label for="email">Email:</label>
<input type="email" id="email" name="email" required>
<br>
</form>
</section>
<footer>
<p>Thank you for exploring our sample HTML document. We hope you found it informative
and useful for learning HTML basics.</p>
</footer>
</body>
</html>index.html
<!DOCTYPE html>
<html>
<head>
<title>Microblogging App</title>
</head>
<body>
<button type="submit">Post</button>
</form>
<h2>Recent Posts:</h2>
<ul id="postList">
</body> </html>
CONCLUSION
In conclusion, the system design and architecture for the simple project
management dashboard presented herein provide a comprehensive
framework for creating an efficient and user-friendly task management tool.
This architecture encompasses the essential elements required for seamless
user interaction, data security, and scalability.
EX NO : TIME TABLE GENERATOR
DATE :
ABSTRACT:
The "Dynamic Subject Timetable Generator" is a React-based web application that allows
users to create personalized academic timetables. Users can input and manage subject names,
and the application generates a weekly timetable with a predefined structure, incorporating
the user's subjects. This project simplifies the process of scheduling and presents the
timetable in a neat and organized format, making it a useful tool for students and educators.
SYSTEM REQUIREMENTS:
● PC
● Vs Code
● Client Side- HTML, Javascript, CSS
● Server Side- Node j
SYSTEM DESIGN :
The "Dynamic Subject Timetable Generator" is a web application built using React. Its
system design and architecture can be described as follows:
Frontend:
The frontend is implemented using React, a popular JavaScript library for building user
interfaces.
React components are used to create the user interface for the application.
User Interface:
The user interface provides the following key elements:
A table to display the timetable.
An input field to enter subject names.
A button to add subjects to the timetable.
A subject list to view and manage the added subjects.
The user interacts with the UI to add subjects and see the updated timetable.
State Management:
React's state management is used to handle and update the state of the application.
State variables include the list of subjects, the new subject input, and the timetable structure.
Timetable Generation:
The application generates a timetable based on a predefined weekly schedule.
The weekly schedule includes days (Mon, Tue, Wed, etc.) and periods (1 to 8).
Subjects added by the user are dynamically inserted into the timetable.
User Actions:
Users can add subjects by entering subject names and clicking the "Add Subject" button.
Added subjects are displayed in a subject list.
The timetable is automatically updated to reflect the added subjects.
Styling:
CSS is used for styling the user interface, ensuring a neat and organized presentation of the
timetable.
Interactivity:
The application allows real-time interaction with users. Subjects are added to the timetable
and displayed instantly as they are entered.
Version Control (Optional):
The project can be managed using version control software like Git and hosted on platforms
like GitHub for collaboration and code sharing.
SYSTEM ARCHITECTURE :
The system architecture follows a client-side, single-page application (SPA) model, where the
user interacts with the application in the browser. React components are responsible for
rendering the UI and updating the state of the application. The architecture is straightforward,
making it easy to understand and maintain.
The "Dynamic Subject Timetable Generator" focuses on providing a user-friendly
interface for creating and viewing personalized academic timetables while following a
predefined timetable structure.
PROGRAM
CSS
div {
text-align: center;
margin: 20px;
}table {
border-collapse: collapse;
width: 100%;
}
table th {
background-color: #333;
color: #fff;
font-weight: bold;
padding: 10px;
border: 1px solid #000;}
table td {
padding: 10px;
border: 1px solid #000;
text-align: center;}
table td.subject {
background-color: #f2f2f2;
font-weight: bold;
}
table td.break {
background-color: #ccc;
font-style: italic;}
table td.other {
background-color: #f9f9f9;
font-style: italic;
}
REACT
<div>
<button onClick={generateTimetable}>Generate Timetable</button>
</div>
<table>
<thead>
<tr>
<th>Day/Hour</th>
<th>1</th>
<th>2</th>
<th>3</th>
<th>BREAK</th>
<th>4</th>
<th>5</th>
<th>BREAK</th>
<th>6</th>
<th>7</th>
<th>8</th>
</tr>
</thead>
<tbody>
{schedule.map((daySchedule, dayIndex) => (
<tr key={dayIndex}>
<td>{['Mon', 'Tues', 'Wed', 'Thur', 'Fri', 'Sat'][dayIndex]}</td>
{daySchedule.map((subject, subjectIndex) => (
<td key={subjectIndex}>{subject}</td>
))}
</tr>
))}
</tbody>
</table>
</div>
);} <div>
<h2>Generated Timetable</h2>
<table>
<thead>
<tr>
<th>Day</th>
<th>Period</th>
<th>Subject</th>
<th>Duration (minutes)</th>
<th>Start Time</th>
<th>End Time</th>
</tr>
</thead>
<tbody>
{Object.keys(timetable).map((day) => (
timetable[day].map((entry, index) => (
<tr key={day + index}>
<td>{day}</td>
<td>{entry.period}</td>
<td>{entry.subject}</td>
<td>{entry.duration}</td>
<td>{entry.startTime}</td>
<td>{entry.endTime}</td>
</tr>
))
))}
</tbody>
</table>
</div>
</div>);}
export default App;
SNAPSHOTS :
CONCLUSION:
The " Timetable Generator" is a user-friendly and versatile web application built using Reactthat
simplifies the process of creating and visualizing personalized academic timetables. Thisproject
addresses the need for an intuitive and efficient tool for students, educators, and individuals who
require a clear and organized schedule.
Development of APP for Student Attendance with ID BAR CODE
Abstract
This project aims to create a full-stack web application that automates student attendance using barcode scanning
technology. Students will scan their ID barcodes to mark their attendance, and the system will store, manage, and
track this data in a database. The system includes user authentication for students and teachers, allowing secure
access to attendance records. Administrators can generate reports, while students and teachers can view
attendance statistics.
System Requirements
Software Requirements:
Hardware Requirements:
System Architecture
1. User Interface (UI): The user interface will allow students to scan their barcodes and see their
attendance history. Teachers will have the ability to view attendance reports for all students.
2. API Layer: RESTful APIs using Express.js will handle the communication between the front-end and
the back-end server.
3. Database: MongoDB will store student and attendance records. This data will be managed and accessed
through APIs.
4. Barcode Scanning Integration: For web, we'll use JavaScript libraries such as quaggaJS or zxing to
read barcodes via the webcam. For mobile or external scanners, the input will be handled via APIs.
Code
1. Front-End (React.js)
• App.js
function App() {
<div className="App">
<BarcodeScannerComponent
width={500}
height={500}
if (result) setData(result.text);
}}
/>
</div>
);
index.js:
import './index.css';
root.render(
<React.StrictMode>
<App />
</React.StrictMode>
);
Style (CSS)
.App {
text-align: center;
margin: 20px;
• app.js
app.use(cors());
app.use(bodyParser.json());
// Connect to MongoDB
mongoose.connect('mongodb://localhost:27017/student_attendance', {
useNewUrlParser: true,
useUnifiedTopology: true
});
// Attendance Schema
const attendanceSchema = new mongoose.Schema({
studentId: String,
});
const Attendance = mongoose.model('Attendance', attendanceSchema);
studentId: req.body.studentId,
});
attendance.save()
});
req.user = user;
next();
});
app.listen(3000, () => {
});
package.json
"name": "student-attendance-system",
"version": "1.0.0",
"main": "app.js",
"scripts": {
},
"dependencies": {
"express": "^4.17.1",
"mongoose": "^5.11.15",
"cors": "^2.8.5",
"body-parser": "^1.19.0",
"jsonwebtoken": "^8.5.1"
Database Setup
mongo
use student_attendance
db.createCollection("attendances")
Development of APP for Student Achievement in Department
Abstract
This project focuses on the development of a student achievement management system for an academic
department. The system aims to track, manage, and analyze student achievements, including academic records,
extracurricular participation, awards, and certifications. The system will be implemented as a full-stack web
application, providing interfaces for students, teachers, and administrators. The app will offer functionalities such
as viewing and submitting achievements, as well as generating reports to analyze overall student performance.
This system will help administrators to better monitor and encourage student success within the department.
System Requirements
Software Requirements
Hardware Requirements
System Architecture
1. User Interface (UI): Students can log in and submit their achievements (e.g., certificates, awards). Teachers and
administrators can log in to review these submissions and generate performance reports.
2. API Layer: RESTful APIs using Express.js will be used for interactions between the front-end and back-end
systems.
3. Database: A NoSQL or relational database will store student details, achievements, and their metadata.
4. Reporting & Analytics: Data visualization libraries (such as Chart.js or D3.js) will be integrated to analyze
student achievements over time.
Code
1. Front-End (React.js)
• App.js
function App() {
axios.get('/api/achievements').then(response => {
setAchievements(response.data);
});
}, []);
return (
<div className="App">
</div>
);
AchievementForm.js
title: "",
description: "",
date: "",
category: "",
});
const handleSubmit = (e) => {
e.preventDefault();
});
};
return (
<form onSubmit={handleSubmit}>
<input
type="text"
placeholder="Achievement Title"
value={formData.title}
/>
<input
type="text"
placeholder="Description"
value={formData.description}
/>
<input
type="date"
value={formData.date}
/>
<input
type="text"
placeholder="Category"
value={formData.category}
/>
</form>
);
• AchievementList.js
return (
<div>
<h2>Achievements</h2>
<ul>
<li key={index}>
<h3>{achievement.title}</h3>
<p>{achievement.description}</p>
<small>{achievement.date}</small>
</li>
))}
</ul>
</div>
);
}
• app.js
app.use(cors());
app.use(bodyParser.json());
// MongoDB connection
mongoose.connect('mongodb://localhost:27017/student_achievement', {
useNewUrlParser: true,
useUnifiedTopology: true,
});
// Achievement Schema
title: String,
description: String,
date: Date,
category: String,
studentId: String,
});
Achievement.find()
});
newAchievement.save()
});
// Start server
app.listen(3000, () => {
});
package.json
"name": "student-achievement-system",
"version": "1.0.0",
"main": "app.js",
"scripts": {
},
"dependencies": {
"express": "^4.17.1",
"mongoose": "^5.11.15",
"cors": "^2.8.5",
"body-parser": "^1.19.0"
Database Setup
mongo
use student_achievement
db.createCollection("achievements")
Development of APP for Student Result Analysis with parents tracking system
Abstract
This project is focused on developing a full-stack application for student result analysis with a parent tracking
system. The app will allow teachers to input student results and track their academic progress over time. It will
provide detailed analytics on student performance and notify parents when their children’s grades fall below a
certain threshold. The system will facilitate improved communication between the school and parents, enabling
both parties to closely monitor and respond to the student’s academic performance.
System Requirements
Software Requirements
Hardware Requirements
System Architecture
1. User Interface (UI): Teachers can input student results, and both parents and students can log in to view the
performance reports. The system will also offer analytical graphs for easier visualization of results.
2. Parent Tracking System: The system will automatically send notifications to parents when students’ results fall
below a certain threshold. It will also allow parents to schedule meetings with teachers if needed.
3. Database: A NoSQL (MongoDB) or SQL database will store student details, results, and parent contact
information.
4. Analytics: The system will use data visualization tools to analyze and display trends in student performance,
helping teachers and parents to identify areas needing attention.
Code
1. Front-End (React.js)
• App.js
function App() {
axios.get('/api/results').then(response => {
setResults(response.data);
});
}, []);
return (
<div className="App">
</div>
);
ResultForm.js
studentName: "",
subject: "",
marks: "",
parentEmail: ""
});
e.preventDefault();
});
};
return (
<form onSubmit={handleSubmit}>
<input
type="text"
placeholder="Student Name"
value={formData.studentName}
/>
<input
type="text"
placeholder="Subject"
value={formData.subject}
/>
<input
type="number"
placeholder="Marks"
value={formData.marks}
/>
<input
type="email"
placeholder="Parent Email"
value={formData.parentEmail}
/>
</form>
);
ResultList.js
return (
<div>
<h2>Results</h2>
<ul>
<li key={index}>
<h3>{result.studentName}</h3>
</li>
))}
</ul>
</div>
);
• app.js
app.use(cors());
app.use(bodyParser.json());
// Connect to MongoDB
mongoose.connect('mongodb://localhost:27017/student_results', {
useNewUrlParser: true,
useUnifiedTopology: true
});
// Result Schema
studentName: String,
subject: String,
marks: Number,
parentEmail: String
});
service: 'gmail',
auth: {
user: 'your-email@gmail.com',
pass: 'your-password'
});
to: email,
text: `Dear Parent, Your child ${studentName} has scored ${marks} marks, which is below the
threshold.`,
});
// Route to add result and send notification if marks are below threshold
newResult.save()
.then(() => {
res.status(200).json(newResult);
})
});
// Route to get all results
Result.find()
});
app.listen(3000, () => {
});
package.json
"name": "student-result-analysis",
"version": "1.0.0",
"main": "app.js",
"scripts": {
},
"dependencies": {
"express": "^4.17.1",
"mongoose": "^5.11.15",
"nodemailer": "^6.4.6",
"body-parser": "^1.19.0",
"cors": "^2.8.5"
}
Database Setup
mongo
use student_results
db.createCollection("results")
Conclusion
The Student Result Analysis with Parent Tracking System helps improve academic performance by analyzing
results and notifying parents when students are struggling. The system creates a collaborative environment
between parents, students, and teachers, allowing for proactive interventions to improve student performance.
Viva Questions
Result: