Вы находитесь на странице: 1из 23

Web​ ​Application​ ​Development​ ​at​ ​MyPerfectice

A​ ​project​ ​report​ ​submitted​ ​in​ ​partial​ ​fulfillment​ ​of​ ​the​ ​requirements

summer​ ​internship​ ​project

at

Perfectice​ ​Eduventure​ ​Private​ ​Limited

By

Amandeep​ ​Sachan​ ​(2013IPG-012)

ABV​ ​INDIAN​ ​INSTITUTE​ ​OF​ ​INFORMATION

TECHNOLOGY​ ​AND​ ​MANAGEMENT

GWALIOR-474010

2017
2

Declaration

I,​ ​Amandeep​ ​Sachan​ ​hereby​ ​declare​ ​that​ ​the​ ​presented​ ​report​ ​of​ ​Summer​ ​Internship
titled​ ​“Web​ ​Application​ ​Development​ ​at​ ​MyPerfectice”​ ​is​ ​uniquely​ ​prepared​ ​by​ ​me
after​ ​the​ ​completion​ ​of​ ​60​ ​Days​ ​of​ ​Internship​ ​Study​ ​and​ ​Work​ ​at​ ​Perfectice
Eduventure​ ​Private​ ​Limited.
I​ ​also​ ​confirm​ ​that,​ ​the​ ​report​ ​is​ ​only​ ​prepared​ ​for​ ​my​ ​academic​ ​requirement​ ​not​ ​for
any​ ​other​ ​purpose.​ ​It​ ​might​ ​not​ ​be​ ​used​ ​with​ ​the​ ​interest​ ​of​ ​opposite​ ​party​ ​of​ ​the
corporation.

Amandeep​ ​Sachan
Summer​ ​Intern,
MyPerfectice​ ​-​ ​Bengaluru
Perfectice​ ​Eduventure​ ​Private​ ​Limited.

 
Summer​ ​Internship​ ​|​ ​Amandeep​ ​Sachan​ ​|​ ​MyPerfectice 
3

Acknowledgement

I​ ​would​ ​like​ ​to​ ​take​ ​the​ ​opportunity​ ​to​ ​thank​ ​Mr.​ ​Yashvant​ ​Singh,​ ​CTO​ ​(Perfectice
Eduventure​ ​Private​ ​Limited)​ ​for​ ​providing​ ​me​ ​the​ ​opportunity​ ​to​ ​work​ ​on​ ​this
project​ ​and​ ​Mr.​ ​Priytam​ ​Singh​ ​(Technical​ ​lead)​ ​for​ ​making​ ​me​ ​understand​ ​the
basic​ ​and​ ​initial​ ​stages​ ​of​ ​various
technologies​ ​like​ ​JavaScript,​ ​Full​ ​Stack​ ​Development,​ ​NodeJS,​ ​MongoDB​ ​and
Angular​ ​JS​ ​and​ ​providing​ ​me​ ​with​ ​an​ ​opportunity​ ​to​ ​implement​ ​and​ ​further​ ​work
on​ ​my​ ​skills​ ​during​ ​the​ ​internship​ ​period.​ ​Also​ ​I​ ​would​ ​like​ ​to​ ​thank​ ​my​ ​intern
colleagues​ ​for​ ​always​ ​keeping​ ​me​ ​on​ ​right​ ​track​ ​by​ ​correcting​ ​my​ ​mistakes​ ​at
various​ ​steps​ ​and​ ​providing​ ​with​ ​all​ ​the​ ​necessary​ ​resources​ ​as​ ​and​ ​when​ ​needed
by​ ​me.​ ​Without​ ​their​ ​help,​ ​support​ ​and​ ​guidance,​ ​this​ ​project​ ​would​ ​have​ ​been​ ​a
distant​ ​reality.

Amandeep​ ​Sachan
(2013IPG-012)

 
Summer​ ​Internship​ ​|​ ​Amandeep​ ​Sachan​ ​|​ ​MyPerfectice 
4

Abstract

Perfectice​ ​is​ ​a​ ​Global​ ​open​ ​platform​ ​for​ ​assessment​ ​(test​ ​preparation).​ ​A​ ​true
platform​ ​to​ ​enable,​ ​independent​ ​teachers,​ ​schools,​ ​learning​ ​centers,​ ​coaching
institutes,​ ​corporate​ ​(business),​ ​online​ ​learning​ ​platform​ ​and​ ​publisher​ ​to​ ​create
assessment​ ​and​ ​students​ ​to​ ​take​ ​those​ ​test​ ​anytime-anywhere.​ ​The​ ​core​ ​of
Perfectice​ ​is​ ​the​ ​analytics​ ​engine​ ​build​ ​behind​ ​the​ ​platform​ ​to​ ​help​ ​students​ ​better
understand​ ​-​ ​insight,​ ​into​ ​their​ ​learning​ ​needs.​ ​Students​ ​can​ ​see​ ​their​ ​strength​ ​and
weakness​ ​by​ ​subject​ ​and​ ​topics,​ ​compare​ ​themselves​ ​at​ ​national​ ​and​ ​international
level,​ ​understand​ ​their​ ​improvement​ ​over​ ​a​ ​period​ ​of​ ​time,​ ​find​ ​test​ ​taking​ ​pattern,
access​ ​wide​ ​variety​ ​of​ ​practice​ ​tests​ ​and​ ​get​ ​a​ ​clear​ ​picture​ ​on​ ​speed​ ​as​ ​well​ ​as
accuracy.
MyPerfectice​ ​web​ ​application​ ​is​ ​build​ ​on​ ​MEAN​ ​Stack​ ​and​ ​mobile​ ​app​ ​is​ ​build
using​ ​Ionic​ ​Framework.​ ​MEAN​ ​is​ ​acronym​ ​for​ ​MongoDB,​ ​Express.js,​ ​AngularJS
and​ ​Node.js,​ ​where​ ​MongoDB​ ​is​ ​database,​ ​AngularJS​ ​is​ ​client​ ​side​ ​framework,
Node.js​ ​is​ ​server​ ​side​ ​framework​ ​and​ ​Express.js​ ​is​ ​a​ ​web​ ​application​ ​framework
for​ ​Node.js,​ ​released​ ​as​ ​free​ ​and​ ​open-source​ ​software​ ​under​ ​the​ ​MIT​ ​License.​ ​It​ ​is
designed​ ​for​ ​building​ ​web​ ​applications​ ​and​ ​APIs.
This​ ​whole​ ​project​ ​results​ ​in​ ​a​ ​fully​ ​functional,​ ​faster​ ​and​ ​efficient​ ​process​ ​for​ ​the
user.

