South India Trip – Kerala, Kanyakumari & Rameshwaram

KERALA – GODS OWN COUNTRY – As the tagline depicts its  the place owned by GOD. Its filled with nature and one can say its heaven. Name the thing and its present in Kerala. You want Beach? Backwater? Its there. Mountain? Forest? Hill Station? yup its present.

It was my first trip to South India(Kerala+Kanyakumari+Rameshwaram) but was one of the best trip I ever had. So I thought to write in detail about it. I would share each and every details in this post. All the places, hotels, rates, food, photos, timings, driver, taxi etc. So this post might get lengthy. But will also highlight the important points for those who just need summary or particular details.

We were 4 friends and our trip was of 10 days. We started from Pune. The places we visited were:

Calicut, Waynand, Kochi, Munnar, Allepey, Kovalam, Kanyakumari, Rameshwaram.

 

Day1: Arrived to Calicut(Kozikode) and reach Wayanand

  • We reached Calicut at morning 9 am. We already had taxi booked. We started journey towards Waynand.

 

  • Taxi Details:
    ============================================
    Car type: Ford Aspire
    Driver name: Mithin
    Contact: +91 8156985496
    Journey Detail: Hired from Kozikode-Waynand-Kozikode
    =============================================

Waynand

  • Wayanad is a rural district in Kerala state, southwest India. In the east, the Wayanad Wildlife Sanctuary is a lush, forested region with areas of high altitude, home to animals including Asiatic elephants, tigers, leopards and egrets.
  • Waynand is famous for its forest stay. One can look for homestays here. You can also search for Tree House stay in Vythri Village.

 

Places to see:

  1. Banasura Dam

    – One need to trek for approx 2km i.e 10 mins to reach from base till Dam.
    – There is a mini bus service available. Rs 30 per person.
    – Also hire a jeep if you are in group. Rs 250 per jeep.
    – There is a small market at base.
    – Boating is available here. Lunch time: 2-3 pm
    Food: Pineapple dipped in vinegar tastes yummy. Do try without fail.
  2. Pokodo Lake
    Entry Fee: Rs 20 per person
    – A small aquarium(not worth to see) – Rs.5 per person
    – Fish spa for Rs 50 
  3.  Sochipara Waterfall
    – Entry: Rs 50
  4.  Chembra Peak & Eddekal Caves
    – We were not able to visit this place due to time constraint.
    – Make sure you visit this place before 4pm. Because it gets closed by 5pm
  5. 5km Ziplin
    – Rs 250 per person
  •  Food at Waynand
    – Pure veg hotels are available. But people may find difficulties with the taste of food mostly vegetarians 🙂
    – Hotel Sangam

Day 2: Back to Kozikode and train towards Kochi

– We reached Calicut by 8pm. Had Dinner and went to station as we had train at 11pm towards Kochi.

IF: Due to cold in monsoon and winter, Hotels in Kerala serve Hot Medicinal Water(pink water).

 

Day3: Reach Kochi and start journey towards Munnar

– We reached Kochi by 5am.
– Had awesome South Indian Breakfast(Meduwada, Upma) at station
– Again Taxi was already booked.
– Started journey towards Munnar
– Had Snacks at Hotel Saddya but food was costly and not up to the mark.

Taxi Details:
==============
Car type: Toyota Etios
Driver name: Mr. Roy
Contact:
Journey Detail: Hired from Kochi-Munnar-Allepy-Kochi
================

Day 4 & 5: Munnar

– Awesome road and Breathtaking view with small waterfalls after every 1km journey towards Munnar. Please note we visited during rainy season in end of August.
– We stayed at Hotel Fort Munnar. Its situated 20km from Munnar town near Club Mahindra Resort.
– A hill station and former resort for the British Raj elite, it’s surrounded by rolling hills dotted with tea plantations established in the late 19th century.

Hotel: Fort Munnar

– Unlimited Breakfast

Places to visit:

1) Cultural Events: Kathak & Martial Arts

– Rs 250 for Kathak
– Rs 250 for Martial Arts

– A must to see event. This made me proud as an Indian and respect towards our Indian culture and tradition.

2) Tea Garden
– Munnar is a hub of Tea and Tea products.

3) Photo Point
– Entry fee Rs 20 pp
– You can click pictures at this point in center of Tea Gardens.

