0% found this document useful (0 votes)
1K views98 pages

Project Portfolio Documentation

This document is a project proposal for a project portfolio website. It will allow users to create an account, upload their projects, and have a unique profile URL to showcase their work. The project will be developed using HTML, CSS, JavaScript for the front-end and PHP for the back-end, with a MySQL database. It aims to help users showcase projects for interviews or as an online resume. Limitations include the inability to automatically detect and remove illegal projects.

Uploaded by

sonik sarungale
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
1K views98 pages

Project Portfolio Documentation

This document is a project proposal for a project portfolio website. It will allow users to create an account, upload their projects, and have a unique profile URL to showcase their work. The project will be developed using HTML, CSS, JavaScript for the front-end and PHP for the back-end, with a MySQL database. It aims to help users showcase projects for interviews or as an online resume. Limitations include the inability to automatically detect and remove illegal projects.

Uploaded by

sonik sarungale
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 98

PROJECT PORTFOLIO

A Project Report
Submitted in partial fulfillment of the
Requirements for the award of the Degree of

BACHELOR OF SCIENCE (INFORMATION TECHNOLOGY)

By

SONIK SANDIP SARANGALE


199657

Under the esteemed guidance of


Dr. Hiren Dand
Coordinator, Department of Information Technology

DEPARTMENT OF INFORMATION TECHNOLOGY


Parle Tilak Vidyalaya Association’s
MULUND COLLEGE OF COMMERCE
(Affiliated to University of Mumbai)
NAAC Re-Accredited A Grade – III Cycle
MULUND WEST, MUMBAI 400080
MAHARASHTRA, INDIA
2019 – 20
PROJECT PROPOSAL

1. PRN No : 2017016400434307
2. Roll No : 199657
3. Name of the Student : Sonik Sandip Sarangale
4. Title of the Project : Project Portfolio
5. Name of the Guide : Dr. Hiren Dand
6. Teaching Experience of Guide : 28 years
7. Is this your first Submission : Yes

Signature of the Student Signature of the Guide

Date: ……………………. Date: …………………….

Signature of the Coordinator

Date: …………………

DECLARATION
I, hereby declare that the project entitled, “Project Portfolio” done at
Mulund College of Commerce, Mulund West, Mumbai 400-080, has
not been in any case duplicated to submit to any other university for the
award of any degree. To the best of my knowledge other than me, no
one has submitted to any other university.
The project is done in partial fulfillment of the requirements for the
award of degree of BACHELOR OF SCIENCE (INFORMATION
TECHNOLOGY) to be submitted as final semester project as part of
our curriculum.

Sonik Sandip Sarangale


ACKNOWLEDGEMENT

The project presented, as part of the curriculum, was the first experience of this
kind for me. I had considered this project not only as a program of studies to be
completed, but as a goal to learn, study, develop and test commercial software
technologies.
I am pleased to be able to say that, in an acceptable manner, I have
achieved my goals and goals to make this project a result. I would like to thank and
thank the support of some who have helped physically, mentally and intellectually
during this project.
Foremost regards to my guide and Co-ordinator Prof, Dr. Hiren Dand and
Principal, Dr. Sonali Pednekar who made available the facilities required for the
project work.
I also want to mention the tacit support of my parents who, as always,
helped me as much as possible to make my job a success.
The contribution made by my friends and mates, directly or indirectly was
indispensable, and will always be remembered.
This opportunity has given me a valuable experience about software
development.

Sonik Sandip Sarangale


ABSTRACT

Project Portfolio
Objectives of the Project:

1. Create online portfolio.


2. Upload your project over internet without worrying about domain and hosting.
3. Showcase your projects to other person.
4. Use as a resume for the interview.
5. Customize online project resume.

Project Description:

By creating account you can upload your projects. All uploaded projects will be
visible on your profile dashboard. Every user will get his unique profile URL (eg:
projectportfolio.cf/theirusername/ ) it can be used to show your projects to others. Customize
your profile layout from given options.

Languages:

Front-end: HTML, CSS, JavaScript

Back-end: PHP

Database: MYSQL

Software Requirements:

 WAMP or XAMPP
 Text Editor
 Browser
Limitations:

Automatically disallowing illegal projects is not possible as machine can be tricked by


the user. Deleting illegal projects has to be done manually by the admin.
Table of Contents
INTRODUCTION.....................................................................................................................................4
1.1 Background.......................................................................................................................................4
1.2 Objectives..........................................................................................................................................5
1.3 Purpose, Scope and Applicability.......................................................................................................6
1.3.1 Purpose.......................................................................................................................................6
1.3.2 Scope..........................................................................................................................................6
1.3.3 Applicability................................................................................................................................7
1.4 Achievements....................................................................................................................................8
1.5 Organization Report..........................................................................................................................8
SURVEY OF TECHNOLOGIES...........................................................................................................11
2.1 Technologies available for development.........................................................................................11
2.2 Tools and Techniques used..............................................................................................................11
2.3 Programming Languages, framework and library used for development........................................13
2.4 Major Website Programming Languages and Framework Available For Development...................16
2.5 Similar Technology/Application.......................................................................................................17
2.6 Testing Technology..........................................................................................................................19
REQUIREMENTS AND ANALYSIS....................................................................................................20
3.1 Problem Definition...........................................................................................................................20
3.2 Requirements Specification.............................................................................................................21
3.2.1 User Requirements...................................................................................................................21
3.2.2 Functional Requirements..........................................................................................................22
3.2.3 Non-Functional Requirements..................................................................................................22
3.2.4 Problems in the Existing Application.........................................................................................23
3.3 Planning and Scheduling..................................................................................................................24
3.3.1 Project Plan...............................................................................................................................24
3.4 Software and Hardware Requirements...........................................................................................25
3.5 Preliminary Product Description......................................................................................................26
3.6 Conceptual models..........................................................................................................................26
SYSTEM DESIGN..................................................................................................................................34

1
4.1 Basic Modules..................................................................................................................................34
4.2 Data Design......................................................................................................................................36
4.2.1 Schema Design..........................................................................................................................36
4.2.2 Data Integrity and Constraints..................................................................................................37
4.3 Procedural Design............................................................................................................................41
4.3.1 Logic Diagrams..........................................................................................................................41
4.3.2 Algorithm Design......................................................................................................................45
4.4 User Interface Design......................................................................................................................46
4.5 Security issues.................................................................................................................................48
4.6 Test cases.........................................................................................................................................49
IMPLEMENTATION AND TESTING.................................................................................................51
5.1 Implementation approaches:..........................................................................................................51
5.2 Coding Details and Efficiency:..........................................................................................................51
5.3 Testing Approach:............................................................................................................................80
5.3.1:-Unit Testing.............................................................................................................................81
5.3.2:- Integration Testing.................................................................................................................81
5.4:-Modification and Improvements....................................................................................................84
5.5:- Test Cases......................................................................................................................................85
RESULTS AND DISCUSSION..............................................................................................................85
6.1 Test reports:....................................................................................................................................86
6.2 User Documentation........................................................................................................................86
CONCLUSIONS......................................................................................................................................90
7.1.1 Significance of the System............................................................................................................90
7.2 Limitations of the system.................................................................................................................90
7.3 Future scope of the project.............................................................................................................90

2
List of Figures

Figure 1 Github..........................................................................................................................................17
Figure 2 Gantt chart...................................................................................................................................25
Figure 3 E-R NOTATION.............................................................................................................................28
Figure 4 Login and registration..................................................................................................................29
Figure 5 Upload new project activity.........................................................................................................30
Figure 6 Search User / Projects Activity.....................................................................................................31
Figure 7 Layout activity..............................................................................................................................32
Figure 8 Profile activity..............................................................................................................................33
Figure 9 Main DF.......................................................................................................................................34
Figure 10 Schema Design...........................................................................................................................37
Figure 11 Context Diagram........................................................................................................................44
Figure 12 DFD diagram..............................................................................................................................45
Figure 13 Profile Dashboard page UI........................................................................................................47
Figure 14 Landing page UI.........................................................................................................................47
Figure 15 Search Page UI...........................................................................................................................48
Figure 16 Setting Page UI...........................................................................................................................48

3
List of Tables
Table 1 Project Plan...................................................................................................................................25
Table 2 sign in & sign up............................................................................................................................38
Table 3 User verification............................................................................................................................39
Table 4 User skills......................................................................................................................................39
Table 5 Projects.........................................................................................................................................39
Table 6 Skills used for project....................................................................................................................40
Table 7 Project logs...................................................................................................................................40
Table 8 Project bookmarks........................................................................................................................41
Table 9 Project likes...................................................................................................................................41
Table 10 DFD notation...............................................................................................................................43

Chapter 1.

INTRODUCTION
1.1 Background

Making portfolio is one of the best way to present your skills and talent to other people.
As a developer it is an essential thing to show case your work.

To showcase your projects you can use web hosting to host your projects. The charges of
hosting a project are pretty high and also time consuming, so the developer tend to save their
project in their machine itself. If your project is just lying on your hard disk and you can’t show
to others so probably it becomes useless. This website will provide a platform where a developer
can upload their work such as projects and designs and can maintain them collectively and can
view projects whenever needed.

4
The uploaded projects can also be used as resume in the interview and will give upper
hand over other candidate. Each user will be provided a unique URL through which their profile
can be viewed by others and their projects will be displayed.

You can change privacy setting of the project to public or only me. Private projects can
be only viewed by user who have uploaded that project. User can allow other user the permission
for other user to download the source code.

Users can have different layout for their profile which will make their profile unique from
others. The website will have set of pre define layouts or else the user can also use customize
layout as per their requirements.

1.2 Objectives
Showing your projects online can create a good impression in interview, as an
interviewer can see your skills and the work you have done. It allows user to gain an advantage
in interview.

This system will also allow the users to share their work and showcase their work to
others and also to create an online project resume in few clicks. Uploading projects to internet in
few clicks not only saves and reduce our efforts, but also allow the user to gain easy access to
project records. We try to create an application that can help developers to upload their projects
over internet and create a project portfolio.

