Skip to content

globant-ui/angular-bootcamp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

17 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

UI Bootcamps

HTML - CSS - JavaScript (Angular oriented πŸ˜‰)

Globant

IMPORTANT DISCLAIMER

This is not your typical crash course, this is a Bootcamp.

What does that mean?

  • You will give your best

  • We will give our best

  • We will all have a good time

But most important, there will be A LOT of humor, because a happy developer (student, pupil, padawan, you get the point...) is a great and hard working developer.

That said...

Welcome to the bootcamp, learning time has begun

Workout

Please, use this repository as a base for all your work. The idea is to fork this project so everyone uses the same folder structure for the exercises.

Index

  1. Objective

  2. Who Should Attend

  3. Duration

  4. Technical Assistance

  5. Performance Measurement

  6. Handling advanced Developers

  7. Materials

  8. Bootcamp Schedule

  9. General Guidelines

  10. Learning Days

Objective

We will teach you the basics of Web development using JavaScript and Single Page Applications with Angular.

β†’ index

Who Should Attend

The materials will start at a low level and does not require in depth knowledge of the platform in question. Desirable participant profile: trainees and outside Globant candidates. A basic knowledge on OOP is desired, though.

β†’ index

Duration

Four weeks total. (20 days)

β†’ index

Technical Assistance

You can contact other Bootcamp participants or any available tutor if you need technical assistance. Communications will take place over Slack on our own Bootcamp Workspace

β†’ index

Performance Measurement

  1. Code review after each practice.

  2. Checkpoint completion after Learning stage with your assigned tutor.

  3. Final Application after Bootcamp.

β†’ index

Handling Advanced Developers

Developers that move faster than average can go ahead and complete as much exercises as wanted.

β†’ index

Materials

  1. You will need to install Node.JS (Version 6) (NVM is strongly recommended - Unix/Windows)

  2. The recommended IDE is Visual Studio Code. However, you can use any IDE of your preference.

  3. Gmail Account + headset (For hangout calls)

  4. Create your own GitHub account. Follow this guideline to setup your account. Also you can read further about Git in Try Git or Learn Git Branching

  5. Fork this repo to use as a base to host the project code.

β†’ index

Bootcamp Schedule

The Bootcamp is organized in the following way:

Calendar

The first week is oriented to learn the basics around HTML and CSS and JavaScript. You will be doing some exercises along your reading

The second week dives deep into JavaScript and some Node.js mumbo jumbo. Again, you will have homework to do for the week.

The third week introduces you to TypeScript and Angular. JavaScript is an easy typed language, that means as a developer you have total control over the whole structure of the code. Sometimes that's an advantage, but as the app grows and more people become involved things go out of hand. That's when TypeScript comes to the rescue. At the end of this week you will make the famous Tour of Heroes app.

The last week will be focused on starting an app and learning some shiny cool stuff. You need to present your work at the end of the week, however you can keep working on it (more on that later).

You will encounter some pages with extra excercises on them. You have the power to choose if you want to do them or not. Just remember, if you do, put them on the extra folder

β†’ index

General Guidelines

  1. Team play is encouraged but the work will be evaluated per person.

  2. The instructions will be vague as they generally are in real life projects. You must look for support and guidance from your PM, teammates and tutors.

  3. All code and documentation must be in English.

  4. HTML syntax must adhere to Globant's HTML Style Guide.

  5. CSS code must adhere to Globant's CSS Style Guide

  6. Js code must adhere to Globant's Js Style Guide.

  7. Ts and Angular code must adhere to Angular's Style Guide.

β†’ index

Learning Days

Each day you will grab the fundamentals of building blocks for usual Js/Ts/Angular applications.

On each learning day you will have to:

  1. Read: We will provide you with documentation related with current sprint content so you can have a background reference, guide and examples to complete the following practice.

  2. Practice: You will implement the previously gathered knowledge in simple coding activities.

  3. Commit: You will commit all your code on a daily basis, when you finish your practice. This will not apply for code of Week 3 and 4.

β†’ index

Introduction

  • This repository contains inside the src directory the project structure for all exercises/challenges that you will need to do.

  • All .js code can be opened directly on the browser. For Ts and Angular code you will need to run a Liteserver with the Angular CLI. Just running ng serve or npm run serve will be enough

  • Once the server is running, all the modifications you make will be automagically synced and the app will reload.

  • Basic GIT concepts

  • READ THAT ⬆️ ⬆️ ⬆️

  • Extra GIT material