4) Tea Factory
– Entry Fee: Rs 200 pp
– It shows detail process of tea production
– Please spare 2-3 hrs for this place.

5) Elephant Ride
– Your trip is not complete if you dont meet/ride Elephants in Kerala.
– Here there is a short ride i.e a round on Elephant.
– Fee: Rs 400 per person
– Rs 250 if you want photographs with Elephant. There will be a dedicated photographer that will take 15-20 pics of you when you are riding the Elephant.

– If you want to bathe/wash elephant and offer food to elephant with your hand then you need to book a time slot in advance and it might cost around 3000.

6) Meduputty Dam
– Free entry
– Nice Dam view.
– A small market with small tea stalls and maggi joints
– You can buy a soveneir from here.

7) Wondervalley OR Adventure Park
– This is for kids.
– You need a half or one day for this park.
– We didnt visited but my sister visited this place.
– It has camel ride also.

8) Choclate Factory
– Do visit this factory.
– You can buy different varieties of choclate and its product.
– Choclate ranges from Rs 400-700 per KG
– White, Dark, Milk, Roasted Almond, Fruit Nut, Cashew, Rum, Truffle choclates etc are available.

9) Munnar Market
– Its a market situated in Munnar Town.
– Munnar is famous for Indian Spices and choclate, Tea and Coffee.
– Choclate shops, Spices shops and Tea and Coffee shops.

 

10) Food
– We had delicious veg food after 4 days in south in Mahavir Bhojnalaya in munnar town.
– Many veg restaurants are available here.

 

Day 6: Munnar to Allepy(Alappuzha)
======
– We reached Allepy at 4 pm.

Allepey
====
– Alappuzha (or Alleppey) is a city on the Laccadive Sea in the southern Indian state of Kerala. It’s best known for houseboat cruises along the rustic Kerala backwaters, a network of tranquil canals and lagoons.

– Places to visit in Allepey

1) House Boat
– we didnt stayed at House Boat but my sister stayed and gave good feedback about it.
– Hundred’s of Boat with AC rooms are available here.
– Rate: 7000 to 8000 per night
– Homemade Breakfast, Lunch and dinner included.
– Visit different islands on the same boat.
– Please note : Boat stops moving after 5 pm. So they park the boat at one place till next morning.

2) Citrus Hotel
– We stayed at Citrus Hotel.
– Hotel is situated on an island. So you will be taken in boat to hotel from the pickup point.
– Awsome Hotel with superb views and service.
– They have two room views: Paddy field view and Backwater view
– We had complimentary foot/Head spa for 10mins
– Unlimited Breakfast or Rs 350 pp
– Sujit(Manager) was really a nice person and provided the best service to us.

3) Boat Ride for 3 hrs
– If you dont stay in House Boat, you can take a boat ride that is of 3 hrs.
– Price: Rs 2500 per boat
– Visit all islands and points

 

Day 7: Allepy to Kochi
– Reached Kochi at 7 pm

Lullu International Mall
========================
– This is Asia’s 2nd Largest Mall
– The Hypercity of this mall is a must visit.
– The food you name will be available at this Hypercity.

Coconut Oil Banana Chips/ JackFruit Chips
=============================
– Fresh Banana chips are made in front of you Hot & Crispy.
– Rs 300-400 per kg

Athirapalli Waterfalls
=========================
– The famous waterfall in Bahubali Movie.
– Timing: Visit before 4 pm.
– We were late and were not able to view it from near.

 

Day 7: Kochi to Kanyakumari
Day 8: Kanyakumari
Day 9: Rameshwaram
Day 10: Kanyakumari to Kovalam

Kovalam
======
– Kovalam is a small coastal town in the southern Indian state of Kerala, south of Thiruvananthapuram

Poovar Backwater
=================
– Rs: 2500 speed boat(4-6 people) for 2 hour
– Golden Beach
– Floating Restaurants
– Canals
– Bird Watching: Kingfisher, Eagle, Duck etc
– Tamil Nadu & Kerala border

 

Trivandrum Airport: Flight Back to Pune

 

 

Calicut/Kozikode
– Paragon Hotel for non-veg
– Medicinal drink

-Waynand
Banasura dam
Pokodo lake, aquarium, fish spa
Thaaza Hotel
hotel sangam
Chembra Peak
Sochipara Waterfall,
Eddekal Caves