Keywords:​ ​Assessment,​ ​Node.js,​ ​Express.js,​ ​AngularJS​ ​,​ ​MongoDB

 
Summer​ ​Internship​ ​|​ ​Amandeep​ ​Sachan​ ​|​ ​MyPerfectice 
5

TABLE​ ​OF​ ​CONTENTS

TABLE​ ​OF​ ​CONTENTS 5

COMPANY​ ​PROFILE 6
Vision 6
Mission 6
Functionality 6

PROBLEM​ ​STATEMENTS 8
Integration​ ​with​ ​NIIT​ ​Technologies 8
Content​ ​management​ ​Module​ ​for​ ​platform 8
Computerized​ ​Adaptive​ ​Tests 9

LITERATURE​ ​REVIEW 10
Application​ ​Programming​ ​Interface 10
Token​ ​Based​ ​Authentication 10
MVC​ ​Framework 11
MVC​ ​Components 11
NoSQL​ ​Database 12

SOLUTION​ ​APPROACH 13
Tools​ ​and​ ​Web​ ​Technologies​ ​Used 13
Solution​ ​Methodology 15

RESULT 21

CONCLUSION 22

REFERENCES 23

 
Summer​ ​Internship​ ​|​ ​Amandeep​ ​Sachan​ ​|​ ​MyPerfectice 
6

1. COMPANY​ ​PROFILE
Perfectice​ ​is​ ​a​ ​platform​ ​to​ ​enable,​ ​independent​ ​teachers,​ ​schools,​ ​learning
centers,​ ​coaching​ ​institutes,​ ​corporate​ ​(business),​ ​online​ ​learning​ ​platform
and​ ​publisher​ ​to​ ​create​ ​assessment​ ​and​ ​students​ ​to​ ​take​ ​those​ ​test​ ​anytime​ ​-
anywhere.​ ​It​ ​is​ ​a​ ​marketplace​ ​for​ ​teachers​ ​and​ ​publishers​ ​to​ ​market​ ​&​ ​sell
their​ ​practice​ ​tests.​ ​They​ ​can​ ​sell,​ ​give​ ​free​ ​or​ ​share​ ​in​ ​private​ ​mode​ ​with
certain​ ​students.​ ​Teachers​ ​can​ ​also​ ​precisely​ ​monitor​ ​the​ ​performance​ ​of
their​ ​students​ ​and​ ​personalize​ ​teaching​ ​style/material​ ​accordingly.​ ​Perfectice
also​ ​connects​ ​to​ ​parents​ ​who​ ​can​ ​peek​ ​into​ ​the​ ​child's​ ​performance​ ​and​ ​help
him/her​ ​effectively.

1.1. Vision
The​ ​Perfectice​ ​vision​ ​is​ ​to​ ​Inspire​ ​and​ ​Develop​ ​the​ ​Leaders​ ​of
Tomorrow​​ ​by​ ​providing​ ​a​ ​new​ ​way​ ​for​ ​students​ ​to​ ​compete​ ​for
examinations​ ​and​ ​college​ ​admissions​ ​that​ ​is​ ​more​ ​effective,​ ​engaging
and​ ​motivating.

1.2. Mission
The​ ​Perfectice​ ​mission​ ​is​ ​to​ ​Transform​ ​How​ ​Students​ ​Prepare​ ​for
Competitive​ ​Exams.

1.3. Functionality

1.3.1. It​ ​is​ ​an​ ​online​ ​platform​ ​for​ ​students​ ​to​ ​take​ ​the​ ​tests​ ​and
teachers​ ​to​ ​create​ ​those​ ​tests​ ​-​ ​all​ ​examinations​ ​covered.
Perfectice​ ​provides​ ​students​ ​insight​ ​into​ ​their​ ​preparation​ ​and
performance​ ​using​ ​advanced​ ​data​ ​analysis.
1.3.2. Students​ ​can​ ​see​ ​their​ ​strength​ ​and​ ​weakness​ ​by​ ​subject​ ​and
topics,​ ​compare​ ​themselves​ ​at​ ​national​ ​and​ ​international​ ​level,
 
Summer​ ​Internship​ ​|​ ​Amandeep​ ​Sachan​ ​|​ ​MyPerfectice 
7

understand​ ​their​ ​improvement​ ​over​ ​a​ ​period​ ​of​ ​time,​ ​find​ ​test
taking​ ​pattern,​ ​access​ ​wide​ ​variety​ ​of​ ​practice​ ​tests​ ​and​ ​get​ ​a
clear​ ​picture​ ​on​ ​speed​ ​as​ ​well​ ​as​ ​accuracy.
1.3.3. The​ ​more​ ​you​ ​practice,​ ​more​ ​you​ ​will​ ​know​ ​about​ ​yourself​ ​and
better​ ​you​ ​will​ ​become​ ​-​ ​that's​ ​how​ ​Perfectice​ ​helps​ ​you.
1.3.4. It​ ​is​ ​a​ ​marketplace​ ​for​ ​teachers​ ​and​ ​publishers​ ​to​ ​market​ ​&​ ​sell
their​ ​practice​ ​tests.​ ​They​ ​can​ ​sell,​ ​give​ ​free​ ​or​ ​share​ ​in​ ​private
mode​ ​with​ ​certain​ ​students.
1.3.5. Teachers​ ​can​ ​also​ ​precisely​ ​monitor​ ​the​ ​performance​ ​of​ ​their
students​ ​and​ ​personalize​ ​teaching​ ​style/material​ ​accordingly.
1.3.6. Perfectice​ ​also​ ​connects​ ​to​ ​parents​ ​who​ ​can​ ​peek​ ​into​ ​the​ ​child's
performance​ ​and​ ​help​ ​him/her​ ​effectively.​ ​Parents​ ​can​ ​have
more​ ​meaningful​ ​and​ ​effective​ ​discussion​ ​with​ ​the​ ​child​ ​and
their​ ​teachers​ ​-​ ​seek​ ​personalized​ ​coaching​ ​for​ ​the​ ​child.
1.3.7. Any​ ​school,​ ​coaching​ ​institute,​ ​students,​ ​parents,​ ​independent
teachers​ ​and​ ​mentors​ ​can​ ​benefit​ ​from​ ​this​ ​application​ ​from​ ​day
one.

 
Summer​ ​Internship​ ​|​ ​Amandeep​ ​Sachan​ ​|​ ​MyPerfectice 
8