The main aim to develop this application is to minimize the required time and cost. This
application is much more interactive as compared to other methods like github as github will
show the code but this application will run the code on server and show the output. Uploading
projects in few clicks is the main feature of this application which drive it to the different level.

5
1.3 Purpose, Scope and Applicability

1.3.1 Purpose

In the existing system user have to upload web based project user have to buy domain, web
hosting service and then link domain and hosting, after that they can upload the project to their
web host which is not at all feasible and also it’s time consuming task to link web host and
domain some time’s it may take up to 24 hour’s. Uploading all of your projects may take much
more time and cost will be high. To show all our projects to other, we have to show every link
individually. The new system should overcome the drawbacks such as:

 This will reduce the effort to upload every individual project.


 Cost minimization.
 Add or remove projects dynamically.
 There are less efforts required.
 This system will automatically manage all your projects unique URL to view them.
 This system support running PHP project on the server and show that project.
 The project data will remain in the database until the user remove it.
 Also this application is more secure.
 It the same project is uploaded twice then the application will prompt a message that this
project is already uploaded you want to delete previous.

1.3.2 Scope

This application is useful when user have to show his web based projects and show all of
them in interview or other people. This will decrease his/her effort. And also this idea will cope
up with the other applications and we can enhance the performance of the system in the future by
allowing other various types of projects.

6
1.3.3 Applicability

 When the user opens the website for the first time he have to register into the website.
 Every user will get his unique profile URL. By going on this unique profile URL other
people can see all the projects uploaded by that user.
 The next screen will appear where he have to upload his project in a zip file by clicking
on browse button or by dragging and dropping project on to the website.
 Then he have to hit a “Upload” button.
 Here user is redirected his dashboard where he can manage uploaded projects, on
dashboard page he can see different section.
1. Header
 Here user get links, using this links he can navigate thought website.
 In header on left side there will be logo and on right side menu list to
navigate.
 After menu there will be logout button.
2. Uploaded projects
 Here user can view their all uploaded projects, all projects will be in a list
format.
 On right side of the project title there will be edit and delete options.
 When we click on edit button user will redirect to the edit page of that
project from where he can edit that particular project.
 When we click on delete button beside edit button, a prompt will appear
that will ask are you confirm you want to delete this project. If user click
yes that particular project will get deleted.
 Bellow project title there will be a get link button. By clicking get link
button you will get a unique link of that particular project. That unique
link can be used to share the project to others.
3. Skills
 Here a dropdown will be there named skills.

7
 In this dropdown there will be different skills from which you can select
multiple.
 This skills will be visible when other person open your profile to see your
projects.

1.4 Achievements
Achievements on this application are as follows:

 This web application is user-friendly so this website can be viewed in mobile also.
 The application will reduce cost of uploading a web project over the d internet.
 Dynamic structure.
 Incorporate a huge amount of data.
 Lesser the data redundancy and data in-consistency.
 It’s more reliable and improve productivity.
 Saves time but making process of uploading project in few clicks.
 User do not have to worry about domain and hosting.
 User can manage their profile layout in single click.
 All projects can be managed in single place.
 In few clicks a project can be uploaded, edited and deleted.

1.5 Organization Report

Chapter 1: Introduction

The outline has several parts as given below:

Background: An explanation of the development context and its association with the work
already done in the field.

Objectives: Concise declaration of the goals and aims of the plan.

8
Purpose: Project theme description that answers questions about why this project is
implemented.

Scope: A ephemeral summary of the methodology, hypotheses and limits.

Applicability: The student must describe the direct and indirect applications of his work.

Achievements: Explain what knowledge the student achieved after the accomplishment of the
work.

Chapter 2: Survey of Technologies:

The Technology Survey demonstrates the acquaintance and understanding of available


technology associated to the project. Provide facts of all related technologies desired to
accomplish the project goal. Describe the technologies obtainable in the chosen area and present
a reasonable study of all available technologies and which is the best of them and why choose
the technology.

Chapter 3: Requirements and Analysis:

This chapter defines what problem you are experiencing and how your project will overcome the
problem that is occurring in society. Listing the necessities of the project. Scheduling and
planning for the project so that project should complete on time and doesn't go in critical path.
Give the list of software along with hardware components require by project and explain key
points about it.

Chapter 4: System Design:

9
This chapter describes features and procedures researched in aspects, consisting of screen
layouts, business rules, process diagrams, pseudo-code, and other documentation, which is
appropriate for the project. It consists of designing a system, i.e. designing schemes, designing
algorithms and designing basic modules of a system.

Chapter 5: Implementation and Testing

This chapter contains the details of various modules, codes and various libraries I have imported
successfully to implement the project. It also contains the details of process or work I have done
to make code efficient.

This chapter also contains the details of various testing approach I have used.

Chapter 6: Results and Discussion

This Chapter shows the details of the test results after testing the software and generate report on
the basis of the Test results.

This chapter will also show the behaviour of the Website when inputs are different from the one
written in the Test Cases.

This Chapter also contains details of working of the website and the different functions in the
project. It should also contain User Manual, Which provides the understanding of the working of
the project to the user.

Chapter 7: Conclusion

This chapter summaries about all the important point of all other chapters.

It also shows the limitation in the proposed system and details about future plan to explore the
scope of the project.

10
Chapter 2.

SURVEY OF TECHNOLOGIES

2.1 Technologies available for development


Website development sector is grown in recent years and it is in boom in the market.
There are several technologies for web development widely used. In India, Web Sites can have
numerous capacities and can be utilized in different style. Website development tools and
technologies refer to a variety of tools and programming languages used to perform the various
activities involved in developing Web applications.

2.2 Tools and Techniques used

1. Sublime Text
 Sublime Text is a light weight cross-platform source code editor. It supports many
programming languages and markup languages, functions can be added by the
users with a plugin. Sublime Text is available for Windows, Mac and Linux.

2. Photoshop
 Photoshop is use to design some component of the application which will help to
give nice look and feel.

11
3. Apache
 Apache is a web server that powers around 46% of web sites round the internet. It
is maintained and developed by Apache Software Foundation.
 Apache is a web server but it is not a physical server, it is a software that runs on
a server. Its job is to establish a connection between a server and browser like
Firefox, Google Chrome, Safari, etc. While transferring files back and forth
between the client and server. Apache is a cross-platform software, it works on
both UNIX & Window.

4. WAMP
 WAMP Server is a software stack for the Windows operating system, created by
Romain Bourdon and has Apache web server, Open SSL for SSL support,
MySQL database and PHP programming language.
 Full form of WAMP is
o W – Window
o A – Apache
o M – MYSQL
o P - PHP

5. Browser
 A Browser is alternatively referred as a web browser or an Internet browser. It is a
software used for exploring and presenting the contents on the World Wide Web.
There are many browsers e.g. Google Chrome, Safari, Mozilla Firefox, Opera etc.
To see the actual output of the website the browsers are used. The languages like
HTML, CSS and JS are compiled by the browser.

2.3 Programming Languages, framework and library used for

development

12
1. HTML5:
 Hypertext Markup Language is widely known as HTML.
 HTML is used to make structure of a webpage.
 HTML define structure and layout of webpage by using tags and attributes.
 It is widely used language on web for website development.
 Currently HTML5 is been mostly used in market because of its new features and
wide support of tags.
 Many old tags like blink tag and marquee tag is been removed in HTML5.

2. CSS3:
 Cascading Style Sheet (CSS) is a style sheet language used to design the
webpage.
 The CSS is used along with HTML.
 HTML describes the content of the website, while CSS tells how the content
should be placed.
 CSS provide an attractive look to a webpage.
 The newer version of CSS is CSS3.
 It support responsiveness to the webpage and other features like:
o CSS Animations and Transitions
o Calculating Values With calc()
o Advanced Selectors
o Generated Content and Counters
o Gradients
o Webfonts
o Box Sizing
o Border Images
o Media Queries

13
o Multiple Backgrounds
o CSS Columns
o CSS 3D Transforms

3. JavaScript:
 JavaScript is client-side scripting language.
 JavaScript use to make interactive web pages and it is an important part of web
development.
 JavaScript is not a programming language, it is a scripting language.
 It is developed by Brendan Eich. at Netscape, for the Netscape Navigator Web
browser.
 Currently it is one the most popular language as it can be not be used for website
frontend but also it can be used for website backend using node JS, Native
android app using React Native, desktop GUI applications using electron JS,
Machine learning using Tensor flow JS.

4. PHP:
 PHP is a server side scripting language designed for web development.
 Originally PHP stands for Personal Home Page, but it now PHP stands for PHP:
Hypertext Preprocessor.
 PHP code can be executed, embedded in HTML code or by making a separate
‘.php’ file.
 PHP code is run on the server and its output is been send to web browser.
 Browser never interact with PHP code, after executing php on server only output
is given to browser to run.
 PHP is safe because user can’t see PHP code which is been executed on the
server.

14
 But also there are many security issue with PHP because of bad code written by
web developers.
 Despite being old language, PHP is still in top 10 and on of the most demanded
language because 78.9% of websites on the internet still use PHP for their website
backend.

5. JQuery:
 JQuery is a JavaScript library designed to simplify work.
 JQuery can do things in 1 line of code for which vanilla java script require 3-4
lines.
 In JQuery various things link DOM manipulation, CSS animation, event handling
and Ajax can be done easily.
 In 10 million most popular websites 73% website use JQuery.
 JQuery is easy to learn and easy and its syntax is easy to adapt.

6. MYSQL:
 MySQL is a open-source relational database management system.
 MYSQL is used to store data.
 MYSQL uses table’s to store data.
 MYSQL is one of the most used database for storing data from websites.
 MYSQL is owned and maintained by Oracle Corporation.

15
2.4 Major Website Programming Languages and Framework Available

For Development