Pineapple dipped in vinegar

– Munnar
Fort Munnar
Cultural Events: Kathak & Martial Arts
Kerala Massage
tea Garden
Photo point Rs 20
Tea Factory: Rs200
Elephant ride: Rs250 + Rs 250 for photo
Meduputty Dam
Wondervalley

Mahavir Bhojnalaya

 

– Allepy
House Boat
Citrus Hotel
Boat Ride for 3 hrs

– Kochi
Lulu Mall
Banana Wafers
Athirapalli Waterfalls

 

– Kovalam
Poovar Backwater

-kanyakumari

– Rameshwaram
Padmanabham Bridge
Dhanushkodi
Achai Munnai
APJ Abdul kalam memorial

 

ES6

  • LET
    – block scoping
    – Accessing a let-declared variable earlier than its let.. declaration/initialization causes an error, whereas with var declarations the ordering doesn’t matter (except
    stylistically)
    – This ReferenceError from accessing too-early let -declared references is technically called a TDZ (temporal dead zone) error


if (typeof a === "undefined") {
console.log( "cool" );
}
if (typeof b === "undefined") {
// ..
}
// ReferenceError!
// ..
let b;

  • let + for
    – The let i in the for header declares an i not just for the for loop itself, but it redec‐
    lares a new i for each iteration of the loop. That means that closures created inside
    the loop iteration close over those per-iteration variables the way you’d expect.

var funcs = [];
for (let i = 0; i < 5; i++) {
funcs.push( function(){
console.log( i );
} );
}
funcs[3]();
// 3


var funcs = [];
for (var i = 0; i < 5; i++) {
let j = i;
funcs.push( function(){
console.log( j );
} );
}
funcs[3]();
// 3

  •  Const
    – immutable value
    – but object inside it can be changed.
    – When we say “`const` variables are immutable” it only means that the variable always has to point to the same thing. It does not mean than the thing it points to can’t change over time.
    – If we want the value of foo to be immutable we have to freeze it using Object.freeze(… ) .


'use strict';
/* // Declaring a const variable
const foo; // SyntaxError: Missing initializer in const declaration
*/
/* // Declaring a const variable
const moo = 1;
moo = 2; // TypeError: `foo` is read-only
*/
/* // Block Scoping
function func() {
if (true) {
const tmp = 123;
}
console.log(tmp); // Uncaught ReferenceError: tmp is not defined
}
func();
*/const foo = Object.freeze({});
foo.prop = 1;
console.log(foo.prop);

  • Block Scope
  • Immutable var
  • Multiline String
  • Variable Substitution

    let name = "asim";
    let multi = `
    hello
    world
    my
    name
    is
    ${name}
    `;
    console.log(multi);
  •  Fat Arrow Functions

    setTimeout(function() {
    console.log("setTimeout called!");
    }, 1000);


setTimeout(() => console.log("setTimeout called!"), 1000);


let add = function(a,b) {
return a + b;
};

let add = (a,b) => a + b;//fat arrow syntax if it is on one line, the statement gets returned automatically without the need to use the return keyword.

  • Destructuring

–  Destructuring is a way of extracting values into variables from data stored in objects and arrays.

  1. Object Destructuring
    const obj = {first: 'Asim', last: 'Hussain', age: 39 };

const f = obj.first;
const l = obj.last;
console.log(f); // Asim
console.log(l); // Hussain


const {first: f, last: l} = obj;
console.log(f); // Asim
console.log(l); // Hussain

 

  • {first: f, last: l} describes a pattern , a set of rules for how we want to
    destructure an object.

// {prop} is short for {prop: prop}
const {first, last} = obj;
console.log(first); // Asim
console.log(last); // Hussain

2. Array Destructuring

-Array destructuring works in a similar way except it extracts based of the index in
the array, like so:

const arr = ['a', 'b'];
const [x, y] = arr;
console.log(x); // a
console.log(y); // b

 

3. Function Parameter Destructuring

  • One really useful use case for destructuring is in function parameters.

function f(options) {
console.log(options.x);
}
f({x:1}); // 1