2. PROBLEM​ ​STATEMENTS
Perfectice​ ​provides​ ​students​ ​insight​ ​into​ ​their​ ​preparation​ ​and​ ​performance
using​ ​advanced​ ​data​ ​analysis.​ ​Students​ ​can​ ​see​ ​their​ ​strength​ ​and​ ​weakness
by​ ​subject​ ​and​ ​topics,​ ​compare​ ​themselves​ ​at​ ​national​ ​and​ ​international
level,​ ​understand​ ​their​ ​improvement​ ​over​ ​a​ ​period​ ​of​ ​time,​ ​find​ ​test​ ​taking
pattern,​ ​access​ ​wide​ ​variety​ ​of​ ​practice​ ​tests​ ​and​ ​get​ ​a​ ​clear​ ​picture​ ​on​ ​speed
as​ ​well​ ​as​ ​accuracy.

2.1. Integration​ ​with​ ​NIIT​ ​Technologies


NIIT​ ​Limited​​ ​is​ ​an​ ​Indian​ ​Multinational​ ​company​ ​that​ ​offers​ ​learning
management​ ​and​ ​training​ ​delivery​​ ​solutions​​ ​to​ ​corporations,
institutions​ ​and​ ​individuals.​ ​NIIT​ ​also​ ​provide​ ​online​ ​video​ ​tutorial
courses.​ ​Our​ ​task​ ​was​ ​to​ ​integrate​ ​with​ ​their​ ​platform​ ​so​ ​that​ ​after
watching​ ​the​ ​video​ ​tutorials​ ​from​ ​their​ ​platform,​ ​list​ ​of​ ​relevant
practice​ ​sets​ ​should​ ​be​ ​displayed​ ​and​ ​user​ ​can​ ​be​ ​redirected​ ​to​ ​our
platform​ ​without​ ​any​ ​need​ ​of​ ​ ​login.

2.2. Content​ ​management​ ​Module​ ​for​ ​platform


The​ ​task​ ​was​ ​to​ ​design​ ​and​ ​develop​ ​one​ ​module​ ​for​ ​teacher​ ​account​ ​so
that​ ​teacher​ ​can​ ​add​ ​video​ ​or​ ​ebook​ ​content​ ​for​ ​students​ ​on​ ​some
particular​ ​subject​ ​or​ ​topic.​ ​This​ ​will​ ​be​ ​helpful​ ​for​ ​students​ ​to
understand​ ​the​ ​topics.

2.3. Computerized​ ​Adaptive​ ​Tests


Computerized​ ​adaptive​ ​tests​ ​(CATs)​ ​are​ ​a​ ​sophisticated​ ​method​ ​of​ ​test
delivery​ ​based​ ​on​ ​item​ ​response​ ​theory​ ​(IRT).​ ​They​ ​operate​ ​by

 
Summer​ ​Internship​ ​|​ ​Amandeep​ ​Sachan​ ​|​ ​MyPerfectice 
9

adapting​ ​both​ ​the​ ​difficulty​​ ​and​ ​quantity​​ ​of​ ​items​ ​seen​ ​by​ ​each
examinee.

● Difficulty

Most​ ​characterizations​ ​of​ ​adaptive​ ​testing​ ​focus​ ​on​ ​how​ ​item


difficulty​ ​is​ ​matched​ ​to​ ​examinee​ ​ability.​ ​High​ ​ability
examinees​ ​receive​ ​more​ ​difficult​ ​items,​ ​while​ ​low​ ​ability
examinees​ ​receive​ ​easier​ ​items,​ ​which​ ​has​ ​important​ ​benefits​ ​to
the​ ​student​ ​and​ ​the​ ​organization.

● Quantity
A​ ​less​ ​publicized​ ​facet​ ​of​ ​adaptation​ ​is​ ​the​ ​number​ ​of​ ​items.
Adaptive​ ​tests​ ​can​ ​be​ ​designed​ ​to​ ​stop​ ​when​ ​certain
psychometric​ ​criteria​ ​are​ ​reached,​ ​such​ ​as​ ​a​ ​specific​ ​level​ ​of
score​ ​precision.

Our​ ​objective​ ​was​ ​to​ ​make​ ​our​ ​assessment​ ​platform​ ​more​ ​intelligent.
Instead​ ​of​ ​way​ ​of​ ​presenting​ ​questions​ ​to​ ​students,​ ​this​ ​method
presents​ ​next​ ​question​ ​on​ ​the​ ​basis​ ​of​ ​response​ ​and​ ​difficulty​ ​of
previous​ ​questions​ ​shown​ ​to​ ​user.

 
Summer​ ​Internship​ ​|​ ​Amandeep​ ​Sachan​ ​|​ ​MyPerfectice 
10

