# Roadmap FE Developer
## JavaScript
- [x] declaring variables: var, let, const (https://tylermcginnis.com/var-let-const/)
- [x] hoisting
- [x] booleans
- [x] truthy values
- [x] falsy values
- [x] if, else if, else
- [x] switch statements
- [x] ternary operator
- [x] working with numbers
- [x] declaring numbers
- [x] integers and floating points
- [x] parsing string to numbers
- [x] NaN (Not a number)
- [x] Number methods (parseInt, parseFloat etc)
- [x] working with Strings
- [x] String properties, indexes
- [x] String Methods (charAt, includes, replace, etc)
- [x] Template literals
- [x] working with arrays
- [x] manipulation: push, pop, shift, unshift, slice, splice, `rest ...`, concat, join
- [x] finding: includes, every, some, find, findIndex, indexOf
- [x] iteration: forEach, for…of, map, filter, reduce
- [x] destructuring
- [x] working with functions
- [x] function literal, function expresssions
- [x] function parameters, function defaults
- [x] rest parameters, and arguments (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters)
- [x] return values
- [x] function scope for variables
- [x] function closure (http://javascriptissexy.com/understand-javascript-closures-with-ease/ https://www.freecodecamp.org/news/learn-javascript-closures-in-n-minutes/)
- [x] IIFEs
- [x] callbacks (https://codeburst.io/javascript-what-the-heck-is-a-callback-aba4da2deced)
- [x] this in functions
- [x] arrow functions
- [ ] .call, .bind,.apply
- [ ] working with objects
- [x] object literals
- [x] declaring properties, methods
- [x] shorthand properties & methods
- [x] destructuring objects
- [x] checking if properties exist(https://thisinterestsme.com/javascript-check-object-property-exists/)
- [x] adding/ updating/ removing properties
- [x] merging objects(https://plainjs.com/javascript/utilities/merge-two-javascript-objects-19/ * https://gomakethings.com/merging-objects-with-vanilla-javascript/)
- [x] copying objects
- [x] Object methods (keys, entries, values, create, freeze, is etc)
- [ ]instance of
- [ ] DOM
- [x] querying dom nodes
- [x] adding/ removing / updating dom nodes
- [x] event listeners (click, input, change, etc) -https://davidwalsh.name/event-delegate
- [x] form validation
- [ ] Window
- [ ] fetch API
- [ ] localStorage
- [ ] location
- [ ] history
- [ ] console
- [ ] ES Modules
- [ ] types of Module systems
- [ ] importing modules
- [ ] exporting modules
## HTML
- [x] basic tags
- [x] writing semantic html
- [ ] accesibility features
- [ ] forms & form validation
## CSS
- [x] css variables
- [x] grid
- [x] floats
- [x] positioning
- [x] display
- [x] box model
- [x] flexbox
- [x] CSS frameworks (Bootstrap)
- [ ] BEM
- [x] media queries
- [x] basic styling
- [x] specificity
- [x] selectors
- [x] pseudo-selectors
- [x] preprocessors (SASS/SCSS)
## Databases (SQL/NoSQL)
- [x] retrieving all items in a collection
- [x] retrieving some items in a collection by a property (aggregates)
- [x] inserting items in a collection
- [x] updating items in a collection
- [x] deleting items in a collection
- [x] grouping items in a collection based on a specific criteria
- [ ] creating a Schema
- [ ] normalizing data
- [ ] SQL vs NoSQL
- [ ] creating collections/deleting collections
- [ ] data types stored
- [ ] limiting results
## Tools
**Git**
- [x] cloning repos from the internet (especially cloning from Github)
- [x] git fetch
- [x] git pull
- [x] git push
- [x] git commit
- [x] git add
- [ ] branching
- [ ] git merge
- [ ] solving conflicts
**CMD Line**
- [ ] navigating between directories
- [ ] deleting files
- [ ] creating directories
**npm/yarn**
- [ ] installing packages locally
- [ ] installing dev dependencies
- [ ] installing packages globally
- [ ] using packages in projects
- [ ] uninstalling packages
**SASS**
- [x] basic syntax
- [x] partials
- [x] mixins
- [x] bult-in functions
**SSH**
- [x] generating SSH keys
- [ ] how to connect via ssh to remote servers
- [ ] executing commands via remote window
- [ ] using them in a context like Github/Bitbucket
**Free resources**
- [ ] [JavaScript 30](https://javascript30.com/) - practice with ES6 syntax (1,2,3,4,5, 6 nu,7,8,9,10,11, 12, 13,14, 15, 16, 17, 18, 19,20, 21, 22)
- [ ] [Vanilla JS Projects](https://learnvanillajs.com/projects/) - very useful because they represent similar request that you might get from clients
- [ ] [SSH in Windows](https://docs.joyent.com/public-cloud/getting-started/ssh-keys/generating-an-ssh-key-manually/manually-generating-your-ssh-key-in-windows)
- [ ] [SSH in Github](https://help.github.com/en/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent)
**Paid Courses**
- [ ] [Complete Web Development Bootcamp - Angela Yu](https://www.udemy.com/course/the-complete-web-development-bootcamp/)
- [ ] [The Complete Junior to Senior Web Developer Roadmap (2019)](https://www.udemy.com/course/the-complete-junior-to-senior-web-developer-roadmap/) - only if you finished the previous ones, it gives you more knowledge about more advanced tools, techniques and different technologies in the web development spaces
- ES6 - https://scrimba.com/g/ges6?utm_source=freecodecamp.org&utm_medium=referral&utm_campaign=ges6_launch_article
EXTRA:
- typescript: https://morioh.com/p/48063c02cb1e
set up:https://morioh.com/p/aed97925b139