Now we can define the function parameter list as an object destructure pattern , like
so:function f({x}) {
console.log(x); // Refer to x directly
}
f({x:1});

  • Notice that in the function body above we can refer to x directly, we don’t have to
    refer to it through an object property like options.x .
  • //plnkr.co/edit/v6BS0PekPcDZN0QpV8wN?p=preview

 

  • For & ForEach

  • For In

    – The for-in loop is designed for iterating over an objects properties ,

var obj = {a:1,b:2};
for (let prop in obj) {
console.log(prop);
}
// a
// b

  • Promise API

    • In ES6 we have an alternative mechanism built into the language called a promise .
      A promise is a placeholder for a future value.
      It serves the same function as callbacks but has a nicer syntax and makes it easier to
      handle errors.
    • Immediate Resolution or Rejection
    • Chaining
    • Promises pass an error along the chain till it finds an error handler. So we don’t
      need to define an error handler for each then function, we can just add one at the
      end
    • Catch
    • //plnkr.co/edit/OMGgN6qpED6wTEEP2XYN?p=preview

 

  • Object Orientation in JavaScript

    • We normally call the way object orientation is implemented in C++ or Java as the
      Classical OO Pattern and the way it’s implemented in JavaScript as the Prototype
      Pattern .
    • So in ES6 we have an alternative syntax, one that closer matches the classical object
      orientated pattern as is seen in other languages.

 

  • Class

    • A class is a blueprint for creating objects with specific functions and properties
      already attached to it.
    • A class is a blueprint for creating an object, we call that created object an instance of
      a class , or a class instance or just instance for short.
  • Inheritance

    • A class can inherit from another class. We can create a class blue-print that extends
      an existing class blue-print by adding other methods or properties.
    • by using the extends keyword

 

class Person { 1
firstName = ""; 2
lastName = "";
constructor(firstName, lastName) { 3
this.firstName = firstName;
this.lastName = lastName;
}
name() { 4
return `${this.firstName} ${this.lastName}`;
}
whoAreYou() {
return `Hi i'm ${this.name()}`; 5
}
}

 

1 We define a class using then class keyword.
2 We describe the properties we want on our class instance.
3 Each class has a special constructor function, this is called when we create an instance of a class with new
4 We describe the functions, also known as methods, that we want on our class instance.5 this in a method points to the class instance, the object that is created using this class.
5 this in a method points to the class instance, the object that is created using this class.

 

let asim = new Person("Asim","Hussain");
asim.whoAreYou()
// "Hi i'm Asim Hussain"

class Student extends Person { 1
course; 2
constructor(firstName, lastName, course) {
super(firstName, lastName); 3
this.course = course;
}
whoAreYou() {
4
return `${super.whoAreYou()} and i’m studying ${this.course}`; 5
}
}

let asim = new Student("Asim", "Hussain", "Angular 2");
console.log(asim.whoAreYou());
// Hi i'm Asim Hussain and i'm studying Angular 2

1 We use the extends keyword to signal that this class inherits all the properties and methods from the parent
Person class.
2 We can describe additional properties.
3 We use the super function to call the constructor of the parent class
4 We can override member functions of the parent class with our own versions.
5 In member functions super refers to the parent instance.

 

  • Access Modifiers

    • TypeScript adds some nice functionality on top of ES6 classes, namely
      function and property visibility via access modifiers .
    • public
      This is the default and means its visible everywhere.
      private
      Only member functions of the class it’s declared in can see this.
      protected
      Only the class it’s declared in and any class that inherits from that class can see
      this.
  • Interfaces

    • An interface can be used in a number of scenarios but by far the most common is when used with classes.

class Person implements Human {
}

 

  • Human in the example above is an interface . An interface lets you describe the minimum set of public facing properties or methods that a class has.
  • Another way interfaces are explained is that they describe a set of rules the class has to follow, a contract it has to adhere to.

interface Human {
firstName: string;
lastName: string;
}

 

  • Since interfaces are all about the public interface of a class they can’t have access modifiers, the properties above have to be public .
  • error TS2420: Class ‘Person’ incorrectly implements interface ‘Human’. Property ‘firstName’ is missing in type
    ‘Person’.
  • Sometimes however we might want an interface to describe an optional contract. We can append ? to the name of the property or function to mark it as optional

 