3. LITERATURE​ ​REVIEW
3.1. Application​ ​Programming​ ​Interface
3.1.1. Application​ ​program​ ​interface​ ​(API)​ ​is​ ​a​ ​set​ ​of​​ ​routines​,
protocols​,​ ​and​ ​tools​ ​for​ ​building​​ ​software​ ​applications​.​ ​An​ ​API
specifies​ ​how​ ​software​ ​components​ ​should​ ​interact.
3.1.2. APIs​ ​are​ ​used​ ​when​ ​programming​ ​graphical​ ​user​ ​interface
(​GUI​)​ ​components.​ ​A​ ​good​ ​API​ ​makes​ ​it​ ​easier​ ​to​ ​develop​ ​a
program​​ ​by​ ​providing​ ​all​ ​the​ ​building​ ​blocks.​ ​A​ ​programmer
then​ ​puts​ ​the​ ​blocks​ ​together.
3.1.3. There​ ​are​ ​many​ ​different​ ​types​ ​of​ ​APIs​ ​for​ ​operating​ ​systems,
applications​ ​or​ ​websites.​ ​Windows,​ ​for​ ​example,​ ​has​ ​many​​ ​API
sets​​ ​that​ ​are​ ​used​ ​by​ ​system​ ​hardware​ ​and​ ​applications​ ​—​ ​when
you​ ​copy​ ​and​ ​paste​ ​text​ ​from​ ​one​ ​application​ ​to​ ​another,​ ​it​ ​is
the​ ​API​ ​that​ ​allows​ ​that​ ​to​ ​work.
3.1.4. Popular​ ​Web​ ​APIs​ ​are​ ​Google​ ​APIs,​ ​YouTube​ ​APIs,​ ​Flickr
API,​ ​Twitter​ ​APIs​ ​and​ ​many​ ​more.

3.2. Token​ ​Based​ ​Authentication


3.2.1. The​ ​general​ ​concept​ ​behind​ ​a​ ​token-based​ ​authentication
system​ ​is​ ​simple.​ ​Allow​ ​users​ ​to​ ​enter​ ​their​ ​username​ ​and
password​ ​in​ ​order​ ​to​ ​obtain​ ​a​ ​token​ ​which​ ​allows​ ​them​ ​to​ ​fetch
a​ ​specific​ ​resource​ ​without​ ​using​ ​their​ ​username​ ​and​ ​password.
Once​ ​their​ ​token​ ​has​ ​been​ ​obtained,​ ​the​ ​user​ ​can​ ​offer​ ​the​ ​token
which​ ​offers​ ​access​ ​to​ ​a​ ​specific​ ​resource​ ​for​ ​a​ ​time​ ​period​ ​to
the​ ​remote​ ​site.
3.2.2. Token​ ​based​ ​authentication​ ​is​ ​prominent​ ​everywhere​ ​on​ ​the
web​ ​nowadays.​ ​With​ ​most​ ​every​ ​web​ ​company​ ​using​ ​an​ ​API,

 
Summer​ ​Internship​ ​|​ ​Amandeep​ ​Sachan​ ​|​ ​MyPerfectice 
11

tokens​ ​are​ ​the​ ​best​ ​way​ ​to​ ​handle​ ​authentication​ ​for​ ​multiple
users.
3.2.3. JSON​ ​Web​ ​Token​ ​is​ ​a​ ​JSON​-based​​ ​open​ ​standard​​ ​for​ ​creating
access​ ​tokens​​ ​that​ ​assert​ ​some​ ​number​ ​of​ ​claims.​ ​For​ ​example,
a​ ​server​ ​could​ ​generate​ ​a​ ​token​ ​that​ ​has​ ​the​ ​claim​ ​"logged​ ​in​ ​as
admin"​ ​and​ ​provide​ ​that​ ​to​ ​a​ ​client.​ ​The​ ​client​ ​could​ ​then​ ​use
that​ ​token​ ​to​ ​prove​ ​that​ ​it​ ​is​ ​logged​ ​in​ ​as​ ​admin.
3.2.4. There​ ​are​ ​some​ ​very​ ​important​ ​factors​ ​when​ ​choosing​ ​token
based​ ​authentication​ ​for​ ​your​ ​application.​ ​The​ ​main​ ​reasons​ ​for
tokens​ ​are:
● Stateless​ ​and​ ​scalable​ ​servers
● Mobile​ ​application​ ​ready
● Pass​ ​authentication​ ​to​ ​other​ ​applications
● Extra​ ​security

3.3. MVC​ ​Framework


The​ ​Model-View-Controller​ ​(MVC)​ ​is​ ​an​ ​architectural​ ​pattern​ ​that
separates​ ​an​ ​application​ ​into​ ​three​ ​main​ ​logical​ ​components:​ ​the
model,​ ​the​ ​view,​ ​and​ ​the​ ​controller.​ ​Each​ ​of​ ​these​ ​components​ ​are
built​ ​to​ ​handle​ ​specific​ ​development​ ​aspects​ ​of​ ​an​ ​application.​ ​MVC
is​ ​one​ ​of​ ​the​ ​most​ ​frequently​ ​used​ ​industry-standard​ ​web​ ​development
framework​ ​to​ ​create​ ​scalable​ ​and​ ​extensible​ ​projects.

3.3.1. MVC​ ​Components


Model​:The​ ​Model​ ​component​ ​corresponds​ ​to​ ​all​ ​the​ ​data
related​ ​logic​ ​that​ ​the​ ​user​ ​works​ ​with.​ ​This​ ​can​ ​represent​ ​either
the​ ​data​ ​that​ ​is​ ​being​ ​transferred​ ​between​ ​the​ ​View​ ​and
Controller​ ​components​ ​or​ ​any​ ​other​ ​business​ ​logic​ ​related​ ​data.
For​ ​example,​ ​a​ ​Customer​ ​object​ ​will​ ​retrieve​ ​the​ ​customer
information​ ​from​ ​the​ ​database,​ ​manipulate​ ​it​ ​and​ ​update​ ​it​ ​data
back​ ​to​ ​the​ ​database​ ​or​ ​use​ ​it​ ​to​ ​render​ ​data.

 
Summer​ ​Internship​ ​|​ ​Amandeep​ ​Sachan​ ​|​ ​MyPerfectice 
12

View​:​ ​The​ ​View​ ​component​ ​is​ ​used​ ​for​ ​all​ ​the​ ​UI​ ​logic​ ​of​ ​the
application.​ ​For​ ​example,​ ​the​ ​Customer​ ​view​ ​would​ ​include​ ​all
the​ ​UI​ ​components​ ​such​ ​as​ ​text​ ​boxes,​ ​dropdowns,​ ​etc.​ ​that​ ​the
final​ ​user​ ​interacts​ ​with.
Controller​:Controllers​ ​act​ ​as​ ​an​ ​interface​ ​between​ ​Model​ ​and
View​ ​components​ ​to​ ​process​ ​all​ ​the​ ​business​ ​logic​ ​and
incoming​ ​requests,​ ​manipulate​ ​data​ ​using​ ​the​ ​Model​ ​component
and​ ​interact​ ​with​ ​the​ ​Views​ ​to​ ​render​ ​the​ ​final​ ​output.