o Laravel
Laravel is a PHP based framework. Laravel preferred and acknowledged by many
web developers because of its use of MVC concept, neat & clear code and proper folder /
file structures.
o Angular & Angular JS
Angular a JavaScript framework created and backed by Google. Angular is a
complete framework based on type script (superset of ES6) and angular JS is a library
based on java script.
o React JS
React JS is a JavaScript library created and backed by Facebook. Currently many
website including Facebook use react JS for interacting with user.
o Vue JS
Vue JS is JavaScript framework. It is like a combination of angular and react JS.
It uses some features of react JS and some features of angular.
o Django
Django is a python based framework. It allow user to write code in python for
website backend.
o Ruby on Rail

Ruby on Rail is a framework written in ruby. Rail is a model view controller


(MVC) framework.

2.5 Similar Technology/Application

Github:

16
Figure 1 Github

Github was made to manage projects versions, but currently it is mostly used to share
code and showcase our projects. Github is widely popular in open source community. Projects on
github can be uploaded by drag & drop and can also be uploaded by command line interface
(CLI). On github after creating account user can upload his project by using website GUI or by
using CLI. After uploading that project is visible on user profile.

By visiting user profile you can see all his uploaded project source code and can also give
start if we liked that project. But in github you will see source code, to see output you have to
download the sour code and open in on your system.

History:

February 2008 : Started company github


February 24, 2009 : 46,000 public repositories
July 5, 2009 : Over 100,000 users
July 27, 2009 : 90,000 unique public repositories
July 25, 2010 : 1 million repositories

17
April 20, 2011 : 2 million repositories
January to May 2011 : Surpassed Source Forge and Google Code in total number of
commits
June 2, 2013 : 3 million users and more than 5 million repositories
December 23, 2013 : 10 million repositories
July 29, 2015 : Raised $250 million in funding
2016 : Ranked No. 14 on the Forbes.
February 28, 2018 : Victim of 2nd largest DDoS attack in history
June 4, 2018 : Microsoft acquire GitHub for $7.5 billion
June 19, 2018 : GitHub expanded its GitHub Education

ADDITIONAL INFORMATION

Developed By : Chris Wanstrath


P. J. Hyett
Tom Preston-Werner
Scott Chacon

Built using : Ruby on Rails


Located in : San Francisco

2.6 Testing Technology

Black box testing approach is used to test this website by initially examining the requirements
and specifications and choosing valid inputs and determining expected outputs of selected inputs.
White box testing approach is also used to test this website by understanding the functionality of
the system through its source code and creating the tests cases and executing them.

18
Chapter 3.

REQUIREMENTS AND ANALYSIS

3.1 Problem Definition


Identification of the problem is one of the obvious tasks to be performed before developing a
project. A clear understanding of the problem will help build a better system and reduce the risk
of project failure.

This phase consists of two main tasks:


a) The first is to review the needs that originally initiated the project.

b) The second is to identify at an abstract level the expected capabilities of the new system.
It helps in understanding the system properly so that all the problems are identified
correctly. It also involves considering all the alternatives that exist to achieve the
objectives with respect to modifying the system, even all the various ways to implement
the alternatives.
After we thoroughly understood the existing system, it was concluded that all of the work was
done manually. All kinds of calculations and planning were done using the human brain instead
of taking advantage of the modern Information Technology

The following limitations are there in the existing system:

1. It take the more time to upload a project.


2. User have to manually manage all domains and hosting.

19
3. Cannot see output live server.
4. Increased time.
5. Domain and hosting cost is more.
6. There is lots of steps to be done.
7. To show their projects they have to setup every single project by following many steps
which take lot of time.
8. User have to pay more for private projects which they don’t want to share with public.

The purposed System will overcome all problems mentioned above:-

• Uploading project in few clicks.

• Less time needed to upload project.

• Access of all project in a single place.

• Reducing cost.

• Free private projects.

• Can view all their projects by visiting on a single link.

• Customize profile for each user.

• Don’t have to deal with domain and hosting.

3.2 Requirements Specification


3.2.1 User Requirements
1. Drag & drop based uploading system provide easy and fast way of uploading and
handling project.
2. The user registers with the login credentials.

3. The registration will be done by accepting first name, password, mobile number and
email-id.

4. Once the user has registered, the system provides a login page where the client has to
login with email and password which has been previously registered.

20
5. The system defines a standard format for setting the email id i.e. “…[email protected]/com” and
mobile number should be not more or less than 10 digits.

6. If the in future user forget his password and he want to login into the system then for that
there is forgot password option is available.

7. Once the user enter into the dashboard he see the 4 things where he can upload new
project, sorting dropdown, layout and the user profile.

8. If he select the upload project option, system will ask user to browse or drag & drop the
project.

9. Based on project file name user will get that project unique URL and project is ready to
be shown, so only thing which user have to do is to just browse project file.

3.2.2 Functional Requirements


Functional desires are the services the system must supply, but the system must react to specific
inputs and therefore the manner the system must behave notably state of affairs and will in
addition expressly state what the system should not do.
• System will allow user to share project whenever he want.
• System will automatically assign unique profile and project URL to share.
• System will raise user once whether or not or not he want continue upgrading previous project
or he want to upload new one.
• System will allow user to send mail to reset password.
• System will allow user to travel through his profile.
• System will allow dynamic and customize profile layout.
• System offers the logout selection in addition.

3.2.3 Non-Functional Requirements


Availability: Here we are using the MYSQL as our default database so there is less chance of
non-availability of it while retrieving the data.

21
Reliability: Website can work robustly while no loss of any information even within the part of
various failures. All the personal details of the user will be stored in “Encrypted form” in order to
secure the data. The system will be developed in a manner that ensures there is no malicious
code or bugs.

Security: All the user details are secured because these details are stored in a password protected
secure database, so there is less chance of data loss or data corruption

Maintainability: System will maintain the following data:

i. Name
ii. Username
iii. Email-id
iv. Password
v. Project name

Usability: The system is easy to handle. The user of the system can easily go through the website
without any complications.

3.2.4 Problems in the Existing Application


1. Github

Uploading your projects on github may be easy for some people by many people struggle
while uploading projects on github. Github is widely used and very popular among developers.
But still there are some limitation and problems.

To check output of project uploaded on github we have to download that project source
code and run on our system. Usually people do not download others unreliable code and run on
their personal system.

A single user can have multiple projects uploaded on their profile. Download each and
every project and run on our own system is time consuming and risky.

22
3.3 Planning and Scheduling
3.3.1 Project Plan
Gantt Charts (G) is a helpful tools for analyzing and designing complicated comes.

They assist in designing out the tasks that require to be completed.

Give a basis for planning once these tasks are going to be administrated.

Allow to set up the allocation of resources required to complete the project, and facilitate your to
figure out the essential path for a project wherever you need to complete it by a specific date

When a project is beneath manner, Gantt Charts facilitate to observe whether or not the project is
on schedule. The most objective of a Gantt chart is to assess however long a project ought to take
and to ascertain the order within which tasks have to be administrated by the ending of the
project.

Task Name Duration Start Finish Predecessors

Project topic deciding 3 days 02/07/19 05/07/19

Collecting data 8 days 09/07/19 17/07/19 1

Problem definition 19 days 23/07/19 11/08/19 2

System design 13 days 20/08/19 02/09/19 3

Problem evaluation 4 days 17/09/19 21/09/19 4

Define function and


11 days 24/09/19 05/10/19 5
behavior

Requirement analysis 17 days 08/10/19 25/10/19 6

Implementation and
23 days 10/12/19 02/01/20 7
coding
Unit testing 4 days 02/01/20 06/01/20 8

23
Integration and
7 days 07/01/2020 14/01/20 9
validation
System Testing 6 days 14/01/2020 20/01/20 10

Table 1 Project Plan

7/ 7/2 8/1 8/3 9/2 10/1... 10/3... 11/1... 12/ 12/2... 1/1

Project topic dec...


Collecting...
Problem defin...
System d...
Problem evalu...
Define function and be...
Requirement an...
Implementation and ...
Unit te...
Integration and vali...
System T...

Figure 2 Gantt chart

3.4 Software and Hardware Requirements

1. HARDWARE REQUIREMENTS:
Processor: Intel(R) Core(TM) i5-5200u CPU@ 1,6 GHz.
Memory: 2GB RAM for faster speed we can use 4GB RAM.
System Type: 64bit Operating System.

2. SOFTWARE REQUIREMENTS:

24
FRONT END: HTML5, CSS3, JavaScript, JQuery.
BACK END: PHP7.
DATABASE: MYSQL.

3.5 Preliminary Product Description


Uploading our project in few clicks instead of dealing with domain and hosting is a step towards
sustainable development. “Project portfolio” is a Web Application which is designed for the web
developers. The main feature of this application is showing and running your project on a live
server, which makes it more interactive. In this, user have to upload project and copy the unique
URL this will save a time of the user.

3.6 Conceptual models


The student should perceive the domain of the matter and manufacture a model of the system
that describes the operations which will be performed within the system and also the allowable
sequences of such operations. Abstract models could comprehend complete data flowcharts, ER
diagrams, object familiarized diagrams, system flowcharts, etc.

Entity relationship diagram and there description:-

 In programming building an ER demonstrate is regularly framed to speak to


things that a business needs to recollect with the end goal to perform business
forms. Therefore, the ER show turns into a theoretical information display that
characterizes an information or data structure which can be executed in a
database, normally a social database.

 Entity– relationship displaying was produced for database plan by Subside Chen
and distributed in a 1976 paper. In any case, variations of the thought existed
already. Some ER models demonstrate super and subtype elements associated by
speculation specialization connections, and an ER model can be utilized likewise
in the determination of space particular ontologies.

 Notations:

25
Figure 3 E-R NOTATION

1. Flow of the login activity:-

26
Figure 4 Login and registration

In the login activity 1st there's a start node once the user first login into the system. The
system can check whether or not the user is registered or not if the user is registered it'll
transfer it to the subsequent page or we will say the activity.
If the user isn't registered with the system then another page can open wherever he need
to register his details. at the moment he can get transfer back to the login page were he
need to re-login within the system and also the system can once more check whether or

27
not the user is registered or not then he can get transfer to the new page or next page
that’s our main activity page were all the most options of the Website get visible to the
user