interface Human {
firstName: string;
lastName: string;
name?: Function;
isLate?(time: Date): Function;
}

 

  • //github.com/codecraftpro/angular2-sample-code/blob/master/2.es6-typescript/10.class-interface/script.ts

  • Decorators

    • This is a new feature that will probably make it into the ES7 version of JavaScript, it’s
      not available right now however even in the ES6 version.
    • It allows us to decorate classes and functions, similar to annotations in java and
      decorators in python.
    • @course is just a function
    • The first argument to the course function is the target .
    • This is the thing the decorator is attached to, so for a class it’s going to be the function
      constructor for that class
    • With decorators we can configure and customise our classes at design time.
    • They are just functions that can be used to add meta-data, properties or functions to
      the thing they are attached to.
    • //github.com/jayphelps/core-decorators.js
    • //github.com/codecraftpro/angular2-sample-code/blob/master/2.es6-typescript/11.decorators/script.ts

 

function Student(config) {
return function (target) {
Object.defineProperty(target.prototype, 'course', {value: () => config.course})
}
}

function Std(config) {
return function (target) {
Object.defineProperty(target.prototype, ‘cp’, {value: () => config.cp})
}
}

@Student({
course: “angular3”
})

class Person {
constructor(private firstName, private lastName) {
}

public name() {
return `${this.firstName} ${this.lastName}`;
}

protected whoAreYou() {
return `Hi i’m ${this.name()}`;
}
}
@Std({
cp: “test”
})
class Person1 {
constructor(private firstName, private lastName) {
}

public name() {
return `${this.firstName} ${this.lastName}`;
}

protected whoAreYou() {
return `Hi i’m ${this.name()}`;
}
}

