├── .all-contributorsrc ├── .github └── FUNDING.yml ├── README.md ├── code-of-conduct.md └── contributing.md /.all-contributorsrc: -------------------------------------------------------------------------------- 1 | { 2 | "files": [ 3 | "README.md" 4 | ], 5 | "imageSize": 100, 6 | "contributorsPerLine": 7, 7 | "contributorsSortAlphabetically": false, 8 | "badgeTemplate": "[![All Contributors](https://img.shields.io/badge/all_contributors-<%= contributors.length %>-orange.svg?style=flat-square)](#contributors)", 9 | "contributorTemplate": "\">\" width=\"<%= options.imageSize %>px;\" alt=\"\"/>
<%= contributor.name %>
", 10 | "types": { 11 | "custom": { 12 | "symbol": "🔭", 13 | "description": "A custom contribution type.", 14 | "link": "[<%= symbol %>](<%= url %> \"<%= description %>\")," 15 | } 16 | }, 17 | "skipCi": true, 18 | "contributors": [ 19 | { 20 | "login": "edieblu", 21 | "name": "edieblu", 22 | "avatar_url": "https://avatars.githubusercontent.com/u/17270662?v=4", 23 | "profile": "http://includejs.dev", 24 | "contributions": [ 25 | "content" 26 | ] 27 | }, 28 | { 29 | "login": "AlbertoMontalesi", 30 | "name": "AlbertoM", 31 | "avatar_url": "https://avatars.githubusercontent.com/u/23130353?v=4", 32 | "profile": "https://inspiredwebdev.com", 33 | "contributions": [ 34 | "content" 35 | ] 36 | }, 37 | { 38 | "login": "astv99", 39 | "name": "Stephen Ham", 40 | "avatar_url": "https://avatars.githubusercontent.com/u/5325089?v=4", 41 | "profile": "https://github.com/astv99", 42 | "contributions": [ 43 | "content" 44 | ] 45 | }, 46 | { 47 | "login": "nyilynnhtwe", 48 | "name": "NyiLynnHtwe", 49 | "avatar_url": "https://avatars.githubusercontent.com/u/26655762?v=4", 50 | "profile": "https://github.com/nyilynnhtwe", 51 | "contributions": [ 52 | "content" 53 | ] 54 | }, 55 | { 56 | "login": "geocine", 57 | "name": "Aivan Monceller", 58 | "avatar_url": "https://avatars.githubusercontent.com/u/507464?v=4", 59 | "profile": "http://aivan.io", 60 | "contributions": [ 61 | "content" 62 | ] 63 | }, 64 | { 65 | "login": "Yusadolat", 66 | "name": "Yusuf Adeyemo", 67 | "avatar_url": "https://avatars.githubusercontent.com/u/10975011?v=4", 68 | "profile": "https://yusadolat.netlify.app", 69 | "contributions": [ 70 | "content" 71 | ] 72 | }, 73 | { 74 | "login": "webb04", 75 | "name": "Jamie Webb", 76 | "avatar_url": "https://avatars.githubusercontent.com/u/11618797?v=4", 77 | "profile": "https://github.com/webb04", 78 | "contributions": [ 79 | "content" 80 | ] 81 | }, 82 | { 83 | "login": "Damiloju", 84 | "name": "Dami", 85 | "avatar_url": "https://avatars.githubusercontent.com/u/23188730?v=4", 86 | "profile": "https://github.com/Damiloju", 87 | "contributions": [ 88 | "content" 89 | ] 90 | }, 91 | { 92 | "login": "leoruhland", 93 | "name": "Leonardo Ruhland", 94 | "avatar_url": "https://avatars.githubusercontent.com/u/1785552?v=4", 95 | "profile": "http://www.djamba.com.br", 96 | "contributions": [ 97 | "code" 98 | ] 99 | }, 100 | { 101 | "login": "ujjalacharya", 102 | "name": "Ujjal Acharya", 103 | "avatar_url": "https://avatars.githubusercontent.com/u/19649166?v=4", 104 | "profile": "http://instagram.com/acharya.uzzol", 105 | "contributions": [ 106 | "content" 107 | ] 108 | } 109 | ], 110 | "projectName": "js-dev-reads", 111 | "projectOwner": "twhite96", 112 | "repoType": "github", 113 | "repoHost": "https://github.com" 114 | } 115 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: "https://www.buymeacoffee.com/tiffanywhitedev" 13 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 | JavaScript Dev Reading List 4 | 5 |

The JavaScript Developer's Reading List

6 |

