├── .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": "[](#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 |
4 |
5 |
The JavaScript Developer's Reading List
6 |
7 |
8 | > A list of hand-picked books and articles for JavaScript developers
9 |
10 | [](https://forthebadge.com) [](https://forthebadge.com) [](https://forthebadge.com) [](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 | [](#contributors)
161 |
162 |
163 |
164 |
165 |
166 |
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 |
--------------------------------------------------------------------------------