let asim = new Person(“Asim”, “Hussain”);
//noinspection TypeScriptUnresolvedFunction
console.log(asim.cp());

 

  • Modules

    • Module Loading
        • By default javascript doesn’t have a module system like other languages, e.g. Java or
          Python.
        • This means that if you wanted to call a function in some other file, you have to
          remember to explicitly load that file via script tags before you call the function.
        • If you tried to use code that you forgot to add via a script tag, then javascript would
          complain.

      import foo from bar;
      foo();

    • The language itself figured out where bar was, loaded it up from the filesystem,
      extracted the function foo and made it available to you in your file to use.
    • This feature was missing in JavaScript so the community developed their own
      solutions, such as CommonJS which is used in node.
  • ES6 Modules

    • ES6 took the best of the existing module systems and introduced this concept on a
      language level.
    • Although it’s made it into the ES6 standard it’s up to the javascript engine makers to
      actually implement it natively and they haven’t … yet .
    • So until that happens we code using the ES6 module syntax in TypeScript. When
      typescript transpiles the code to ES5 it uses the CommonJS module loading system
      which we touched on above.
    • We can configure TypeScript to use other module loaders, but the default is CommonJS.
  • Exporting & Imoporting

    • //github.com/codecraftpro/angular2-sample-code/tree/master/2.es6-typescript/12.modules
  • Types

    • Transpile-time type checking

      • Some of the most common mistakes we make while writing JavaScript code is to
        misspell a property or a method name.
      • We only find out about the mistake when we get a runtime error , that is to say when
        we are running our application.
      • TypeScripts transpilation mechanism also performs type checking , however it only
        works when we tell TypeScript the type of things.
      • let a: number = 1; a = “1”; //error TS2322: Type ‘string’ is not assignable to type ‘number’.
      • Basic Types, Arrays, Functions, Enum(ES6),  Class & Interface, Any, Void
    • Type Assertion
        • Sometimes we end up in a situation where we know more than TypeScript about the
          type of something. In those situations we can use type assertions as a hint to the
          transpiler about the type of something, like so:
        • (<string>value) lets TypeScript know that we believe the type of value to be string.

      let value: any = "Asim Hussain";
      let length: number = (<string>value).length;

    • Generics
        • With generics we can dynamically generate a new type by passing into the Post type
          a type variable , like so:

      class Post<T> {
      content: T;
      }
      let videoPost: Post<Video>

  • noImplicitAny flag in tsconfig.json

    • set to true then TypeScript throws an error if no type is present.
  • Types for external libraries

    • if you wanted to use code that wasn’t written in TypeScript or which you are
      not going to include as TypeScript and compile yourself.
    • We can use something called an ambient type definition .
    • This is a file that contains meta-data about the types in another library, a meta-type
      file.
    • This repository (//github.com/DefinitelyTyped/DefinitelyTyped ) contains type
      definitions for some of the most popular 3rd party javascript libraries.
    • To use them in a file we simply:-
      • 1. Download the associated type file, for example jquery.d.ts .
      • 2. In the typescript file where we want to use the 3rd party library, add this to the
        top of the file:
        /// <reference path=”jquery.d.ts” />
  • typings
    • Thats a bit cumbersome so there is also a command line tool you can use called
      typings which handles the leg-work for you.
    • We install it via npm , like so:
      npm install -g typings
    • In our project folder we then initialise a config file by typing typings init this creates a typings.json file.
    • Then we can install type definition files like so:
      typings install jquery --save --source dt --global
    • This downloads and installs the type definition files to the ./typings folder and conveniently bundles all of the downloaded files into a single file called index.d.ts .
    • So then to use jQuery with typescript type support we just need to add a reference to index.d.ts to the top the file where we use jQuery.
      /// <reference path="./typings/index.d.ts"/>

Angular 2

zone
“Zone is a mechanism for intercepting and keeping track of asynchronous work” – //github.com/angular/zone.js

  • When Angular 1 knew about callbacks it could do wonderful things, like
    automatically update the page. When it didn’t know about callbacks it frustratingly
    didn’t update the page.
  • No matter how experienced you were with Angular 1 bugs with these kinds of issues
    cropped up time and time again.
  • Zones solves this problem, it keeps track of all pending asynchronous work and tells
    Angular when things happen. So in Angular 2 you don’t have to worry about
    whether Angular knows about your callback or not, zones tracks this for you and
    notifies Angular when something happens.

SystemJS

  • Instead of including all the files we need as script tags in our index.html, in Angular
    we break up all our code into files called modules . We then leave it to a module
    loader to load the modules when they are needed, in the order they are needed.
  • It will become part of the core JavaScript language but until then we use a module
    loader

systemjs.config.js
SystemJS needs help to figure out when and how to load up certain modules, e.g. if
we ask for a module called @angular what does that mean? What should it load up?
Which version? This configuration is stored in the systemjs.config.js file.

System.import
Now we’ve loaded up the SystemJS library and configured it by loading up the
systemjs.config.js file, we can use the System.import function to load up our
script.ts file, like so:


System.import('script.ts').catch(function(err) {
console.error(err);
});

Intro to TypeScript

  • TypeScript is the ES6 version of JavaScript plus a few other TypeScript only features
    which Angular 2 needs in order to work.

  • You can write Angular applications in either TypeScript , ES6 or even ES5 JavaScript .

 

Transpilation

  • Browsers don’t support TypeScript. Browsers barely support ES6 JavaScript. So how can we write our code in TypeScript?
  • We use something called a transpiler which converts from one language to another.
  • We can write in TypeScript and have a transpiler convert to ES6 or ES5.

tsconfig.json


{
"compilerOptions": {
"target": "es5", 1
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": true,
"suppressImplicitAnyIndexErrors": true
}
}

 

Components

  • An Angular application is therefore just a set of custom tags that interact with each
    other, we call these tags Components .
  • Directives <1.5 & Components of 1.5
  • We use a new feature of TypeScript called annotations , and specifically an
    annotation called @Component to link Class with this custom tag
  • The @Component is an annotation, an annotation automatically adds some boilerplate
    code to the class, function or property its attached to.
  • You can write Angular without using annotations you would just have to write the boilerplate code
    yourself.
  • By setting the selector to joke we’ve told angular that whenever it finds a tag in the
    HTML like <joke></joke> to use an instance of the JokeComponent class to control it.

import { Component } from '@angular/core';

  • There is a new feature of ES6 JavaScript called template strings ` back-tick
  • In Angular 2 your code is structured into packages called Angular Modules, or
    NgModules for short. Every app requires at least one module, the root module, that
    we call AppModule by convention.

NgModule has a few params:

  • imports
    The other Angular Modules that export material we need in this Angular Module.
    Almost every application’s root module should import the BrowserModule.
  • declarations
    The list of components or directives belonging to this module.
  • bootstrap
    Identifies the root component that Angular should bootstrap when it starts the
    application.

BrowserModule is the Angular Module that contains all the needed Angular bits and pieces to run our application in the browser.

  • FormsModule , RouterModule and HttpModule .