3.4. NoSQL​ ​Database


3.4.1. A​ ​NoSQL​ ​database​ ​provides​ ​a​ ​mechanism​ ​for​​ ​storage​​ ​and
retrieval​​ ​of​ ​data​ ​that​ ​is​ ​modeled​ ​in​ ​means​ ​other​ ​than​ ​the​ ​tabular
relations​ ​used​ ​in​​ ​relational​ ​databases​.​ ​Such​ ​databases​ ​have
existed​ ​since​ ​the​ ​late​ ​1960s,​ ​but​ ​did​ ​not​ ​obtain​ ​the​ ​"NoSQL"
moniker​ ​until​ ​a​ ​surge​ ​of​ ​popularity​ ​in​ ​the​ ​early​ ​twenty-first
century,​ ​triggered​ ​by​ ​the​ ​needs​ ​of​​ ​Web​ ​2.0​​ ​companies​ ​such​ ​as
Facebook​,​ ​Google​,​ ​and​​ ​Amazon.com​.
3.4.2. NoSQL​ ​databases​ ​are​ ​increasingly​ ​used​ ​in​​ ​big​ ​data​​ ​and
real-time​ ​web​​ ​applications.​ ​NoSQL​ ​systems​ ​are​ ​also​ ​sometimes
called​ ​"Not​ ​only​ ​SQL"​ ​to​ ​emphasize​ ​that​ ​they​ ​may​ ​support
SQL​-like​ ​query​ ​languages.

 
Summer​ ​Internship​ ​|​ ​Amandeep​ ​Sachan​ ​|​ ​MyPerfectice 
13

4. SOLUTION​ ​APPROACH
4.1. Tools​ ​and​ ​Web​ ​Technologies​ ​Used
4.1.1. Javascript
JavaScript​ ​(JS)​ ​is​ ​a​ ​lightweight,​ ​interpreted,​ ​programming
language​ ​with​ ​first-class​ ​functions.​ ​While​ ​it​ ​is​ ​most​ ​well-known
as​ ​the​ ​scripting​ ​language​ ​for​ ​Web​ ​pages,​ ​many​ ​non-browser
environments​ ​also​ ​use​ ​it,​ ​such​ ​as​ ​node.js​ ​and​ ​Apache​ ​CouchDB.
JS​ ​is​ ​a​ ​prototype​ ​based,​ ​multi-paradigm,​ ​dynamic​ ​scripting
language,​ ​supporting​ ​object-oriented,​ ​imperative,​ ​and
declarative​ ​(e.g.​ ​functional​ ​programming)​ ​styles.

4.1.2. Node.js
As​ ​an​ ​asynchronous​ ​event​ ​driven​ ​JavaScript​ ​runtime,​ ​Node​ ​is
designed​ ​to​ ​build​ ​scalable​ ​network​ ​applications.​ ​In​ ​the
following​ ​"hello​ ​world"​ ​example,​ ​many​ ​connections​ ​can​ ​be
handled​ ​concurrently.​ ​Upon​ ​each​ ​connection​ ​the​ ​callback​ ​is
fired,​ ​but​ ​if​ ​there​ ​is​ ​no​ ​work​ ​to​ ​be​ ​done​ ​Node​ ​is​ ​sleeping.
Node​ ​is​ ​similar​ ​in​ ​design​ ​to,​ ​and​ ​influenced​ ​by,​ ​systems​ ​like
Ruby’s​ ​Eventmachine​ ​or​ ​Python’s​ ​Twisted.​ ​Node​ ​takes​ ​the
event​ ​model​ ​a​ ​bit​ ​further,​ ​it​ ​presents​ ​an​ ​event​ ​loop​ ​as​ ​a​ ​runtime
construct​ ​instead​ ​of​ ​as​ ​a​ ​library.​ ​In​ ​other​ ​systems​ ​there​ ​is
always​ ​a​ ​blocking​ ​call​ ​to​ ​start​ ​the​ ​event-loop.​ ​Typically
behavior​ ​is​ ​defined​ ​through​ ​callbacks​ ​at​ ​the​ ​beginning​ ​of​ ​a
script​ ​and​ ​at​ ​the​ ​end​ ​starts​ ​a​ ​server​ ​through​ ​a​ ​blocking​ ​call​ ​like
EventMachine::run().​ ​In​ ​Node​ ​there​ ​is​ ​no​ ​such
start-the-event-loop​ ​call.​ ​Node​ ​simply​ ​enters​ ​the​ ​event​ ​loop
after​ ​executing​ ​the​ ​input​ ​script.​ ​Node​ ​exits​ ​the​ ​event​ ​loop​ ​when
there​ ​are​ ​no​ ​more​ ​callbacks​ ​to​ ​perform.​ ​This​ ​behavior​ ​is​ ​like
browser​ ​JavaScript​ ​at​ ​the​ ​event​ ​loop​ ​is​ ​hidden​ ​from​ ​the​ ​user.

 
Summer​ ​Internship​ ​|​ ​Amandeep​ ​Sachan​ ​|​ ​MyPerfectice 
14

HTTP​ ​is​ ​a​ ​first​ ​class​ ​citizen​ ​in​ ​Node,​ ​designed​ ​with​ ​streaming
and​ ​low​ ​latency​ ​in​ ​mind.​ ​This​ ​makes​ ​Node​ ​well​ ​suited​ ​for​ ​the
foundation​ ​of​ ​a​ ​web​ ​library​ ​or​ ​framework.