2. Upload new project activity

Figure 5 Upload new project activity

The upload new project activity consist of two section. When the user click on the
Upload project icon the user will get transferred to the new activity or page where he have to
browse the file or drag & drop the file which is to be uploaded.

As soon as the user hits the next button the next activity will open were the system will
ask project name for the file which is uploaded in previous activity. So there user have to type
the name of the project. Once user gets done with this he will hit the upload button so the data is
get stored in the database and project file is uploaded on to the server.

This data is retrieved in the dashboard and user profile where the user can edit and delete
this data of the project.

28
3. Search User / Projects Activity

Figure 6 Search User / Projects Activity

On the top of dashboard inside header there will be a search button. When you
click that search button in header, user will be redirected to a search page. Here on search
page user can search any other user profile or any other project.

Usually user profiles from the search results will be displayed on left side of the
page and projects from the search results will be displayed on the right side of the page.
On search page left side will be for user profiles and right side will be for projects found
while search.

In user section user profiles will be displayed matching search query. User can
click on any username and that particular user profile will be opened with list of all his
project on his profile.

In project section project will be displayed matching search query. User can click
on any project to open that particular project. Bellow every project name there will be
username and link of user profile who made that project.

29
4. Layout activity

Figure 7 Layout activity

If the user hits the layout icon on the home page he will be transferred to the new page or
activity were he have to select a layout. On layout page various layout will be available. User
can also search layout by layout name if exist.

User can also make customize layout. By clicking on customize layout button on layout
page user will be redirected on new page where he can create his own layout.

Various option like color scheme, font size, font style will be available in customize
layout page. Using this options user can create his own layout. Note that the layout which
you select is also going to be visible to your profile visitors, when they visit your profile to
see your uploaded projects.

30
5. Profile activity

Figure 8 Profile activity

From this activity user can view his details or information like his Name and
Email. Also user can change his password, by clicking on change password button an
input field will appear in that you can enter your new password.
User can also change his Full name but he cannot change his email or username
as it is fixed.
At the bottom of profile there will be an option in red color named delete account.
It will be in red color to indicate danger. By clicking on delete account button a prompt
will appear to re-enter account password. After entering correct password the account
will be deleted permanently.

31
Normalized system diagram

Figure 9 Main DF

32
Chapter 4.

SYSTEM DESIGN

4.1 Basic Modules


Registration Module:

This module will allow the User to Register. User first have to register to use our Services.

After clicking on “Submit” the system will verify the Details.

User Login Module:

If you are a user, you have to login first to perform any task.

If user enters invalid username or password, the system will show invalid prompt window.

Home Page:

After Successful login user will be redirected to the Home page.

Then user gets the some options which are upload project, Search user or projects, Layout, User
profile.

From here user can go to the subpages.

Upload project Module:

This section will help the user to new projects in the database.

Here user have to browse file which he want to upload.

Search Module:

In this module the user can search other users or can search projects. Depend on user search the
results will be shown.

33
Layout module:

Here user gets the option to change his profile layout. User can either select layout from existing
list or can create his own customize layout.

Profile Module:

In this module, user can view Profile.

In this module, user can update Profile.

In this module, user can view all his activity he done.

Logout Module:

After clicking on “LOGOUT”, logout prompt will be displayed

34
4.2 Data Design
4.2.1 Schema Design

Figure 10 Schema Design

35
4.2.2 Data Integrity and Constraints
User table for sign in & sign up

Sr. No. Fields Data Type Allow Null Keys


1. user_id Int(10) No Primary Key
2. first_name Varchar(50) Yes
3. last_name Numeric(50) Yes
4. username Phone Number(10) Yes
5. email Varchar(50) Yes
6. website Varchar(255) Yes
7. company Varchar(50) Yes
8. location Varchar(50) Yes
9. phone_no Varchar(15) Yes
10. profile_picture Varchar(255) Yes
11. Password Varchar(100) Yes
12. salt Varchar(10) Yes
13. time_zone Varchar(50) Yes
14. verification_id Int(10) Yes Foreign Key
15. account_level Varchar(50) Yes
16. private Tiny Int(1) Yes

Table 2 sign in & sign up

User verification table

Sr. No. Fields Data Fields Allow Null Key


1. verification_id Int(10) No Primary Key
2. Code Varchar(50) Yes
3. verified TinyInt(1) Yes
4. verified_no TIMESTAMP Yes

36
Table 3 User verification

User skills table

Sr. No. Fields Data Fields Allow Null Key


1. user_skill_id Int(10) No Primary Key
2. user_id Varchar(50) Yes Foreign Key
3. skill type Varchar(50) Yes
4. skill_name TinyInt(1) Yes

Table 4 User skills

Projects table

Sr. No. Fields Data Fields Allow Null Key


1. project_id Int(10) No Primary Key
2. user_id Int(10) Yes Foreign Key
3. title Varchar(100) Yes
4. project_type Varchar(50) Yes
5. description Varchar(255) Yes
6. private TinyInt(1) Yes
7. folder_name Varchar(50) Yes

Table 5 Projects

Skills used for project table

Sr. No. Fields Data Fields Allow Null Key


1. skill_used_id Int(10) No Primary Key
2. project_id Int(10) Yes Foreign Key
3. skill_name Varchar(50) Yes

Table 6 Skills used for project

37
Project logs table

Sr. No. Fields Data Fields Allow Null Key


1. project_log_id Int(10) No Primary Key
2. project_id Int(10) Yes Foreign Key
3. log_type Varchar(50) Yes
4. log Varchar(200) Yes

Table 7 Project logs

Project bookmarks table

Sr. No. Fields Data Fields Allow Null Key


1. project_bookmark_id Int(10) No Primary Key
2. project_id Int(10) Yes Foreign Key
3. user_id Int(10) Yes Foreign Key

Table 8 Project bookmarks

Project likes table

Sr. No. Fields Data Fields Allow Null Key


1. project_like_id Int(10) No Primary Key

38
2. project_id Int(10) Yes Foreign Key
3. user_id Int(10) Yes Foreign Key

Table 9 Project likes

4.3 Procedural Design

4.3.1 Logic Diagrams

Data Flow Diagram (DFD):


The DFD take as associate degree input method output read from the system that's
knowledge objects flow within the code and square measure reworked by process component
and knowledge objects from flow of the code.

Data objects displayed by tagged arrows or transformation square measure outlined by circles
known as bubble and DFD is given as hierarchy fashion that's the primary knowledge flow
model outlined the system as an entire ensuing DFR routine context diagram provides increasing
details with every consecutive level.

Rules of DFD diagram:

39
1. Maintain scope of the system suggests that of context diagram.

2. Maintain DFD so main consecutive sequence of the actions.

3. Scan from left to right and prime to bottom.

4. Acknowledge all inputs or outputs.

5. Acknowledge and Label from every method internal to the system together with conic
section reasonably circle.

• Notations

Name Symbol Description

Process A method transforms incoming


information flow into outgoing
information flow.
Data store Notation
Data stores are same as the
repositories of data in various
systems.

Dataflow Notations
Data flows are pipelines through
that packets of data flow. Label
arrows with the context of the
information that moves along with
it.

40
External Entity Notations
External entities square measure
objects outside the system,
with that the system communicates.

Table 10 DFD notation

1. Level 0/context diagram: -


Level zero DFD may be a basic summary of the entire system or method being analyzed or
modelled in Reallocation of Services Project. It’s designed to be associate at-a-glance read,
showing the system as one high-level method, of however the User and Admin will each
move with the System.

41
Figure 11 Context Diagram

42
Figure 12 DFD diagram

A data flowchart (DFD) may be a graphical illustration of the "flow" of knowledge


through AN data system, modelling its method aspects. A DFD is commonly used as a primary
step to make a summary of the system while not going into deep within the structure. DFDs may
be used for the mental image of knowledge process (structured design).

The on top of knowledge flowchart provides the data regarding the every activity is
reticulated with one another and the way the flow of the information goes once user begin the
appliance. When the user begin the appliance initial time user must login within the system then
it verifies whether or not the user is registered within the system or not if user verified then next
activity can get open. Then our main activity opens wherever all the options of our system is
displayed from there user will choose anyone. The additional elaborative description is within
the abstract model section.

43
4.3.2 Algorithm Design
Login module algorithm:

Step 1: Start the application.

Step 2: If user have username and password enter it and hit the submit button else go to step 3
for registration.

Step 3: Register with the valid information set the new password hit submit go to step 2 for re-
login.

Step 4: Exit.

Main algorithm of the application:

Step 1: Once done with the login with valid credentials you will navigated to dashboard.

Step 2: On dashboard user can select upload new project option.

Step 3: Once user redirected to new project page. User will browse folder of project to be
uploaded, enter required details and hit upload button, after uploading user will be redirected to
the dashboard.

Step 4: Search for other users and their projects using search bar on the top of dashboard page.

Step 5: Customize our project profile layout. Then copy profile link and share.

Step 6: Exit.

44
4.4 User Interface Design
4.4.1 Profile Dashboard page

Figure 13 Profile Dashboard page UI

4.4.2 Landing page

Figure 14 Landing page UI

45
4.4.3 Search Page

Figure 15 Search Page UI

4.4.4 Setting Page

Figure 16 Setting Page UI

46
4.5 Security issues
There are applications, software or more commonly used are our website consists of some sort of
the authentication system which every user has to perform. So here the user will have to fill his
personal details such as Name, Email-id, username, password, contact number. So this is the
responsibility of that company to secure the users data at any cost because personal information
is the first priority of everyone if it goes in the wrong it may lead to the dangerous consequences.

Our website provide security to the users personal credentials or more generally we can say to
the personal information. This is done because of the extra care take for security.

We use different methods to keep website secure from attacks like SQL injection, XSS (Cross
site scripting), CSRF (Cross Site Request Forgery), Failure to restrict URL Access, Broken
Authentication, etc.

To deal with SQL we use prepared statements, So query and data can be differentiated. By using
prepared statement we send data after query.