β†’ index

Now let's get down to business

Week 1: HTML, CSS and JavaScript

Day 0: At the beginning t wast all HTML & CSS

So, what's day 0?

We as developers know that every structure starts at 0 (any other dev or language that says the contrary is WRONG) so this is the first thing you'll need to master before even trying to fight with the future topics.

History time

Rumor has it that when the web was a little baby, at the early stages of web 1.0 all was static and SOOO ugly.

You may have encounter one of those exquisite pages:

Mr x page

YES pages looked like that (and that's a pretty one) - all old HTML and CSS

Fortunately people noticed that we needed new tools to create more dynamic and stylish experiences. Technologies have evolved and now we can make gorgeous experiences like this one. Regardless, the basics are still the same.

Let's get on with it

HTML describes the content semantics and structure of a web page. It was designed as a markup language, if you know XML (the ugly father), you could consider HTML as a subset of XML with a predefined semantic (and soooo much friendly).

On the other hand, CSS allows to define the look and feel of the content. It's used to set colors on HTML elements, customize sizes, define the layout of the document content, among others. (e.x. "The following list of elements must be shown as a menu", "The main title of the page should use this particular font", "make things pretty").

JavaScript is a programming language that runs in all Web Browsers. Using JavaScript we can create full-fledge web applications (and some magic).

Reading:

Exercise:

So... I'm going to be honest with you, I'm lazy as any dev should and I'm not going to re-invent the weel work extra. Your first days work is with our friends at HTML & CSS 101. Just put all your work under day0

Not so Optional Reading

β†’ index

Day 3 - 5: Hello JavaScript

Yes, I know I missed the other days, but c'mon. I'm giving you space to learn.

I'm sure you must be an HTML & CSS guru by now, right?

This is fine

So, are you ready for your new challenge? Js

JavaScript is an event driven programming language that runs in all Web Browsers. Using JavaScript we can create full-fledge web applications.

That's quite a definition, buy our friends at Eloquent JavaScript make an even better work.

I hope you liked that book, because it's going to stick with us for the rest of this (and next) week.

Reading:

Excercise:

I think you noticed by now, but there are a few exercises inside the reading material (awesome, I know). Do them, this is basic Js and we need you to have fun with it.

Just put all your work under day2-5 once you finished the exercises on page.

β†’ index

Week 2: Diving into JavaScript and Node 101

Day 6: The Secret Life of Objects

Suspicious

Js is often called an Object oriented language, but actually that isn't 100% true. In Js we have what's called Prototipal Inheritance. In this lesson you will learn all about the Prototype, Inheritance, Getters, Setters, Constructors and Polymorfism.

Reading:

Exercise:

Look into src/week2/day1/index.html in there there's an Animal class with a talk method. Follow the instructions.

Not So Optional Reading

Since ES6 went out we do have a Class like sintax, HOWEVER that's Syntactic Sugar. We still have that hideous beautiful Prototype under the hood, so don't get confused.

β†’ index

Day 7: Going Regular with RegEx (Also, learn how to hunt those bugs)

One of the most hated used features on any kind of language are Regular Expressions, aka RegEx. Those are REALLY powerfull strings (they are more like a really special kind of strings) that allow you to capture any pattern you want on any kind of string. You can make sure all emails accounts end up with @something.com or all the names are at most 4 characters long... you get the idea.

Also, you will be learning error handling and some of the finest debugging techniques out there. Or, as I like to call them, learn how to properly use your tools.

Read up and catch 'em all

Catch

Reading:

Exercise:

Look into src/week2/day2 in there there're some index files, poke around and follow the instructions.

β†’ index

Day 3: The browser, where the magic happens

So, you have a text file called whatever.js, you have ~200 lines in there (or you should, codebases of ~ 1k lines are made by horrible people). You add it to an index.html file, double click that file, a browser opens and

Mindblown

The code comes to life. All works fine (at least if you coded right πŸ˜’) it's

Magic

No, no it's not. It's the browser's engine. Js runs inside a browser on a VM, that VM could be V8 (Chrome), SpiderMonkey (Firefox), Chakra (Edge) or Nitro (Safari)

For day 3 you will learn about the Browser, the Document Object Model (basically the whole thing you are seeing on the browser's window) and DOM Events.

Reading:

If you used jQuery, this is the time you realize that it's not so magic, it's Js, and you can do all the things jQuery does with vanilla Js. And in a few weeks you'll be refusing to use jQuery again 😝

Not So Optional Reading

The browser and the server (the little computer thingy that lives on the cloud and has all your files) communicates via HTTP. That's a protocol, something like a standarized way to send messages. You can read more about it here:

Users communicate with the application via forms, those are fill up sections which where designed on a time before Js where all interactions with the server where made while navigating to a new page. That kind of interaction is SO web 1.0 but, we still use forms.

Exercise:

Look into src/week2/day3 in there there're some index files, poke around and follow the instructions.

β†’ index

Day 8 and 9: require('Node.js')

So, at this point you pretty much are up to speed with Js. But Js does not only run on a browser. YES you read me right, you can make a server, a robot, a game, you can eve run it on an Arduino. The sky's the limit.

Excited

How is that even possible you ask? Well, Js community was aways HUGE, so it was more than expected that a person asked Why not? That's how Node was born.

Node.js is a Js runtime that runs outside the browser on a V8 VM, there's a Node fork for almost everything.

Reading

First, to understand how node works, you need to learn one last thing about Js, Modules

Then you can go on with this

After that you can learn about the most popular NodeJS framework:

Not So Optional Reading

Exercise:

Look into src/week2/day4-5 in there there're some js files. Those 2 are Node.js apps, they don't work as you would expect from any other .js file. You will need to use the command line:

luca.sartori@AR-IT12688:~/bootcamps/ui$

That's your Command Line Interface, know your CLI, love your CLI, BE your CLI. A developer is defined by it's tools, and you will want this one on your side.

You'll need to navigate to src/week1/day4-5

luca.sartori@AR-IT12688:~/bootcamps/ui$ cd src/week1/day4-5/

If you excecute a ls command you'll se the contents on the CLI

luca.sartori@AR-IT12688:~/bootcamps/ui/src/week1/day4-5/$ ls

expressDemo.js  fsDemo.js  node_modules  package.json

Then, you have to run one of the files

luca.sartori@AR-IT12688:~/bootcamps/ui/src/week1/day4-5/$ node fsDemo.js

Remember, you'll need Node.js installed

That will run the code, just remember two things

  1. Server code, like the one from expressDemo keeps running, you have to exit it
  2. To exit a running process on the CLI, you need to press CTRL+C

Notes:

Don't be afraid to Google stuff, no developer remembers everything

β†’ index

Week 3: TypeScript and Angular 101

So, here we are. This is the first step into a whole new world. It doesn't matter if it's Angular, React, Vue or any Js framework. The latest generation of those tools makes the whole development process a breeze. Welcome to the SPA world.

New World

Here at Globant we are technology agnostic, every developer is welcomed to study anything he wants. However we do recommend from a maturity and scalabilty points of view Angular or React.

This Bootcamp will focus around Angular that does not mean that you should stop there, if you want to dig into React please do, it'll help you in the future.

Day 10: TypeScript 101

Let's start with TypeScript, basically a superset of Js, with some advantages

  1. Types
var number: number = 1;
var word: string = "1";

return number === word;
// IS NOT THE SAME

number = word;
// CAN'T BE DONE, DIFFERENT TYPES
  1. Intellisense

Intellisense

  1. Generics - generic code for any type
class Greeter<T> {
    greeting: T;
    constructor(message: T) {
        this.greeting = message;
    }
    greet() {
        return this.greeting;
    }
}

let greeter = new Greeter<string>("Hello, world");

let button = document.createElement('button');
button.textContent = "Say Hello";
button.onclick = function() {
    alert(greeter.greet());
}

document.body.appendChild(button);
  1. Transpilation - write in Ts, get ES6, ES5, ES4, etc... Transpilation Taken from Ts Playground

Relax, you can always keep writing Js with TypeScript

And there's more and more... but that's for you to read:

Reading:

β†’ index

Day 11: Still Ts

Get ready, there's a lot where the previous day came from.

Reading

Notes:

There is no excercise section on these two days because as this is a superset of Js you already know how it works. Take them as free days so you can digest all that new info about Ts specific features.

All Ts code will be evaluated with Angular as that's the language it uses.

Day 12, 13 and 14: Angular 101

So yes, here we are, Angular. The ONE framework (as they say) you may know it for it's previous generation, the highly important and famous angular.js.

But as they say... water under the bridge.

Angular is a new framework, a new codebase and A LOT of new features. The team wanted so bad to emphasize the new part that the ditched the .js part of the name (commonly used on Js frameworks) and they adopted semver.

The current stable version is 5.0

Reading:

Not So Optional Reading

Exercise:

The exercise for the week, is simple. We want you to be friends with Angular, so what's best than talking to each other?

You will do the Tour of Heroes App featured in the intro above. For that you'll have to follow the instructions on the page. However, as we want you to make the code, not copy/paste it there's a catch.

I've initialized the project for you, just run

luca.sartori@AR-IT12688:~/bootcamps/ui/week2$ npm install

Remember: ng serve starts the app on http://localhost:4200

You will need to make a commit after every step, each one with a difference of at least 20 minutes. That way we can at least try to believe that you typed the code

Keep in mind:

  1. The app must be under src/week2
  2. You will need to install Angular CLI
  3. You are expected to follow Angular's code standards
  4. Make a personal touch, you should be listed as a hero (cool powers only 😬)

β†’ index

Week 4: Angular 201

Things are getting serious, are you ready to dive deep into Angular?

Study

I'm not gonna lie to you, this is gonna hurt, my friend.

Reading:

Exercise:

Show Me What You Got

It's time to make an app from scratch

You are going to make a Scientific app.

MarsBoot: from mars to your screen

Let's get our requirements together:

  • The app should be responsive
  • You should make the app modular. There should be several components
  • Here are some mockups for the app. You'll have a main screen and a photo detail page

Home

Homepage

Detail

Detail Page

  • You'll have to use this API
  • Here's an API key for you to use aZlmHCp3jD9sanwE8KvytidYArlTvlhwr3fEhYyM
  • Here are some API call examples
https://api.nasa.gov/mars-photos/api/v1/rovers/curiosity/photos?sol=1000&api_key=DEMO_KEY

https://api.nasa.gov/mars-photos/api/v1/rovers/curiosity/photos?sol=1000&camera=fhaz&api_key=DEMO_KEY

https://api.nasa.gov/mars-photos/api/v1/rovers/curiosity/photos?sol=1000&page=2&api_key=DEMO_KEY
  • You have several cameras
  • You can change the camera displaying in a row
  • You can click on an image and it'll get you to it's detail page (is the same page as the 'photo of the day' but with a different title)
  • You can add any feature you like
  • The photo of the day should be a random picture from a random camera

Create a week4 folder, go inside and run:

luca.sartori@AR-IT12688:~/bootcamps/ui/week4$ ng start

Hey, don't panic. This excercise is for this week and on...

You have until the last day of this week to keep pushing changes. After that you can keep workin on the app, but please create a new branch for it:

luca.sartori@AR-IT12688:~/bootcamps/ui/week4$ git checkout -b 'post-bootcamp'

luca.sartori@AR-IT12688:~/bootcamps/ui/week4$ git push origin post-bootcamp

Your app should look something like this:

Home

Homepage

Detail

Detail Page

Some advices

  • Dont't get scared. Even the most successfull Software Engineers and Architects forget things sometimes.
  • Google is your friend, independence and curiosity are great values that every developer needs to have.
  • The only way to learn is to fail, so keep failing.
  • Theory is nice, but you need to get your hands dirty if you want things to stick.
  • Remember, a happy developer is a great developer (also, coffee is your best friend)

Kudos and keep failing learning!

β†’ index

BONUS

So... you've got your Angular going, you read a LOT of stuff, you started a SPA. So... What's next?

Homer Scholar

There're still a lot of stuff to read, some of them really work better under specific conditions or requirements. Remember:

KEEP IT SIMPLE

If there's a more advanced or complicated way to get to a solution it doesn't always mean that's the better approach.

With that in mind, here are some more advanced (or not, this whole beatifull mess was made by a bored developer on a few days span) features that every one should know, and at least being able to explain them.

Hey, If you need a place to kill time try Medium, there's a lot to read about pretty much anything (specially development related topics). One of my favorites sections is Angular in depth.