File Sharing Web App
File Sharing Web App
File Sharing Web App
PROJECT REPORT ON
Submitted by
January 2023
CERTIFICATE OF APPROVAL
1. __________________________
2. ___________________________
3. ___________________________
(Signature of Examiners)
Place : Bhubaneswar
i
DECLARATION
I, Kishan Kumar Maharana declare that the Minor Project Work presented
through this report was carried out by me in accordance with the requirements
and in compliance of the Academic Regulations of the Biju Pattnaik University
of Technology (BPUT) for the Bachelor of Technology (B.Tech.) Degree
Programed in Information Technology and that it has not been submitted for any
other academic award. Except where indicated by specific reference in the text,
the work is solely my own work. Work done in collaboration with, or with the
assistance of, others, has been acknowledged and is indicated as such. Any
views expressed in the report are those of the author.
ii
CERTIFICATE
This is to certify that the report of the Minor Project Work on the topic entitled
“FILE SHARING WEB-APP” which is submitted by Kishan Kumar
Maharana in partial fulfilment of the requirement for the award of the of
Bachelor of Technology in Information Technology of Biju Patnaik
University of Technology, Odisha, is a bonafide record of the candidate's own
work carried out by him under my supervision.
ABSTRACT
iii
This project is concerned with file sharing systems. Very often students need
certain files or programs during their university period. To find such files or
programs is a very difficult job and it is time-consuming.
Over the last few years, there has been a drastic change in information
technology. With the presence of technology, computers, networks, and the
internet, the process of communication became very easy. The required
information, files and programs can be found, downloaded easily and
effortlessly. This includes the various ways in which files can be shared and
stored. Some websites are there which have been steadily taking over more and
more market share. Easy to use, easy to develop for, and open-source, it has
picked up a following of developers who want to create content for the masses.
Based on these facts, this project aims at creating a file exchange system for the
Faculty of Computing so that the students and the academic staff members and
also the management of the faculty can share files and useful applications on the
internet. This project will be including the different faculties of the university in
the future.
The idea of this project entails that every student, or lecturer should have an
electronic account by which they can login the internet using their usernames
and passwords. The members can download and upload files; they can search
for specific files uploaded by the other members too.
Signature
ACKNOWLEDGEMENTS
iv
I take this opportunity to express my gratitude to the people who have been
instrumental in the successful completion of this project. I am, in the first place,
obliged and grateful to my parents without whose support and care I could not
have completed this project. I express my deep gratitude towards my guide, Dr.
Pragyan Paramita Das, Assistant Professor, Dept. of CSE, Trident Academy of
Technology, Bhubaneswar, for his tremendous support, encouragement and
help.
Certificate iii
Abstract iv
Acknowledgements v
Contents vi
List Of Figures vii
1. Introduction 01-04
1.1. Problem Statement 01-01
1.2. Aim & Objective 02-02
1.3. Introduction To Web Development 02-04
05-13
2. Project Dependencies
05-05
2.1 HTML 06-06
2.2 CSS 06-07
2.3 JavaScript 08-09
2.4 TypeScript 09-10
2.5 Tailwind CSS 10-11
2.6 Node JS & NPM 11-12
2.7 React JS 13-13
2.8 Next JS
3. Design Of The Project 14-16
4.1 Use Case Diagram 14-15
4.2 Navigation Flow Diagram 16-16
4. Implementation & Coding Results 17-27
4.1. Sample Code 17-23
4.2. Coding Results 23-26
4.3. Libraries Used (JSON) 27-27
CONTENTS
vi
vii
CHAPTER 1
INTRODUCTION
Online File Sharing is practice of sharing files among different users across the
Internet. Common forms of file sharing are FTP (File Transfer Protocol) model
and P2P (Peer-to-Peer) file sharing network. Another common form of sharing
files over the Internet is for a user to upload files to a website and allow other
users to download them from the website. There are a lot of issues to consider
when developing such a website.
Users of an online file sharing website who use features like upload, download,
share, search etc would want a website that is very interactive and fast and not
annoying with a lot of post backs and flashing screens. Another issue is the
visualization of their file system where usually users have a limit to upload files.
The normal web based file folder view would be good, but if there are other
types of visualizations it would be great.
Another important issue to consider is the location where the website stores the
uploaded files. Two places where one can store the uploaded files are Database
and Server.
Project scope from user perspective, limits the range of users to only those who
have internet connection and have an account in hand.
The system can be adapted to a range of files from small to large. Project scope
includes facilities for users to upload files online and can download files, who
don’t have account can view the notifications.
The aim of this project is to promote a user-friendly, efficient, safe way for users
to upload and download files without being physically present at organization.
Web development is closely related to the job of designing the features and
functionality of websites and apps (often called “web design”), but the “web
development” term is usually reserved for the actual construction and
programming of websites and apps.
Web: It refers to websites, web pages or anything that works over the
internet.
Front-end development
Back-end development
Full-stack development
use server-side languages, including PHP, Ruby, and Python, as well as tools
including MySQL, Oracle, and Git.
CHAPTER 2
PROJECT DEPENDENCIES
The Dependencies are the package references that are used by our library
without which it cannot work and to be installed along with your library
installation automatically. While looking at peer Dependencies, npm will just
throw a warning message in case the specified packages are not found in node
modules.
2.1 HTML
2.2 CSS:
• The name cascading comes from the specified priority scheme to determine
which style rule applies if more than one rule matches a particular element. This
cascading priority scheme is predictable.
Example: selector {
Property: value;
2.3 JavaScript
• Mobile app development is also a possibility, utilizing React Native, Ionic and
various others, with Expo now allowing to target Android, iOS and the web, all
at once.
• Starting with the 6th edition (commonly known as ES2015 or ES6) in 2015, a
new edition of the standard will be released each year. The 6th edition was a
major update that brought many enhancements over ES5, including notably
template strings, expressive arrow function syntax, and cleaner syntax for
defining classes.
• But because new syntax and features are coming to JavaScript each year,
support for these changes is often incomplete in current browsers and the latest
Node.js. This doesn't mean we can't use it. Tools such as Babel offer
transpilation for most features, allowing us to write as if it's the future.
Example :
function addTwoNumbers(x, y) {
return x + y;
2.4 TypeScript
• In a large JS project, knowing what properties your own objects have, what
arguments your functions take (and what type they need to be) can become
difficult. Similarly, since there is no ability to intelligently inspect JS code,
when you include a package (like from npm), you have to keep the
documentation up so you know what methods are available and what arguments
they take. TS solves these issues.
• Types are optional and flexible (for example, you can specify an argument is a
string OR a number).
• Types allow tooling available in most code editors that improve the
development experience such as code completion and method detection, both in
your own code and in packages you use.
Example:
interface User {
name: string;
id: number;
• Tailwind CSS can be used to make websites in the fastest and the easiest way.
• It is a highly customizable, low-level CSS framework that gives you all of the
building blocks you need to build bespoke designs without any annoying
opinionated styles you have to fight to override.
• CSS is global in nature and if make changes in the file the property is changed
in all the HTML files linked to it. But with the help of Tailwind CSS we can use
utility classes and make local changes.
Hello world!
</h1>
2.6.1 NodeJS
• Node.js runs the V8 JavaScript engine, the core of Google Chrome, outside of
the browser. This allows Node.js to be very performant.
• A Node.js app runs in a single process, without creating a new thread for every
request. Node.js provides a set of asynchronous I/O primitives in its standard
library that prevent JavaScript code from blocking and generally, libraries in
Node.js are written using non-blocking paradigms, making blocking behavior
the exception rather than the norm.
• When Node.js performs an I/O operation, like reading from the network,
accessing a database or the file system, instead of blocking the thread and
wasting CPU cycles waiting, Node.js will resume the operations when the
response comes back.
10
2.6.2 NPM
2.7 ReactJS
• It is maintained by Facebook.
• React uses a declarative paradigm that makes it easier to reason about your
application and aims to be both efficient and flexible.
11
• It designs simple views for each state in your application, and React will
efficiently update and render just the right component when your data changes.
• The declarative view makes your code more predictable and easier to debug.
• Features of React.js: There are unique features are available on React because
that it is widely popular.
o Virtual DOM: Virtual DOM exists which is like a lightweight copy of the
actual DOM. So for every object that exists in the original DOM, there is an
object for that in React Virtual DOM. It is exactly the same, but it does not have
the power to directly change the layout of the document. Manipulating DOM is
slow, but manipulating Virtual DOM is fast as nothing gets drawn on the screen.
o One-way Data Binding: This feature gives you better control over your
application.
2.8 NextJS
12
• Main Features:
o Automatic Code Splitting: By this feature, every import in the code get
bundled and served with each page. It means that unnecessary code never get
loaded on the page.
CHAPTER 3
13
In systems engineering, use cases are used at a higher level than within software
engineering, often representing missions.
Use case diagrams describe what a system does from the standpoint of an
external observer
The use case diagram depicts the relationships among the actors and use cases
where actors represent the external entities of the system and use cases represent
the functional parts of the system.
In this web application, there are two external actors – Registered and
Unregistered users. The ‘include’ association tells that the use case included
includes the task described by the other use case. The different use cases present
in the system can be seen in the figure below.
.In software and systems engineering, the phrase use case is a polyseme with
two senses:
• A usage scenario for a piece of software; often used in the plural to suggest
situations where a piece of software may be useful.
14
15
Following Figure shows the control flow of the entire application. When a user
is not logged in he/she will only be able to access the Search and RSS features.
Only logged in users will be able to access all the other features like
upload/edit/deletion of files, file system visualizations, file search, group
management, and profile management etc. All the users will be able to
download the files available or visible to them i.e. for unregistered users, the
search results will only return files that are public.
CHAPTER 4
16
<head>
<meta charset="UTF-8">
</head>
<body>
<nav>
<div class="menu">
<div class="logo">
</div>
<ul>
<li><a href="#">Home</a></li>
17
<li><a href="#">About</a></li>
<li><a href="#">Contact</a></li>
<li><a href="#">Feedback</a></li>
</ul>
</div>
</nav>
<div class="img"></div>
<div class="center">
<div class="btns">
<button><a href="/login">Login</a></button>
<button><a href="/sign">Sign</a></button>
</div>
</div>
</body>
</html>
CSS
.con{
padding: 50px;
18
display: flex;
justify-content: space-evenly;
align-items: center;
height: 95vh;
#b{
color: black;
text-decoration: none;
#b:hover{
color: white;
a{
color: #00B7FF;
.box{
margin-top: 3.5rem;
display: flex;
justify-content: center;
align-items: center;
19
flex-direction: column;
height: 44vh;
width: 38%;
background-color: white;
border-radius: 20px;
.box2 img{
width: 100%;
height: 50vh;
.icon{
font-size: 100px;
margin-left: 5rem;
#btn{
background: none;
border-radius: 5px;
20
#btn:hover{
@media (max-width:768px) {
body{
flex-direction: column-reverse;
.box2{
display: none;
.box{
width:50% ;
@media (max-width:468px) {
body{
flex-direction: column-reverse;
.box2{
display: none;
.box{
21
width:100%;
height: 60vh;
margin-top: 3rem;
.input{
display: flex;
justify-content: center;
#copy{
height: 25px;
width: 100%;
outline: none;
border: none;
background: none;
border-radius: 2px;
#c{
outline: none;
border: none;
22
background: none;
#c:hover{
color: blue;
23
24
25
26
"name": "shareapp",
"version": "0.0.0",
"private": true,
"scripts": {
},
"dependencies": {
"cookie-parser": "~1.4.4",
"debug": "~2.6.9",
"ejs": "~2.6.1",
"express": "~4.16.1",
"http-errors": "~1.6.3",
"jsonwebtoken": "^8.5.1",
"mongoose": "^6.8.4",
"morgan": "~1.9.1",
"multer": "^1.4.4",
"node-localstorage": "^2.2.1",
"nodemon": "^2.0.20",
"wbm": "^1.1.16"
}}
CHAPTER 5
27
Future Scope:
Next in future, many more important features can be added to the web-app to
make it more interactive and more useful. We can add an email box where the
sender will enter the mail id of the respective recipient and the receiver may
download it directly through the link provided in mail. Further, we can also add
an rename feature to the file with which we can give name to the file according
to the user’s purpose. Also in addition to it, we are looking forward to deploy it
using cloud and adding more creative features to make the user Interface more
interactive and user friendly to use.
REFERENCES
28
1. http://www.cs.umd.edu/hcil/treemap-history/index.shtml
2. https://www.proofhub.com/articles/work/file-sharing-apps
3. https://www.codewithrandom.com/2022/08/21/file-sharing-web-
app-javascript/
4. https://www.behance.net/search/projects/?
search=file+sharing&sort=recommended&time=month
5. https://www.wrike.com/project-management-guide/faq/why-
should-i-use-file-sharing-in-project-management-software/
6. https://www.kau.edu.sa/Files/611/Files/51195_BS29en_project_
File%20Sharing%20System%20for%20the%20Students%20of
%20the%20Faculty%20of%20Computing.pdf
7. https://people.cs.ksu.edu/~rpalani/MSReport/ThirdDraft/MS
%20Report.pdf
8. https://opus.govst.edu/cgi/viewcontent.cgi?
article=1059&context=capstones
9. https://www.youtube.com/watch?v=6erEwz7aKIw
10. https://www.youtube.com/watch?v=CwnViYV4gM0
11. https://www.youtube.com/watch?v=_xKCi5OI_Mg&t=0s
29