For XSS we filter every data by converting special characters to their respective HTML code
during outputting data.

47
4.6 Test cases
Up to this section we gather the information about the system which user expect to be developed.
So on that basis we jot down some test cases which we used in this and they are listed below:

Test case 1: Requirements gathering and the features to be there in the website.

Here we collect all the specification from the user which he wants to be there in the website. So
if user provide all the requirements properly as per his requirement there is less chance of
conflicts, because sometimes what happen that user don’t tell the developer what he exactly want
from the system and there it fails.

Test case 2: Technology to be used

The user who want that system is definitely not from the technical background so he did not
know exactly what language and technology used in the development purpose but still
sometimes the user keeps on suggesting that use that technology because it’s use by the rival
company. So it may mislead the development environment.

Test case 3: Scheduling of the activities and scheduling of the resources.

It basically concerns with the developing the prototype or basic module of the website and
sending it to the user for the testing purpose. Based in this we priorities the activity and also
allocate the resources to perform those in fix time slot.

Test case 4: User Interface

The simplicity of User Interface is person independent i.e., one user find User Interface is
Complex if they haven’t used any application but for another user it will be simple. Therefore,

48
we cannot perfectly implement this requirement but we try to implement as much as possible. If
the user is satisfied, then the requirement is met.

Test case 5: Response time

This application will take the less than second to perform any activity i.e. if user click on view
project button, project will open immediately in other tab. Only at the uploading project section
it will take some time, depending upon size of the file.

Test case 6: Cost

In this basically we check whether the all the features which user demands for can fit in the
budget or not or else he will have to negotiate with the user.

49
Chapter 5.

IMPLEMENTATION AND TESTING

5.1 Implementation approaches:


In this project I used iterative model development approach. An iterative life cycle show does not
begin with a full detail of necessities. In this model, the advancement starts by determining and
executing simply part of the product, which is then surveyed so as to recognize further
prerequisites. The advancing adaptations until the total framework is actualized and prepared to
be conveyed. Each arrival of Iterative Model is created in a particular and fixed timeframe,
which is called emphasis.

5.2 Coding Details and Efficiency:

The Following Code Display:

1) Index route code:

$file="/projectportfolio";
$klein->respond($file.'/', function ($request, $response, $service) {
if (isset($_SESSION["logged"])) {
$database = new Database();
$db = $database->connect();

$service->render('files/models/Project.php');
$service->render('files/models/ProjectDesign.php');
$service->render('files/models/ProjectVideo.php');
$service->render('home.php', array('db'=>$db));

50
return;
}
$service->render('landing.php');
});
$klein->respond($file.'/index.php', function ($request, $response, $service, $app) {
$response->redirect($app->file.'/', $code = 302);
});
$klein->respond($file.'', function ($request, $response, $service, $app) {
$response->redirect($app->file.'/', $code = 302);
});
$klein->respond($file.'cu/logout/user', function ($request, $response, $service, $app) {

if (isset($_SESSION["logged"])) {
session_unset();
session_destroy();
$response->redirect($app->file.'/');
}
return;
});
$klein->dispatch();

2) Login code:

<?php
session_start();
require_once '../models/Database.php';
require_once '../models/User.php';

51
$database = new Database();
$db = $database->connect();