4.1.3. AngularJS
HTML​ ​is​ ​great​ ​for​ ​declaring​ ​static​ ​documents,​ ​but​ ​it​ ​falters
when​ ​we​ ​try​ ​to​ ​use​ ​it​ ​for​ ​declaring​ ​dynamic​ ​views​ ​in
web-applications.
AngularJS​ ​lets​ ​you​ ​extend​ ​HTML​ ​vocabulary​ ​for​ ​your
application.​ ​The​ ​resulting​ ​environment​ ​is​ ​extraordinarily
expressive,​ ​readable,​ ​and​ ​quick​ ​to​ ​develop.
AngularJS​ ​is​ ​a​ ​toolset​ ​for​ ​building​ ​the​ ​framework​ ​most​ ​suited​ ​to
your​ ​application​ ​development.​ ​It​ ​is​ ​fully​ ​extensible​ ​and​ ​works
well​ ​with​ ​other​ ​libraries.​ ​Every​ ​feature​ ​can​ ​be​ ​modified​ ​or
replaced​ ​to​ ​suit​ ​your​ ​unique​ ​development​ ​workflow​ ​and​ ​feature
needs.

4.1.4. Express.js
Express​ ​is​ ​a​ ​minimal​ ​and​ ​flexible​ ​Node.js​ ​web​ ​application
framework​ ​that​ ​provides​ ​a​ ​robust​ ​set​ ​of​ ​features​ ​for​ ​web​ ​and
mobile​ ​applications.With​ ​a​ ​myriad​ ​of​ ​HTTP​ ​utility​ ​methods​ ​and
middleware​ ​at​ ​your​ ​disposal,​ ​creating​ ​a​ ​robust​ ​API​ ​is​ ​quick​ ​and
easy.​ ​Express​ ​provides​ ​a​ ​thin​ ​layer​ ​of​ ​fundamental​ ​web
application​ ​features,​ ​without​ ​obscuring​ ​Node.js​ ​features​ ​that
you​ ​know​ ​and​ ​love.

4.1.5. XMLHTTPREQUEST
XMLHttpRequest​ ​is​ ​an​ ​API​ ​that​ ​provides​ ​client​ ​functionality
for​ ​transferring​ ​data​ ​between​ ​a​ ​client​ ​and​ ​a​ ​server.​ ​It​ ​provides
an​ ​easy​ ​way​ ​to​ ​retrieve​ ​data​ ​from​ ​a​ ​URL​ ​without​ ​having​ ​to​ ​do​ ​a
full​ ​page​ ​refresh.​ ​This​ ​enables​ ​a​ ​Web​ ​page​ ​to​ ​update​ ​just​ ​a​ ​part
of​ ​the​ ​page​ ​without​ ​disrupting​ ​what​ ​the​ ​user​ ​is​ ​doing.
XMLHttpRequest​ ​is​ ​used​ ​heavily​ ​in​ ​AJAX​ ​programming.
 
Summer​ ​Internship​ ​|​ ​Amandeep​ ​Sachan​ ​|​ ​MyPerfectice 
15

XMLHttpRequest​ ​was​ ​originally​ ​designed​ ​by​ ​Microsoft​ ​and


adopted​ ​by​ ​Mozilla,​ ​Apple,​ ​and​ ​Google.​ ​It’s​ ​now​ ​being
standardized​ ​at​ ​the​ ​WHATWG.​ ​Despite​ ​its​ ​name,
XMLHttpRequest​ ​can​ ​be​ ​used​ ​to​ ​retrieve​ ​any​ ​type​ ​of​ ​data,​ ​not
just​ ​XML,​ ​and​ ​it​ ​supports​ ​protocols​ ​other​ ​than​ ​HTTP​ ​(including
file​ ​and​ ​ftp).

4.1.6. Database​:​ ​MongoDB

4.1.7. version​ ​Control​:​ ​Bitbucket(Git)

4.1.8. JavaScript​ ​IDE​:​ ​Visual​ ​Studio​ ​Code

4.2. Solution​ ​Methodology


4.2.1. Integration​ ​with​ ​NIIT​ ​Technologies
In​ ​order​ ​to​ ​complete​ ​this​ ​task,​ ​I​ ​first​ ​designed​ ​working​ ​model​ ​of
how​ ​things​ ​will​ ​work​ ​so​ ​that​ ​it​ ​become​ ​easy​ ​to​ ​integrate​ ​with
their​ ​platform.
Step​ ​1:​ ​Scope​ ​of​ ​work
We​ ​firstly​ ​explored​ ​the​ ​scope​ ​of​ ​work​ ​that​ ​can​ ​be​ ​done​ ​to
accomplish​ ​this​ ​task.​ ​We​ ​decided​ ​the​ ​scope​ ​of​ ​the
integration​ ​effort​ ​–​ ​efforts​ ​can​ ​be​ ​carried​ ​out​ ​in​ ​phases
based​ ​on​ ​understanding​ ​and​ ​agreement​ ​between​ ​both
companies.​ ​Priority​ ​on​ ​the​ ​tasks​ ​was​ ​defined​ ​based​ ​on
business​ ​value,​ ​availability​ ​of​ ​resources,​ ​timeline​ ​etc.​ ​and
will​ ​be​ ​decided​ ​by​ ​both​ ​teams.

Step​ ​2:​ ​Functional​ ​Overview


Then​ ​we​ ​created​ ​the​ ​functional​ ​overview​ ​for​ ​this​ ​whole
process​ ​which​ ​can​ ​be​ ​used.

 
Summer​ ​Internship​ ​|​ ​Amandeep​ ​Sachan​ ​|​ ​MyPerfectice 
16

Figure​ ​4.1:​ ​Functional​ ​overview​ ​for​ ​integration

Step​ ​3:​ ​Technical​ ​Overview


This​ ​was​ ​one​ ​of​ ​the​ ​most​ ​important​ ​step​ ​for​ ​me​ ​as​ ​I​ ​had
to​ ​design​ ​the​ ​schema​ ​and​ ​workflow​ ​of​ ​backend.​ ​It
contains​ ​the​ ​information​ ​about​ ​the​ ​existing​ ​APIs​ ​in​ ​both
the​ ​platforms​ ​and​ ​the​ ​new​ ​APIs​ ​that​ ​needs​ ​to​ ​be​ ​added​ ​to
make​ ​this​ ​integration​ ​successful.

Figure​ ​4.2:​ ​Technical​ ​overview​ ​for​ ​integration

Step​ ​4:​ ​Development​ ​of​ ​Application​ ​Programming​ ​Interface


