Project Portfolio Documentation
Project Portfolio Documentation
A Project Report
Submitted in partial fulfillment of the
Requirements for the award of the Degree of
By
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
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.
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.
Project Portfolio
Objectives of the Project:
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:
Back-end: PHP
Database: MYSQL
Software Requirements:
WAMP or XAMPP
Text Editor
Browser
Limitations:
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:
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.
Chapter 1: Introduction
Background: An explanation of the development context and its association with the work
already done in the field.
8
Purpose: Project theme description that answers questions about why this project is
implemented.
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.
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.
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.
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.
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
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.
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
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:
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
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.
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
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.
• Reducing cost.
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.
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
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.
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.
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.
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
7/ 7/2 8/1 8/3 9/2 10/1... 10/3... 11/1... 12/ 12/2... 1/1
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.
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
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
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
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
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
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
This module will allow the User to Register. User first have to register to use our Services.
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:
Then user gets the some options which are upload project, Search user or projects, Layout, User
profile.
This section will help the user to new projects in the database.
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:
Logout Module:
34
4.2 Data Design
4.2.1 Schema Design
35
4.2.2 Data Integrity and Constraints
User table for sign in & sign up
36
Table 3 User verification
Projects table
Table 5 Projects
37
Project logs table
38
2. project_id Int(10) Yes Foreign Key
3. user_id Int(10) Yes Foreign Key
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.
39
1. Maintain scope of the system suggests that of context diagram.
5. Acknowledge and Label from every method internal to the system together with conic
section reasonably circle.
• Notations
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.
41
Figure 11 Context Diagram
42
Figure 12 DFD diagram
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 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.
Step 1: Once done with the login with valid credentials you will navigated to dashboard.
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
45
4.4.3 Search Page
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.
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.
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.
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.
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.
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.
$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';
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);
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);
?>
<?php
use \Gumlet\ImageResize;
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;
}
}
$service->render('files/includes/auth.php');
if ($_SESSION["username"]==$request->username) {
58
$service->render('files/models/SocialMedia.php');
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;
}
});
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;
}
}
}
});
?>
<?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;
}
}
}
}
});
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.
80
When is Integration Testing performed?
Integration Testing is the second level of testing performed after Unit Testing and before System
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.
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.
84
Chapter 6.
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:
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.
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%
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