$data = Null;
if(isset($_POST["email"]) && isset($_POST["pass"]) && isset($_POST["usession"])){
if(crypt($_SESSION['token'], $_POST['usession']) == $_POST['usession']){
$email=$_POST["email"];
$pass=$_POST["pass"];
$user = new User($db);
$result = $user->login($email,$pass);
$num = $result->rowCount();
if($num > 0) {
$row = $result->fetch(PDO::FETCH_ASSOC);
if ($row["disabled"]!=1) {
$_SESSION["logged"]=1;
$_SESSION["full_name"]=$row["full_name"];
$_SESSION["email"]=$row["email"];
$_SESSION["username"]=$row["username"];
$_SESSION["user_id"]=$row["user_id"];
$_SESSION["location"]=$row["location"];
$_SESSION["website"]=$row["website"];
$_SESSION["company"]=$row["company"];
$_SESSION["bio"]=$row["bio"];
$_SESSION["verified"]=$row["verified"];
$_SESSION["private"]=$row["private"];
$_SESSION["disabled"]=$row["disabled"];
$_SESSION["active"]=$row["active"];
$_SESSION["level"]=$row["account_level"];

52
$data = array('status' => 'sucess', 'type' => 'login', 'html' =>
$row["username"]);
}else{
$data = array('status' => 'error', 'type' => 'login', 'html' => 'Your
account is been disabled. Please contact admin');
}
}else{
$data = array('status' => 'error', 'type' => 'login', 'html' => 'Incorrect email
or password');
}
}else{
$data = array('status' => 'error', 'type' => 'session', 'html' => 'Refress your page
and try again');
}
}
echo json_encode($data);
?>

2) Signup code:

<?php
session_start();
header('Content-Type: application/json');
require_once '../models/Database.php';
require_once '../models/User.php';
require_once '../models/Verification.php';
require_once '../models/SocialMedia.php';
require_once '../includes/mail.php';

$database = new Database();

53
$db = $database->connect();

function getfullname($string){
$string = strstr($string, '@', true);
$string = str_replace(' ', '-', $string);
return preg_replace('/[^A-Za-z0-9\-]/', ' ', $string);
}
function getusername($string){
$string = strstr($string, '@', true);
$string = str_replace(' ', '-', $string);
return preg_replace('/[^A-Za-z0-9\-]/', '', $string);
}
$data = Null;
if(isset($_POST["email"]) && isset($_POST["pass"]) && isset($_POST["rpass"]) &&
isset($_POST["usession"])){
if(crypt($_SESSION['token'], $_POST['usession']) == $_POST['usession']){
$verification = new Verification($db);
$social_media = new SocialMedia($db);

$user = new User($db);


$user->full_name=getfullname($_POST["email"]);
$user->email=$_POST["email"];
$user->username=getusername($_POST["email"]);
$user->password=$_POST["pass"];

if(!$user->emailExist($user->email)){
while (!$user->uniqueUsername($user->username)){
$user->username=$user->username+rand(0,1000);
}
54
if ($user->create()) {
$verification->user_id=$user->user_id;
$verification->code=md5(uniqid($user->user_id, true));
$verification->expire_on=date("Y-m-d H:i:s",time()+3600);
$social_media->user_id=$user->user_id;
if($verification->create() && sendmail($user->email,$verification-
>code) && $social_media->create()){
$_SESSION["logged"]=1;
$_SESSION["full_name"]=$user->full_name;
$_SESSION["email"]=$user->email;
$_SESSION["username"]=$user->username;
$_SESSION["user_id"]=$user->user_id;
$_SESSION["location"]="";
$_SESSION["website"]="";
$_SESSION["company"]="";
$_SESSION["bio"]="";
$_SESSION["verified"]=0;
$_SESSION["private"]=0;
$_SESSION["disabled"]=0;
$_SESSION["active"]=1;
$data = array('status' => 'sucess', 'type' => 'user account',
'html' => 'User account created sucessfully');
}else{
$data = array('status' => 'error', 'type' => 'verification',
'html' => 'Error while sending verification mail');
}
}else{
$data = array('status' => 'error', 'type' => 'user account', 'html' =>
'Error while creating user account');
}

55
}else{
$data = array('status' => 'error', 'type' => 'email', 'html' => 'Email address
already exist');
}
}else{
$data = array('status' => 'error', 'type' => 'session', 'html' => 'Refress your page
and try again');
}
}
echo json_encode($data);
?>

4) User route code:

<?php
use \Gumlet\ImageResize;

$klein->respond($file.'/[:username]', function ($request, $response, $service) {


$database = new Database();
$db = $database->connect();
$service->escape = function ($str) {
return htmlentities($str);
};
if (isset($_SESSION["username"])) {
if ($_SESSION["username"]==$request->username) {
$user=json_decode(json_encode($_SESSION));
$service->render('files/includes/auth.php');
$service->render('files/models/SocialMedia.php');
$service->render('files/models/Project.php');

56
$service->render('files/models/ProjectDesign.php');
$service->render('files/models/ProjectVideo.php');
$service->render('files/models/ProjectVisitor.php');
$service->render('files/models/Skill.php');
$service->render('files/models/UserSkill.php');
$service->render('dashboard.php', array('user' => $user,'db'=>$db,'msg'=>$service-
>flashes()));
return;
}
}

$user = new User($db);


$result = $user->findByUsername($request->username);
$num = $result->rowCount();
if($num > 0) {
$row = $result->fetch(PDO::FETCH_OBJ);
$service->render('files/models/SocialMedia.php');
$service->render('files/models/Project.php');
$service->render('files/models/ProjectDesign.php');
$service->render('files/models/ProjectVideo.php');
$service->render('files/models/ProjectVisitor.php');
$service->render('files/models/UserSkill.php');
$service->render('user.php', array('user' => $row,'db'=>$db));
}else{
$service->render('files/views/pages/404.php');
}
});
//profile image
$klein->respond($file.'/[:username]/p/avatar', function ($request, $response, $service) {
57
header('Content-type: image/jpeg');
$database = new Database();
$db = $database->connect();
$user = new User($db);
$result = $user->findByUsername($request->username);
$num = $result->rowCount();
if($num > 0) {
$row = $result->fetch(PDO::FETCH_OBJ);
if ($row->profile_picture!="") {
$service->render('files/uploads/profiles/'.$row->profile_picture);
return;
}
$service->render('files/uploads/profiles/user.jpg');
return;
}
$service->render('files/uploads/profiles/user.jpg');
return;
});

//update user info


$klein->respond('POST',$file.'/[:username]/update/profile', function ($request, $response,
$service) use ($klein) {
$klein->onError(function ($klein, $err_msg) {
$data = array('status' => 'error', 'type' => 'user update', 'html' => $err_msg);
$klein->response()->json($data);
});

$service->render('files/includes/auth.php');
if ($_SESSION["username"]==$request->username) {
58
$service->render('files/models/SocialMedia.php');

$service->validateParam('full_name', 'Please enter a valid full name')->isLen(1, 64)-


>isChars('a-zA-Z ')->notNull();
$service->validateParam('username', 'Please enter a valid username')->isLen(1, 64)-
>isAlnum()->notNull();
$service->validateParam('bio', 'Please enter a valid bio')->isLen(0, 1000);
$service->validateParam('company', 'Please enter a valid company')->isLen(0, 60);
$service->validateParam('location', 'Please enter a valid location')->isLen(0, 60);
$service->validateParam('website', 'Please enter a valid website')->isLen(0, 100);
$service->validateParam('twitter', 'Please enter a valid twitter username')->isLen(0, 30);
$service->validateParam('github', 'Please enter a valid github username')->isLen(0, 30);
$service->validateParam('linkedin', 'Please enter a valid linkedin username')->isLen(0, 30);
$service->validateParam('codepen', 'Please enter a valid codepen username')->isLen(0, 30);

$database = new Database();


$db = $database->connect();

$user = new User($db);


$socialMedia = new SocialMedia($db);
$user->full_name=$request->paramsPost()->full_name;
$user->username=$request->paramsPost()->username;
$user->bio=$request->paramsPost()->bio;
$user->company=$request->paramsPost()->company;
$user->location=$request->paramsPost()->location;
$user->website=$request->paramsPost()->website;
$socialMedia->twitter=$request->paramsPost()->twitter;
$socialMedia->github=$request->paramsPost()->github;
$socialMedia->linkedin=$request->paramsPost()->linkedin;

59
$socialMedia->codepen=$request->paramsPost()->codepen;
if ($user->update($_SESSION["user_id"]) && $socialMedia-
>update($_SESSION["user_id"])) {
$_SESSION["full_name"]=$user->full_name;
$_SESSION["location"]=$user->location;
$_SESSION["website"]=$user->website;
$_SESSION["company"]=$user->company;
$_SESSION["bio"]=$user->bio;
if ($user->username==$_SESSION["username"]) {
$data = array('status' => 'sucess', 'type' => 'user update', 'html' => 'Account successfully
updated');
$response->json($data);
return;
}
if (!$user->uniqueUsername($user->username)) {
$data = array('status' => 'error', 'type' => 'username', 'html' => 'Username already taken');
$response->json($data);
return;
}
if ($user->updateUsername($_SESSION["user_id"])) {
$_SESSION["username"]= $user->username;
$data = array('status' => 'sucess', 'type' => 'username', 'html' => $user->username);
$response->json($data);
return;
}
$data = array('status' => 'error', 'type' => 'username', 'html' => 'Error while updating
username');
$response->json($data);
return;

60
}
return;
}
});

$klein->respond('POST',$file.'/[:username]/update/profile/img', function ($request, $response,


$service) {
$service->render('files/includes/auth.php');
if ($_SESSION["username"]==$request->username) {
if (isset($request->files()->userimg) && file_exists($request->files()->userimg["tmp_name"])
&& is_uploaded_file($request->files()->userimg['tmp_name'])) {
$database = new Database();
$db = $database->connect();
$user=new User($db);
$image = new ImageResize($request->files()->userimg["tmp_name"]);
$image->resize(400, 400);
$imageFileType = strtolower(pathinfo($request->files()-
>userimg["name"],PATHINFO_EXTENSION));
$newImgName=$request->id($hash = true).".".$imageFileType;
$image->save('files/uploads/profiles/'.$newImgName);
$user->profile_picture=$newImgName;
if ($user->updateProfilePicture($_SESSION["user_id"])) {
$response->redirect('../../../'.$request->username, $code = 302);
}
}
}
});

61
$klein->respond('POST',$file.'/[:username]/skills/save', function ($request, $response, $service)
{
$service->render('files/includes/auth.php');
if ($_SESSION["username"]==$request->username) {
if (isset($request->paramsPost()->skills)) {
$database = new Database();
$db = $database->connect();
$service->render('files/models/UserSkill.php');
$userSkill = new UserSkill($db);
$result = $userSkill->findByUser($_SESSION["user_id"]);
$num = $result->rowCount();
$userSkill->user_id=$_SESSION["user_id"];
if($num > 0) {
$error=0;
$row = $result->fetchAll(PDO::FETCH_ASSOC);
$oldskills=array();
foreach ($row as $value) {
array_push($oldskills,$value["skill_id"]);
if (!in_array($value["skill_id"],$request->paramsPost()->skills)) {
echo "Old : ".$value["skill_id"];
if(!$userSkill->delete($value["user_skill_id"])){
$error=1;
}
}
}
foreach ($request->paramsPost()->skills as $key => $skill_id) {
if (!in_array($skill_id,$oldskills)) {
echo "New : ".$skill_id;
$userSkill->skill_id=$skill_id;
62
if(!$userSkill->create()){
$error=1;
}
}
}
if ($error==0) {
$service->flash("Skills successfully saved",'sucess');
$service->back();
return;
}
$service->flash("Error please try again later",'error');
$service->back();
return;
}else{
$error=0;
foreach ($request->paramsPost()->skills as $key => $skill_id) {
$userSkill->skill_id=$skill_id;
if(!$userSkill->create()){
$error=1;
}
}
if ($error==0) {
$service->flash("Skills successfully saved",'sucess');
$service->back();
return;
}
$service->flash("Error please try again later",'error');
$service->back();

63
return;
}
}
}
});
?>

4) Project route code:

<?php
$klein->respond($file.'/[:username]/[:project]', function ($request, $response, $service, $app) {
$database = new Database();
$db = $database->connect();
$service->render('files/models/Project.php');
$project = new Project($db);
$result = $project->findByUrl($request->username,$request->project);
if($result->rowCount() > 0) {
$row = $result->fetch(PDO::FETCH_OBJ);
if (isset($_SESSION["username"])) {
if ($_SESSION["username"]==$request->username) {
$user=json_decode(json_encode($_SESSION));
if ($row->project_type_id=="1") {
$service->render('files/models/ProjectArchive.php');
$projectArchive = new ProjectArchive($db);
$archiveresult = $projectArchive->find($row->project_id);
if($archiveresult->rowCount() > 0) {

64
$service->render('files/views/pages/project.php', array('project' => $row));
return;
}
$service->render('files/views/pages/create/project.php', array('project' =>
$row,'msg'=>$service->flashes(),'user'=>$user));
return;
}
elseif ($row->project_type_id=="2") {
$service->render('files/models/ProjectDesign.php');
$service->render('files/views/pages/create/design.php', array('project' =>
$row,'db'=>$db,'msg'=>$service->flashes(),'user'=>$user));
return;
}
elseif ($row->project_type_id=="3") {
$service->render('files/models/ProjectVideo.php');
$service->render('files/views/pages/create/video.php', array('project' =>
$row,'db'=>$db,'msg'=>$service->flashes(),'user'=>$user));
return;
}
}
}
if ($row->public=="0") {
$service->render('files/views/pages/private.php', array('project' => $row));
return;
}
if ($row->uploaded=="0") {
$service->render('files/views/pages/comingsoon.php', array('project' => $row));
return;
}

65
$unique_view=0;
if (isset($_SESSION["project_viewed"])) {
if (!in_array($row->project_id, $_SESSION["project_viewed"])) {
$unique_view=1;
array_push($_SESSION["project_viewed"],$row->project_id);
}
}else{
$viewed=array();
array_push($viewed,$row->project_id);
$_SESSION["project_viewed"]=$viewed;
$unique_view=1;
}
if ($unique_view) {
$service->render('files/models/ProjectVisitor.php');
$projectVisitor = new ProjectVisitor($db);
$projectVisitor->project_id=$row->project_id;
$projectVisitor->visitor_id=$app->visitor_id;
$projectVisitor->create();
}
if ($row->project_type_id=="1") {
$service->render('files/views/pages/project.php', array('project' => $row));
}
elseif ($row->project_type_id=="2") {
$service->render('files/models/ProjectDesign.php');
$service->render('files/views/pages/design.php', array('project' => $row,'db'=>$db));
}
elseif ($row->project_type_id=="3") {
$service->render('files/models/ProjectVideo.php');

66
$service->render('files/views/pages/video.php', array('project' => $row,'db'=>$db));
}
}else{
$service->render('files/views/pages/404.php');
}
});
$klein->respond($file.'/[:username]/project/new', function ($request, $response, $service) {
$service->render('files/includes/auth.php');
if ($_SESSION["username"]==$request->username) {
$database = new Database();
$db = $database->connect();
$user=json_decode(json_encode($_SESSION));
$service->render('files/models/ProjectType.php');
$service->render('newproject.php', array('user' => $user,'db'=>$db,'msg'=>$service-
>flashes()));
}
});
$klein->respond('POST',$file.'/[:username]/project/create', function ($request, $response,
$service) use ($klein) {
$service->render('files/includes/auth.php');
$service->render('files/models/Project.php');
$database = new Database();
$db = $database->connect();
$project= new Project($db);
$project->user_id=$_SESSION["user_id"];
$service->project=$project;
$klein->onError(function ($klein, $err_msg) {
$klein->service()->flash($err_msg,'error');
$klein->service()->back();

67
});
$service->addValidator('boolean', function ($str) {
return ((($str == "1") || ($str == "0")) ? true : false);
});
$service->addValidator('uniqueUrl', function ($str) use ($klein) {
$url=getUrl($str);
if ($klein->service()->project->isProjectExist($url)) {
return false;
}
return true;
});
if ($_SESSION["username"]==$request->username) {
$request->paramsPost()->projectname=trim($request->paramsPost()->projectname);
$service->validateParam('projectname', 'Please enter a valid project name')->isLen(1, 64)-
>isChars('a-zA-Z0-9- ')->notNull();
$service->validateParam('visibility', 'Please select valid visibility')->isBoolean()->notNull();
$service->validateParam('type', 'Please select a valid project type')->isLen(1)->isInt()-
>notNull();
$service->validateParam('description', 'Please enter a valid project description')->isLen(0,
1000);
$service->validateParam('projectname', 'Project with this name already exist')->isUniqueUrl();
$project->title=$request->paramsPost()->projectname;
$project->url=getUrl($request->paramsPost()->projectname);
$project->project_type_id=$request->paramsPost()->type;
$project->description=$request->paramsPost()->description;
$project->public=$request->paramsPost()->visibility;
$project->folder_name=$request->id($hash = true);
if ($project->create()) {
mkdir("files/projects/".$project->folder_name);

68
$response->redirect('../'.$project->url, $code = 302);
}
}
});
$klein->respond('GET',$file.'/[:username]/[:project]/edit', function ($request, $response,
$service) use ($klein) {
$service->render('files/includes/auth.php');
if ($_SESSION["username"]==$request->username) {
$database = new Database();
$db = $database->connect();
$service->render('files/models/Project.php');
$project = new Project($db);
$result = $project->findByUrl($request->username,$request->project);
if($result->rowCount() > 0) {
$row = $result->fetch(PDO::FETCH_OBJ);
$user=json_decode(json_encode($_SESSION));
$service->render('files/models/ProjectType.php');
$service->render('files/views/pages/edit/project.php',
array('project'=>$row,'db'=>$db,'msg'=>$service->flashes(),'user'=>$user));
}
}
});
$klein->respond('POST',$file.'/[:username]/[:project]/update', function ($request, $response,
$service) use ($klein) {
$service->render('files/includes/auth.php');
$service->render('files/models/Project.php');
$database = new Database();
$db = $database->connect();
$project= new Project($db);

69
$project->user_id=$_SESSION["user_id"];
$service->project=$project;
$klein->onError(function ($klein, $err_msg) {
$klein->service()->flash($err_msg,'error');
$klein->service()->back();
});
$service->addValidator('boolean', function ($str) {
return ((($str == "1") || ($str == "0")) ? true : false);
});
$service->addValidator('uniqueUrl', function ($str) use ($klein) {
$url=getUrl($str);
if ($klein->service()->project->isProjectExist($url)) {
return false;
}
return true;
});
if ($_SESSION["username"]==$request->username) {
$result = $project->findByUrl($request->username,$request->project);
if($result->rowCount() > 0) {
$row = $result->fetch(PDO::FETCH_OBJ);
$request->paramsPost()->projectname=trim($request->paramsPost()->projectname);
$service->validateParam('projectname', 'Please enter a valid project name')->isLen(1, 64)-
>isChars('a-zA-Z0-9- ')->notNull();
$service->validateParam('visibility', 'Please select valid visibility')->isBoolean()->notNull();
$service->validateParam('description', 'Please enter a valid project description')->isLen(0,
1000);
if ($row->title!=$request->paramsPost()->projectname) {
$service->validateParam('projectname', 'Project with this name already exist')-
>isUniqueUrl();

70
}
$project->title=$request->paramsPost()->projectname;
$project->url=getUrl($request->paramsPost()->projectname);
$project->description=$request->paramsPost()->description;
$project->public=$request->paramsPost()->visibility;
if ($project->update($row->project_id)) {
$klein->service()->flash('Project successfully updated','sucess');
$response->redirect('../'.$project->url.'/edit', $code = 302);
}
}
}
});
$klein->respond($file.'/[:username]/[:project]/delete', function ($request, $response, $service)
use ($klein) {
$service->render('files/includes/auth.php');
$service->render('files/models/Project.php');
$service->render('files/models/ProjectDeleted.php');
$database = new Database();
$db = $database->connect();
$project= new Project($db);
if ($_SESSION["username"]==$request->username) {
$result = $project->findByUrl($request->username,$request->project);
if($result->rowCount() > 0) {
$row = $result->fetch(PDO::FETCH_OBJ);
$projectDeleted= new ProjectDeleted($db);
$projectDeleted->project_id=$row->project_id;
$projectDeleted->deleted_folder=$request->id($hash = true);
if($project->delete($row->project_id) && $projectDeleted->create()){
if(file_exists("files/projects/".$row->folder_name)){
71
if(rename("files/projects/".$row->folder_name,"files/projects/".$projectDeleted-
>deleted_folder)){
$response->redirect('../../'.$request->username, $code = 302);
}
}
}
}
}
});
?>
5) Project details route code:

<?php
$klein->respond('POST',$file.'/[:username]/[:project]/upload/frontend', function ($request,
$response, $service) use ($klein) {
$service->render('files/includes/auth.php');
$fill_extensions =array("html","css","js","svg","scss","json");
$img_extensions =array("jpg","png","jpeg");
$klein->onError(function ($klein, $err_msg) {
$klein->service()->flash($err_msg,'error');
$data = array('status' => 'error', 'type' => 'upload', 'html' => $err_msg);
$klein->response()->json($data);
});
if ($_SESSION["username"]==$request->username) {
$database = new Database();
$db = $database->connect();
$service->render('files/models/Project.php');
$project = new Project($db);
$result = $project->findByUrl($request->username,$request->project);

72
if($result->rowCount() > 0) {
$row = $result->fetch(PDO::FETCH_OBJ);
if ($row->project_type_id=="1") {
//Zip uploads
$archive = \wapmorgan\UnifiedArchive\UnifiedArchive::open($request->files()-
>file["tmp_name"]);
$extracted_size = $archive->getArchiveType();
$files_lists = $archive->getFileNames();
foreach ($files_lists as $files_list) {
$imageFileType = strtolower(pathinfo($files_list,PATHINFO_EXTENSION));
if (!in_array($imageFileType,$fill_extensions) && !in_array($imageFileType,
$img_extensions)) {
throw new Exception("Invalid file ".$imageFileType);
}
}
if (!$archive->isFileExists('index.html')) {
throw new Exception("index.html doesn't exist in root folder");
}
if($archive->extractFiles("files/projects/".$row->folder_name)){
$service->render('files/models/ProjectArchive.php');
$projectArchive = new ProjectArchive($db);
$projectArchive->project_id=$row->project_id;
$projectArchive->file_name=$request->files()->file["name"];
$projectArchive->archive_type=$archive->getArchiveType();
$projectArchive->archive_size=$archive->getArchiveSize();
$projectArchive->files_count=$archive->countFiles();
if ($projectArchive->create() && $project->uploaded($row->project_id)) {
$data = array('status' => 'sucess', 'type' => 'upload', 'html' => 'Project successfully
uploaded');

73
$response->json($data);
return;
}
}
}
}
}
});
$klein->respond('POST',$file.'/[:username]/[:project]/upload/design', function ($request,
$response, $service) use ($klein) {
$service->render('files/includes/auth.php');
$klein->onError(function ($klein, $err_msg) {
$klein->service()->flash($err_msg,'error');
$data = array('status' => 'error', 'type' => 'upload', 'html' => $err_msg);
$klein->response()->json($data);
});
if ($_SESSION["username"]==$request->username) {
$database = new Database();
$db = $database->connect();
$service->render('files/models/Project.php');
$service->render('files/models/ProjectDesign.php');
$project = new Project($db);
$projectDesign = new ProjectDesign($db);
$result = $project->findByUrl($request->username,$request->project);
if($result->rowCount() > 0) {
$row = $result->fetch(PDO::FETCH_OBJ);
if ($row->project_type_id=="2") {
if (isset($request->files()->file)) {
$projectDesign->project_id=$row->project_id;
74
$images=array();
$i=1;
foreach ($request->files()->file["tmp_name"] as $key => $tmp) {
$image = new ImageResize($tmp);
list($width, $height) = getimagesize($tmp);
if ($width == $height) {
$image->resize(400,400);
$projectDesign->orientation="square";
}elseif($width>$height){
$image->resizeToHeight(400);
$projectDesign->orientation="landscape";
} else {
$image->resizeToWidth(400);
$projectDesign->orientation="portrait";
}
$imageFileType = strtolower(pathinfo($request->files()->file["name"]
[$key],PATHINFO_EXTENSION));
$newImgName=$request->id($hash = true).$i.".".$imageFileType;
$i++;
$image->save("files/projects/".$row->folder_name."/".$newImgName);
$projectDesign->name=$newImgName;
$projectDesign->file_name=$request->files()->file['name'][$key];

if ($projectDesign->create()) {
array_push($images,$projectDesign->name);
}
}
if ($row->uploaded=="0") {
if ($project->uploaded($row->project_id)) {
75
$row->uploaded=1;
}
}
$data = array('status' => 'sucess', 'type' => 'design upload', 'html' => $images);
$response->json($data);
return;
}
}
}
}
});
$klein->respond('POST',$file.'/[:username]/[:project]/upload/video', function ($request,
$response, $service) use ($klein) {
$service->render('files/includes/auth.php');
$klein->onError(function ($klein, $err_msg) {
$klein->service()->flash($err_msg,'error');
$klein->service()->back();
});
$service->addValidator('link', function ($str) {
$rx = '~
^(?:https?://)? # protocol
(?:www[.])? # sub-domain
(?:youtube[.]com/watch[?]v=|youtu[.]be/) # Mandatory domain name (w/ query string in .com)
([^&]{11}) # Video id of 11 characters as capture group 1
~x';
return preg_match($rx, $str);
});
if ($_SESSION["username"]==$request->username) {
$database = new Database();
76
$db = $database->connect();
$service->render('files/models/Project.php');
$service->render('files/models/ProjectVideo.php');
$project = new Project($db);
$projectVideo = new ProjectVideo($db);
$result = $project->findByUrl($request->username,$request->project);
if($result->rowCount() > 0) {
$row = $result->fetch(PDO::FETCH_OBJ);
if ($row->project_type_id=="3") {
$service->validateParam('video', 'Please enter a valid youtube url')->isLen(1, 100)-
>isLink();
$link = $request->paramsPost()->video;
$video_id = explode("?v=", $link); // For videos like http://www.youtube.com/watch?v=...
if (empty($video_id[1]))
$video_id = explode("/v/", $link); // For videos like http://www.youtube.com/watch/v/..
$video_id = explode("&", $video_id[1]); // Deleting any other params
$video_id = $video_id[0];
$projectVideo->project_id=$row->project_id;
$projectVideo->link=$link;
$projectVideo->video_id=$video_id;

if ($projectVideo->create()) {
if ($row->uploaded=="0") {
if ($project->uploaded($row->project_id)) {
$row->uploaded=1;
}
}
$klein->service()->flash('Link added successfully ','sucess');
$klein->service()->back();
77
return;
}
}
}
}
});

$klein->respond($file.'/[:username]/[:project]/delete/[i:id]', function ($request, $response,


$service) use ($klein) {
$service->render('files/includes/auth.php');
$service->render('files/models/Project.php');
$database = new Database();
$db = $database->connect();
$project= new Project($db);
if ($_SESSION["username"]==$request->username) {
$result = $project->findByUrl($request->username,$request->project);
if($result->rowCount() > 0) {
$row = $result->fetch(PDO::FETCH_OBJ);
if ($row->project_type_id=="2") {
$service->render('files/models/ProjectDesign.php');
$projectDesign = new ProjectDesign($db);
if($projectDesign->delete($request->id)){
$Designresult=$projectDesign->find($row->project_id);
if($Designresult->rowCount()==0){
$project->notUploaded($row->project_id);
}
$klein->service()->flash('Design removed successfully ','sucess');
$klein->service()->back();
}
78
}
if ($row->project_type_id=="3") {
$service->render('files/models/ProjectVideo.php');
$projectVideo = new ProjectVideo($db);
if($projectVideo->delete($request->id)){
$videoresult=$projectVideo->find($row->project_id);
if($videoresult->rowCount()==0){
$project->notUploaded($row->project_id);
}
$klein->service()->flash('Video removed successfully ','sucess');
$klein->service()->back();
}
}
}
}
});
?>

5.3 Testing Approach:

The developers can test products by reviewing their constructions and compositions or by
exercising their functions and examining the results.

Integration testing tests the nature of variable group of software components. Unit testing test
each individual software components in isolation. Because of each testing level is related to
specific phase of SDLC, testing activities can be spread out through the life cycle. Planning for
each type testing can occur with its related SDLC phase, and development of specific test can
occur once the planning for each type testing can occur with its reached SDLC phase, and
development of specific test can occur once the planning is complete.

79
5.3.1:-Unit Testing
In unit testing the single unit of the entire system is tested as part by part for example in this
project, different units are available such as login unit, Registration unit and temperature sensor
and controller unit

The login unit is tested by validating the values entered by the user, if the values are correct then
user is redirected to next screen or else an error is shown to the user, below is the representation
of the same.

Error message is been shown if invalid id is entered life cycle of unit testing

The main aim is to isolate each unit of the system to identify, analyze and fix the defects.

5.3.2:- Integration Testing


An integration test tests the nature of group modules. The purpose of an integration test is to
identify errors that were not or could not be detected by unit testing individual modules or
methods.

80
When is Integration Testing performed?

Integration Testing is the second level of testing performed after Unit Testing and before System
Testing.

Who performs Integration Testing?

Developers themselves or independent testers perform Integration Testing.

Approaches

Big bang is a way to deal with Integration Testing where all or a large portion of the units are
joined together and tried at one go. This methodology is taken when the testing group gets the
whole programming in a pack. So what is the distinction between Big Bang Integration Testing
and System Testing? Indeed, the previous tests just the collaborations between the units while
the last tests the whole framework.

Top Down is a way to deal with Integration Testing where top-level units are tried first and
lower level units are tried well ordered after that. This methodology is adopted when top-down
improvement strategy is pursued. Test Stubs are expected to mimic lower level units which may
not be accessible amid the underlying stages.

Bottom Up is a way to deal with Integration Testing where base dimension units are tried first
and upper-level units well ordered after that. This methodology is adopted when base up
advancement strategy is pursued. Test pilots are expected to recreate larger amount units which
may not be accessible amid the underlying stages. Sandwich/Hybrid is an approach to Integration
Testing which is a combination of Top Down and Bottom Up approaches.

81
5.3.3:- Beta Testing

In programming advancement, a beta test is the second period of programming testing in which
an examining of the target group attempts the item out.

Beta is the second letter of the Greek letters in order. Initially, the term alpha test implied the
primary period of testing in a product improvement process. The principal stage incorporates unit

82
testing, part testing, and framework testing. Beta testing can be considered "pre-discharge
testing."

Beta testing is likewise now and then alluded to as client acknowledgment testing or end client
testing. In this period of programming advancement, applications are exposed to true testing by
the target group for the product. The encounters of the early clients are sent back to the engineers
who roll out conclusive improvements before discharging the product financially.

For in-house testing, volunteers or paid guineas pigs utilize the product. For generally dispersed
programming, designers may make the test adaptation accessible for downloading and free
preliminary over the Web. Another reason for making programming generally accessible along
these lines is to give a see and perhaps make some buzz for the last item.

5.4:-Modification and Improvements

After proper unit testing and the integration testing most of the major problems and error that
might occur in the future are removed.

83
Also it help us to improve the performance of the project, it help us in memory management too
i.e. while testing we search for the more efficient way of implementing the one particular unit.

5.5:- Test Cases


1. First of all we have to check that user is registered or not if not then he have to fill the
form and register. Checking whether user entered a data in all fields or not.
2. Login page taking registered email-id and password from the user and validating it. If the
entered details are valid then the user is redirected to next page.
3. Email validation is done by sending unique verification link on that email address, once
user click on the link from mail it is validate if correct or not.
4. While updating user details we have to check if username is already taken or not, full
name is not null and social media usernames are valid.
5. New project - In this we have to check that project with same name already created by
same user or not.
6. Upload front end project- Here, once we are done with the above test case we have to
check whether zip uploaded is valid and do not contain any harm full file and has
index.html in root of zip.
7. Design upload- Under this section there is image upload drop box, we have to check
uploaded design is in image format.
8. Video upload- Under this section there is option to add YouTube video links so we have
to make sure that uploaded link is a proper YouTube link.

84
Chapter 6.

RESULTS AND DISCUSSION

6.1 Test reports:

Test reports are done to solve the problems in our program on assumptions of user input. Test
cases are designed to help programmers solve errors they are a set of input or commands and the
expected output cases are written down. If the project is passed in all the test cases then only it is
sent to the user till then it is continuously modified and then again checked for errors and all the
reports are written down. The various test cases required for this project and their set of inputs
and outputs are given as follows:

Sr. Name Input Expected Actual Remark


No Output Output
1. Login Page Valid Navigates to Navigates to Pass
information
requested page requested page
2. Login Page Invalid Message Message Pass
information
showing login showing login
unsuccessful unsuccessful
for selected for selected
user user
3. Sign Up Valid Navigates to Navigates to Pass
information
requested page requested page
4. Sign Up Invalid Message Message Pass
information
showing login showing login
unsuccessful unsuccessful
for selected for selected
user user
5. Create Project Valid Project Navigates to Pass
information created
requested page
successfully
6. Create Project Invalid Message Message pass
information prompting that prompting that
information is information is
invalid invalid

85
6.2 User Documentation

First is our registration page for the new user here user have to fill all the details

Next is our email verification page were we have to verify our email by click on the link send on
our mail address.

86
Next is our login page were we have to put our email-id and password which we enter at the
registration page.

Now once we successfully login into our application then the Home page will open. Here we can
edit our profile and create new project.

87
Create new project page where we can create new project.

Upload new project page where we have to upload a zip file of our project.

88
Chapter 7.

CONCLUSIONS

This classified website will make uploading small front end project easier which will save the
user from buying hosting and domain. To use this website the user needs to register on this
website else they will not be able to create their unique link on website. By submitting general
information like email and password they can register on this website. After completing
registration they will be able to login into a website and to use other feature which only
registered members can use.
Benefits of website:
 Easy to use.
 User can upload front end projects, design, videos link.
 User can share profile link and project link.
 User can show all projects in interview using single link.

89
7.1.1 Significance of the System

Registration of the user: User or anyone can do registration just filling up some information like
email id and password.
Login: Login activity helps to login in the website just submitting some information email id and
password.

7.2 Limitations of the system

 This website is not supportable filter for improper website.


 User can’t upload website with more than 10mb size due to server space limitation.

7.3 Future scope of the project

 Every project will have like and bookmark option.


 Uploading more types of projects.

REFERENCE

 https://stackoverflow.com/

 https://github.com/klein/klein.php

 https://github.com/wapmorgan/UnifiedArchive

 https://github.com/PHPMailer/PHPMailer

 https://github.com/gumlet/php-image-resize

 https://www.dropzonejs.com/

 https://www.youtube.com/

90
Plagiarism Checker X Originality Report
Similarity Found: 6%

Date: Wednesday, September 23, 2020


Statistics: 662 words Plagiarized / 10181 Total words
Remarks: Low Plagiarism Detected - Your Document needs Optional Improvement.
-------------------------------------------------------------------------------------------

Chapter 1. INTRODUCTION 1.1 Background Making portfolio is one of the best way to
present your skills and talent to other people. As a developer it is an essential thing to
show case your work. To showcase your projects you can use web hosting to host your
projects. The charges of hosting a project are pretty high and also time consuming, so

91
the developer tend to save their project in their machine itself.

If your project is just lying on your hard disk and you can't show to others so probably it
becomes useless. This website will provide a platform where a developer can upload
their work such as projects and designs and can maintain them collectively and can view
projects whenever needed. The uploaded projects can also be used as resume in the
interview and will give upper hand over other candidate.

Each user will be provided a unique URL through which their profile can be viewed by
others and their projects will be displayed. You can change privacy setting of the project
to public or only me. Private projects can be only viewed by user who have uploaded
that project. User can allow other user the permission for other user to download the
source code.

Users can have different layout for their profile which will make their profile unique from
others. The website will have set of pre define layouts or else the user can also use
customize layout as per their requirements. 1.2 Objectives Showing your projects online
can create a good impression in interview, as an interviewer can see your skills and the
work you have done.

92

You might also like