Then​ ​we​ ​started​ ​identifying​ ​existing​ ​APIs​ ​and​ ​creating​ ​new
APIs​ ​using​ ​Express.js​ ​(Node.js​ ​framework).​ ​I​ ​used​ ​JSON​ ​Web
token​ ​for​ ​authentication​ ​purpose.
Some​ ​of​ ​the​ ​APIs​ ​were:

 
Summer​ ​Internship​ ​|​ ​Amandeep​ ​Sachan​ ​|​ ​MyPerfectice 
17

http://www.myperfectice.com/api/AttemptSummary
http://www.myperfectice.com/​api/gradesSubjectsTopics
http://www.myperfectice.com/​api/practiceSet
http://www.myperfectice.com/api/AttemptSummary
http://www.myperfectice.com/api/tokenInfo
http://www.myperfectice.com/api/niitUser
http://www.myperfectice.com/api/checkNiitUser

Step​ ​5:​ ​Testing


After​ ​this,​ ​testing​ ​team​ ​tested​ ​this​ ​task​ ​regressively​ ​so​ ​that​ ​it
would​ ​not​ ​create​ ​any​ ​problem​ ​in​ ​Production.

4.2.2. Content​ ​management​ ​Module​ ​for​ ​platform


Step​ ​1:​ S
​ cope​ ​of​ ​work
Objective​ ​was​ ​to​ ​provide​ ​tutorials​ ​of​ ​topics​ ​of​ ​which
student​ ​has​ ​attempted​ ​the​ ​questions,​ ​so​ ​that​ ​they​ ​can
learn​ ​from​ ​their​ ​mistakes.​ ​Finally​ ​it​ ​was​ ​decided​ ​that,
teacher​ ​will​ ​add​ ​content​ ​for​ ​the​ ​various​ ​topics​ ​and​ ​it​ ​will
be​ ​shown​ ​to​ ​the​ ​student​ ​after​ ​he/she​ ​has​ ​attempted​ ​the
test.

Step​ ​2​ ​:​ ​Technical​ ​Design


Firstly​ ​I​ ​designed​ ​the​ ​schema​ ​to​ ​store​ ​this​ ​feature​ ​in​ ​the
database.​ ​Then​ ​I​ ​came​ ​up​ ​with​ ​the​ ​following​ ​schema:

var​ ​ContentSchema​ ​=​ ​new​ ​Schema({ 


​ ​ ​ ​user:​ ​{​ ​type:​ ​Schema.Types.ObjectId,​ ​ref: 
'User',​ ​required:​ ​true​ ​}, 
​ ​ ​ ​grade:​ ​{​ ​type:​ ​Schema.Types.ObjectId,​ ​ref: 
'Grade',​ ​required:​ ​true​ ​}, 
​ ​ ​ ​subject:​ ​{​ ​type:​ ​Schema.Types.ObjectId,​ ​ref: 
'Subject',​ ​required:​ ​true​ ​}, 

 
Summer​ ​Internship​ ​|​ ​Amandeep​ ​Sachan​ ​|​ ​MyPerfectice 
18

​ ​ ​ ​topic:​ ​{​ ​type:​ ​Schema.Types.ObjectId,​ ​ref: 


'Topic',​ ​required:​ ​true​ ​}, 
​ ​ ​ ​description:​ ​{​ ​type:​ ​String,​ ​default:​ ​''​ ​}, 
​ ​ ​ ​link:​ ​{​ ​type:​ ​String,​ ​default:​ ​''​ ​}, 
​ ​ ​ ​pathDir:​ ​{​ ​type:​ ​String​ ​}, 
​ ​ ​ ​filePath:​ ​{​ ​type:​ ​String​ ​}, 
​ ​ ​ ​contentType:​ ​{ 
​ ​ ​ ​ ​ ​ ​ ​type:​ ​String, 
​ ​ ​ ​ ​ ​ ​ ​enum:​ ​['video',​ ​'ebook',​ ​'other'], 
​ ​ ​ ​ ​ ​ ​ ​default:​ ​'other' 
​ ​ ​ ​}, 
​ ​ ​ ​createdAt:​ ​{​ ​type:​ ​Date,​ ​default:​ ​Date.now​ ​}, 
​ ​ ​ ​updatedAt:​ ​{​ ​type:​ ​Date,​ ​default:​ ​Date.now​ ​} 
},​ ​{​ ​timestamps:​ ​true​ ​}); 

Step​ ​3:​ ​Visual​ ​Design


It​ ​comprises​ ​of​ ​how​ ​content​ ​management​ ​part​ ​will​ ​look
like.​ ​Following​ ​design​ ​was​ ​finalized.

​ ​Figure​ ​4.3:​ ​Visual​ ​Design​ ​for​ ​Content​ ​Management​ ​Module

4.2.3. Computerized​ ​Adaptive​ ​Tests

Step​ ​1:​ ​Scope​ ​of​ ​work


 
Summer​ ​Internship​ ​|​ ​Amandeep​ ​Sachan​ ​|​ ​MyPerfectice 
19

In​ ​this​ ​task,​ ​objective​ ​was​ ​to​ ​create​ ​the​ ​adaptive​ ​practice
set​ ​for​ ​student.​ ​Adaptive​ ​test​ ​should​ ​be​ ​created​ ​on​ ​the
basis​ ​of​ ​weak​ ​topics​ ​of​ ​student.​ ​The​ ​display​ ​of​ ​questions
should​ ​not​ ​be​ ​sequential​ ​unlike​ ​regular​ ​practice​ ​test.
Difficulty​ ​level​ ​of​ ​next​ ​question​ ​should​ ​be​ ​displayed​ ​on
the​ ​basis​ ​of​ ​the​ ​response​ ​and​ ​difficulty​ ​of​ ​previous
question.​ ​This​ ​way​ ​practice​ ​set​ ​will​ ​adapt​ ​itself​ ​as​ ​per
consistency​ ​level​ ​of​ ​student.

Step​ ​2:​ ​Technical​ ​Work


Firstly​ ​I​ ​wrote​ ​MongoDB​ ​queries​ ​to​ ​figure​ ​out​ ​the​ ​topics
on​ ​which​ ​student​ ​is​ ​performing​ ​poor.
Then​ ​I​ ​developed​ ​API​ ​to​ ​generate​ ​adaptive​ ​test​ ​and​ ​store
it​ ​in​ ​the​ ​database.
Next​ ​I​ ​wrote​ ​logical​ ​part​ ​of​ ​the​ ​code,​ ​so​ ​that​ ​the​ ​question
should​ ​be​ ​displayed​ ​as​ ​per​ ​our​ ​requirement.