7 | 8 | > A list of hand-picked books and articles for JavaScript developers 9 | 10 | [![forthebadge](https://forthebadge.com/images/badges/built-by-developers.svg)](https://forthebadge.com) [![forthebadge](https://forthebadge.com/images/badges/built-with-love.svg)](https://forthebadge.com) [![forthebadge](https://forthebadge.com/images/badges/cc-0.svg)](https://forthebadge.com) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-green?style=for-the-badge)](http://makeapullrequest.com) 11 | - [The problem :confused:](#the-problem-confused) 12 | - [Solution :sunglasses:](#solution-sunglasses) 13 | - [Things to think about :thinking:](#things-to-think-about-thinking) 14 | - [Note :exclamation:](#note-exclamation) 15 | - [Books :books:](#books-books) 16 | - [React & GraphQL](#react--graphql) 17 | - [Design patterns in JavaScript](#design-patterns-in-javascript) 18 | - [React Native](#react-native) 19 | - [Node](#node) 20 | - [Vue](#vue) 21 | - [Core concepts](#core-concepts) 22 | - [Software architecture](#software-architecture) 23 | - [Data structures and algorithms](#data-structures-and-algorithms) 24 | - [Miscellaneous](#miscellaneous) 25 | - [Articles :memo:](#articles-memo) 26 | - [React](#react) 27 | - [Core concepts](#core-concepts-1) 28 | - [JavaScript misc.](#javascript-misc) 29 | - [Soft skills](#soft-skills) 30 | 31 | ## The problem :confused: 32 | 33 | There are *a lot* of web development reading materials out there, from books to videos to blog posts. How can you know what is actually worth reading? 34 | 35 | ## Solution :sunglasses: 36 | 37 | Here I have hand-picked web development/JavaScript books and articles I have personally read or have come highly recommended to me by other developers. 38 | 39 | ### Things to think about :thinking: 40 | 41 | > Free books. Who doesn't like free books?! But if you are able, buy the book if it is offered as an option. No worries if you can't. But if it helps the devs continue to put out quality content then it is worth it. 42 | 43 | --- 44 | 45 | ### Note :exclamation: 46 | 47 | > The stack most used in my list is React, GraphQL, and JavaScript, in no particular order. This is because it is the stack I am most familiar with. If you want to see Angular or Vue, [submit a pull request](https://github.com/twhite96/js-dev-reads/pulls). I would ask you to keep it to JavaScript technologies. 48 | 49 | ## Books :books: 50 | 51 | Books are broken down by technology/stack or concept. Feel free to add yours by opening a [pull request](https://github.com/twhite96/web-dev-must-reads/pulls). 52 | 53 | 54 | ### React & GraphQL 55 | - [FullStack React](https://www.fullstackreact.com) - Anthony Accomazzo, Ari Lerner, Clay Allsopp, David Guttman, Tyler McGinnis,Nate Murray 56 | - [Learning React: A Hands-On Guide to Building Web Applications Using React and Redux (2nd Edition)](https://www.amazon.com/gp/product/013484355X/) - Kirupa Chinnathambi 57 | - [Progressive Web Apps With React: Create Lightning Fast Web Apps With - Native Power Using React and Firebase](https://www.amazon.com/Progressive-Web-Apps-React-lightning-ebook/dp/B076SZY9P9) - Scott Domes 58 | - [The Road to GraphQL](https://roadtoreact.com/course-details?courseId=THE_ROAD_TO_GRAPHQL) - Robin Wieruch 59 | - [The Road to Learn React: Your Journey to Master Plain Yet Pragmatic React.Js](https://roadtoreact.com/) - Robin Wieruch 60 | - [The Opinionated Guide To React](https://opinionatedreact.com/) - Sara Vieira 61 | 62 | ### Design patterns in JavaScript 63 | - [Learning JavaScript Design Patterns: A JavaScript and jQuery Developer's Guide](https://addyosmani.com/resources/essentialjsdesignpatterns/book/) - Addy Osmani 64 | - [JavaScript Patterns](http://shop.oreilly.com/product/9780596806767.do) - Stoyan Stefanov 65 | - [Node.js Design Patterns](https://www.amazon.com/Node-js-Design-Patterns-server-side-applications-ebook/dp/B01D8HIIFU) - Mario Casciaro & 66 | Luciano Mammino 67 | - [Refactoring: Improving the Design of Existing Code (2nd Edition)](https://www.amazon.com/Refactoring-Improving-Existing-Addison-Wesley-Signature/dp/0134757599) - Martin Fowler 68 | - *The 2nd edition of this book's examples was rewritten from Java to JavaScript* 69 | 70 | ### React Native 71 | - [Fullstack React Native: The Complete Guide to React Native](https://www.fullstackreact.com/react-native/) - Devin Abbott, Houssein Djirdeh, Anthony Accomazzo & Sophia Shoemaker 72 | 73 | ### Node 74 | - [Express in Action](https://www.manning.com/books/express-in-action) - Evan M. Hahn 75 | - [Node.js Handbook](https://flaviocopes.com/page/ebooks/) - Flavio Copes 76 | 77 | *Books by Flavio require a newsletter sign up but I think it is worth it.* 78 | 79 | ### Vue 80 | - [Vue.js in Action](https://www.manning.com/books/vue-js-in-action) - Erik Hanchett with Benjamin Listwon 81 | - [Vue.js: Up and Running](https://www.oreilly.com/library/view/vuejs-up-and/9781491997239/) - Callum Macrae 82 | - [Fullstack Vue](https://www.fullstack.io/vue/) - Hassan Djirdeh, Nate Murray, Ari Lerner 83 | 84 | ### Core concepts 85 | - [Eloquent JavaScript, 3rd Edition: A Modern Introduction to Programming](https://eloquentjavascript.net/Eloquent_JavaScript.pdf) - Marijn Haverbeke 86 | - [Maintainable JavaScript](https://www.amazon.com/Maintainable-JavaScript-Writing-Readable-Code/dp/1449327680) - Nicholas Zakas 87 | - [You Don’t Know JS: Up & Going](https://github.com/getify/You-Dont-Know-JS/tree/1st-ed/up%20%26%20going) - Kyle Simpson 88 | - [You Don't Know JS: Scope & Closures](https://github.com/getify/You-Dont-Know-JS/tree/1st-ed/scope%20%26%20closures) - Kyle Simpson 89 | - [You Don't Know JS: This & Object Prototypes](https://github.com/getify/You-Dont-Know-JS/tree/1st-ed/this%20%26%20object%20prototypes) - Kyle Simpson 90 | - [You Don't Know JS: Types & Grammar](https://github.com/getify/You-Dont-Know-JS/tree/1st-ed/types%20%26%20grammar) - Kyle Simpson 91 | - [You Don't Know JS: Async & Performance](https://github.com/getify/You-Dont-Know-JS/tree/1st-ed/async%20%26%20performance) - Kyle Simpson 92 | - [You Don't Know JS: ES6 & Beyond](https://github.com/getify/You-Dont-Know-JS/tree/1st-ed/es6%20%26%20beyond) - Kyle Simpson 93 | - [Principles of Object-Oriented Programming in JavaScript](https://leanpub.com/oopinjavascript) - Nicholas Zakas 94 | - [Understanding ECMAScript 6](https://leanpub.com/understandinges6) - Nicholas Zakas 95 | - [Front-end Developer Handbook 2018](https://frontendmasters.com/books/front-end-handbook/2018/) - Cody Lindley 96 | - [Javascript Allongé](https://leanpub.com/javascriptallongesix/read) - Reg “raganwald” Braithwaite 97 | - [Professor Frisby's Mostly Adequate Guide to Functional Programming](https://mostly-adequate.gitbooks.io/mostly-adequate-guide/content/) - Dr. Boolean 98 | - [Functional-Light JavaScript: Pragmatic, Balanced FP in JavaScript](https://leanpub.com/fljs) - Kyle Simpson 99 | - [Secrets of the JavaScript Ninja](https://www.manning.com/books/secrets-of-the-javascript-ninja) - John Resig, Bear Bibeault 100 | - [JavaScript Grammar](http://www.javascriptgrammar.com/) - Greg Sidelnikov 101 | - [Complete Guide to Modern JavaScript](https://github.com/AlbertoMontalesi/The-complete-guide-to-modern-JavaScript) - Alberto Montalesi 102 | 103 | ### Software architecture 104 | - [Programming JavaScript Applications: Robust Web Architecture With Node,HTML5, and Modern JS Libraries](https://www.amazon.com/Programming-JavaScript-Applications-Architecture-Libraries/dp/1491950293) - Eric Elliott 105 | - [Building Progressive Web Apps: Bringing the Power of Native to the Browser](https://www.amazon.com/Building-Progressive-Web-Apps-Bringing-ebook/dp/B075HP52WY) - Tal Alter 106 | 107 | 108 | 109 | ### Data structures and algorithms 110 | - [Introduction to Algorithms, 3rd Edition (The MIT Press)](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) 111 | - [Algorithms (4th Edition)](http://www.cs.bu.edu/~snyder/cs112/CourseMaterials/AlgorithmsChapterOne.pdf) - Robert Sedgewick & Kevin Wayne 112 | - *This book is included because it is a standard in understanding algorithms. Its choice of language is Java, but you can get the gist of how algorithms work in this book*. 113 | - [Grokking Algorithms: An illustrated guide for programmers and other curious people](https://www.manning.com/books/grokking-algorithms) - Aditya Y. Bhargava 114 | 115 | ### Miscellaneous 116 | - [Websocket: Lightweight Client-Server Communications](https://www.amazon.com/WebSocket-Client-Server-Communications-Andrew-Lombardi/dp/1449369278) - Andrew Lombardi 117 | - [Learning Three.js: The JavaScript 3D Library for WebGL](https://www.amazon.com/Learning-Three-js-JavaScript-Library-Second/dp/1784392219) - Jos Dirksen 118 | - [The Problem with Native JavaScript APIs](https://www.amazon.com/Problem-Native-JavaScript-APIs-ebook/dp/B008MYLMHG) - Nicholas Zakas 119 | 120 | 121 | [Back to top ↑](#the-javascript-developers-reading-list) 122 | 123 | ## Articles :memo: 124 | 125 | Articles are broken down into tech stack and soft skills, as well as core JavaScript concepts. Feel free to add yours by opening a [pull request](https://github.com/twhite96/web-dev-must-reads/pulls). 126 | 127 | 128 | ### React 129 | - [How the “Golden Rule” of React components can help you write better code](https://medium.freecodecamp.org/how-the-golden-rule-of-react-components-can-help-you-write-better-code-127046b478eb) - Rico Kahler 130 | - [How to Write Your Own Reusable React Component Library](https://itnext.io/how-to-write-your-own-reusable-react-component-library-a57dc7c9a210) - Connor Wilson 131 | - [Data Visualization Libraries for React Developers in 2019](https://medium.com/dailyjs/data-visualization-libraries-for-react-developers-in-2019-a2b9c01262f8) - Veronika Rovnik 132 | - [How to set up & deploy your React app from scratch using Webpack and Babel](https://medium.freecodecamp.org/how-to-set-up-deploy-your-react-app-from-scratch-using-webpack-and-babel-a669891033d4) - Nathan Sebhastian 133 | - [I made a mistake implementing a React Hook and got a denial of service from my backend](https://dev.to/adamwknox/i-made-a-mistake-implementing-a-react-hook-and-got-a-denial-of-service-from-my-backend-5cji) - 134 | DrKnoxy 135 | - [How Does setState Know What to Do?](https://overreacted.io/how-does-setstate-know-what-to-do/) - Dan Abramov 136 | 137 | 138 | ### Core concepts 139 | - [JavaScript Template Literals and styled-components](https://medium.com/@celsius/javascript-template-literals-and-styled-components-d18f97500ffd) - Celsius 140 | - [How to make your future self happy by writing good docs](https://dev.to/gabcimato/how-to-make-your-future-self-happy-by-writing-good-docs-h8p) - 141 | Gabriele Cimato 142 | 143 | 144 | ### JavaScript misc. 145 | - [Performance vs Readability](https://blog.usejournal.com/performance-vs-readability-2e9332730790) - Riccardo Polacci 146 | - [So you think you're just gonna `npm install`? Think again](https://dev.to/lirantal/so-you-think-youre-just-gonna-npm-install-think-again-lh4) - 147 | Liran Tal 148 | 149 | 150 | ### Soft skills 151 | - [How to be an awesome teammate from day one as a Junior Developer with these tips](https://medium.freecodecamp.org/how-to-be-an-awesome-teammate-from-day-one-as-a-junior-developer-with-these-tips-725f04000059) - Chris Blakely 152 | - [Ace your first year as a junior developer with this advice](https://medium.freecodecamp.org/ace-your-first-year-as-a-junior-developer-with-this-advice-bbc68b6fe2d9) - Chris Blakely 153 | - [The 14 habits of highly effective developers (Part 1)](https://dev.to/pavlosisaris/how-to-transition-from-junior-to-mid-level-developer-part-1-4gig) - Paul Isaris 154 | - [The 14 habits of highly effective developers (Part 2)](https://dev.to/pavlosisaris/the-14-habits-of-highly-effective-developers-part-2-2io0) - Paul Isaris 155 | 156 | 157 | [Back to top ↑](#the-javascript-developers-reading-list) 158 | 159 | 160 | [![All Contributors](https://img.shields.io/badge/all_contributors-10-orange.svg?style=flat-square)](#contributors) 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 |

edieblu

AlbertoM

Stephen Ham

NyiLynnHtwe

Aivan Monceller

Yusuf Adeyemo

Jamie Webb

Dami

Leonardo Ruhland

Ujjal Acharya
182 | 183 | 184 | 185 | 186 | -------------------------------------------------------------------------------- /code-of-conduct.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as 6 | contributors and maintainers pledge to making participation in our project and 7 | our community a harassment-free experience for everyone, regardless of age, body 8 | size, disability, ethnicity, sex characteristics, gender identity and expression, 9 | level of experience, education, socio-economic status, nationality, personal 10 | appearance, race, religion, or sexual identity and orientation. 11 | 12 | ## Our Standards 13 | 14 | Examples of behavior that contributes to creating a positive environment 15 | include: 16 | 17 | * Using welcoming and inclusive language 18 | * Being respectful of differing viewpoints and experiences 19 | * Gracefully accepting constructive criticism 20 | * Focusing on what is best for the community 21 | * Showing empathy towards other community members 22 | 23 | Examples of unacceptable behavior by participants include: 24 | 25 | * The use of sexualized language or imagery and unwelcome sexual attention or 26 | advances 27 | * Trolling, insulting/derogatory comments, and personal or political attacks 28 | * Public or private harassment 29 | * Publishing others' private information, such as a physical or electronic 30 | address, without explicit permission 31 | * Other conduct which could reasonably be considered inappropriate in a 32 | professional setting 33 | 34 | ## Our Responsibilities 35 | 36 | Project maintainers are responsible for clarifying the standards of acceptable 37 | behavior and are expected to take appropriate and fair corrective action in 38 | response to any instances of unacceptable behavior. 39 | 40 | Project maintainers have the right and responsibility to remove, edit, or 41 | reject comments, commits, code, wiki edits, issues, and other contributions 42 | that are not aligned to this Code of Conduct, or to ban temporarily or 43 | permanently any contributor for other behaviors that they deem inappropriate, 44 | threatening, offensive, or harmful. 45 | 46 | ## Scope 47 | 48 | This Code of Conduct applies both within project spaces and in public spaces 49 | when an individual is representing the project or its community. Examples of 50 | representing a project or community include using an official project e-mail 51 | address, posting via an official social media account, or acting as an appointed 52 | representative at an online or offline event. Representation of a project may be 53 | further defined and clarified by project maintainers. 54 | 55 | ## Enforcement 56 | 57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 58 | reported by contacting the project team at [feedback@tiffanyrwhite.com](mailto:feedback@tiffanyrwhite.com). All 59 | complaints will be reviewed and investigated and will result in a response that 60 | is deemed necessary and appropriate to the circumstances. The project team is 61 | obligated to maintain confidentiality with regard to the reporter of an incident. 62 | Further details of specific enforcement policies may be posted separately. 63 | 64 | Project maintainers who do not follow or enforce the Code of Conduct in good 65 | faith may face temporary or permanent repercussions as determined by other 66 | members of the project's leadership. 67 | 68 | ## Attribution 69 | 70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, 71 | available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 72 | 73 | [homepage]: https://www.contributor-covenant.org 74 | 75 | For answers to common questions about this code of conduct, see 76 | https://www.contributor-covenant.org/faq 77 | 78 | -------------------------------------------------------------------------------- /contributing.md: -------------------------------------------------------------------------------- 1 | # Contribution Guidelines 2 | 3 | Please note that this project is released with a [Contributor Code of Conduct](code-of-conduct.md). By participating in this project you agree to abide by its terms. 4 | 5 | ## Adding something to the list 6 | If you want to add a book or article to this list, make sure it is: 7 | 8 | 1. either something you've read and enjoyed, recommended, and 9 | 2. it is about JavaScript and its frameworks or developer soft skills 10 | 11 | I appreciate that CSS is a part of web development but I *strictly* want to focus on JavaScript, libraries, frameworks, and all related technologies. This is something that I would have benefited from when I started so I want to make sure those who struggle with JavaScript have a resource. 12 | 13 | If you have something to contribute, please [submit a pull request](https://github.com/twhite96/js-dev-reads/pulls). All contributors are welcome. 14 | 15 | ## Updating your Pull Request 16 | 17 | Sometimes, a maintainer of an awesome list will ask you to edit your Pull Request before it is included. This is normally due to spelling errors or because your PR didn't match the awesome-* list guidelines. 18 | 19 | [Here](https://github.com/RichardLitt/knowledge/blob/master/github/amending-a-commit-guide.md) is a write up on how to change a Pull Request, and the different ways you can do that. 20 | --------------------------------------------------------------------------------