Step​ ​3:​ ​Visual​ ​Design


Following​ ​designs​ ​were​ ​adopted​ ​to​ ​convert​ ​it​ ​into​ ​a
working​ ​application:

Figure​ ​4.4:​ ​Test​ ​instructions​ ​for​ ​Adaptive​ ​test​ ​module


 
Summer​ ​Internship​ ​|​ ​Amandeep​ ​Sachan​ ​|​ ​MyPerfectice 
20

Figure​ ​4.5:​ ​Screen​ ​displaying​ ​question​ ​for​ ​Adaptive​ ​test​ ​module

 
Summer​ ​Internship​ ​|​ ​Amandeep​ ​Sachan​ ​|​ ​MyPerfectice 
21

5. RESULT
I​ ​have​ ​successfully​ ​completed​ ​the​ ​projects​ ​fulfilling​ ​the​ ​specifications,​ ​provided​ ​by
the​ ​company​ ​and​ ​the​ ​completed​ ​project​ ​was​ ​under​ ​the​ ​guidance​ ​of​ ​Perfectice.
The​ ​integration​ ​done​ ​with​ ​the​ ​NIIT​ ​was​ ​tested​ ​thoroughly​ ​for​ ​consistency​ ​and
rigidity.​ ​It​ ​would​ ​definitely​ ​fulfill​ ​the​ ​requirements​ ​and​ ​objectives​ ​that​ ​it​ ​was​ ​meant
to​ ​and​ ​will​ ​helpful​ ​the​ ​students​ ​to​ ​smoothly​ ​switch​ ​between​ ​both​ ​the​ ​platforms.
The​ ​Content​ ​Management​ ​module​ ​was​ ​also​ ​successfully​ ​integrated​ ​into​ ​the​ ​main
code​ ​base​ ​so​ ​that​ ​it​ ​helps​ ​student​ ​to​ ​learn​ ​the​ ​contents​ ​provided​ ​by​ ​their​ ​teachers.
Computerized​ ​Adaptive​ ​Testing​ ​was​ ​also​ ​implemented​ ​successfully​ ​in​ ​the​ ​platform
so​ ​that​ ​the​ ​user​ ​can​ ​practice​ ​on​ ​the​ ​basis​ ​of​ ​his/her​ ​weak​ ​areas​ ​and​ ​questions​ ​should
be​ ​displayed​ ​on​ ​the​ ​basis​ ​of​ ​correctness​ ​of​ ​previous​ ​questions.
All​ ​the​ ​given​ ​tasks​ ​were​ ​successfully​ ​deployed​ ​into​ ​the​ ​main​ ​code​ ​of​ ​MyPerfectice.

 
Summer​ ​Internship​ ​|​ ​Amandeep​ ​Sachan​ ​|​ ​MyPerfectice 
22

6. CONCLUSION
The​ ​knowledge​ ​acquired​ ​through​ ​continuous​ ​learning​ ​at​ ​the​ ​institute
definitely​ ​helped​ ​in​ ​implementing​ ​the​ ​required​ ​tasks​ ​easily.​ ​The​ ​experience
gained​ ​led​ ​the​ ​mind​ ​to​ ​curiously​ ​investigate​ ​the​ ​know-hows​ ​of​ ​different
software,​ ​aiming​ ​at​ ​finding​ ​the​ ​most​ ​optimal​ ​solution.​ ​The​ ​skills
demonstrated​ ​throughout​ ​were​ ​commended​ ​by​ ​the​ ​team​ ​and​ ​the​ ​project​ ​head
as​ ​the​ ​result​ ​produced​ ​were​ ​on​ ​time.​ ​As​ ​it​ ​was​ ​a​ ​project​ ​that​ ​was​ ​independent
of​ ​the​ ​other​ ​task​ ​in​ ​the​ ​company​ ​it​ ​helped​ ​me​ ​grow​ ​in​ ​this​ ​field,The​ ​main
objectives​ ​of​ ​the​ ​internship​ ​task​ ​to​ ​met​ ​through​ ​and​ ​all​ ​the​ ​given​ ​problems
were​ ​solved​ ​increasing​ ​the​ ​productivity​ ​of​ ​the​ ​academic​ ​department​ ​and​ ​task
completion​ ​in​ ​much​ ​less​ ​time.​ ​I​ ​also​ ​learned​ ​many​ ​new​ ​different
technologies​ ​and​ ​tools​ ​which​ ​helped​ ​in​ ​making​ ​the​ ​modules​ ​more​ ​efficient.
Also​ ​the​ ​workload​ ​on​ ​the​ ​server​ ​was​ ​reduced​ ​by​ ​making​ ​more​ ​optimization
in​ ​the​ ​algorithms​ ​used.

 
Summer​ ​Internship​ ​|​ ​Amandeep​ ​Sachan​ ​|​ ​MyPerfectice 
23

7. REFERENCES
7.1. https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest
7.2. https://developer.chrome.com/extensions/overview
7.3. https://developer.chrome.com/extensions/api-index
7.4. http://www.html5rocks.com/en/tutorials/security/content-security-poli
cy
7.5. https://en.wikipedia.org/wiki/Cross-site-scripting
7.6. https://www.owasp.org/index.php/Cross-site-Scripting(XSS)
7.7. https://developer.chrome.com/apps/app-external
7.8. http://expressjs.com/
7.9. http://extensionizr.com
7.10. https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/
Sending-and-Receiving-Binary-Data
7.11. https://scotch.io/tag/angular-js
7.12. http://www.stackoverflow.com/
7.13. http://www.assess.com/adaptive-testing/
7.14. https://en.wikipedia.org/wiki/Computerized_adaptive_testing
7.15. http://edglossary.org/computer-adaptive-test/
7.16. https://scotch.io/tutorials/build-a-restful-api-using-node-and-express-
4

 
Summer​ ​Internship​ ​|​ ​Amandeep​ ​Sachan​ ​|​ ​MyPerfectice