- You know how to share secret values with other employees. 📚
- You know how to use the command line to switch between users
- You know how to share secret values externally 📚
- You create pull requests with proper name and description 📚
- You squash merge your pull requests 📚
- You understand the pros and cos of git rebase vs git merge 📚
- You review PRs carefully and leave your comments 📚
- You add proper label in pull requests
- You interact with a repository using SSH 📚
- You create your branches under the proper folder (feature, fix, hotfix)
- You name your commits properly 📚
- You know how to create and reference issues
- You know how to verify when a build check failed
- You know how to create GitHub Wiki pages
- You know how to reference a Jira ticket in your commit
- You know how to verify when a build check failed
- You know how to create groups and channels
- You know how to create Confluence pages
- You know how to create goals and mark them as complete
- You know how to give praise and add talk topics to a 1:1 meeting
- You know how to create tickets and write comments
- You can configure email signatures
- You can configure local email client
- You can read and write emails
React is an open-source JavaScript library for building user interfaces. It is maintained by Facebook and a community of individual developers and companies. React can be used as a base in the development of single-page or mobile applications.
- You know how to write a function component. 📚
- You know the difference between function and class components. 📚
- You know how to define and modify local component's state. 📚
- You know what Virtual DOM is and how React uses it to render components. 📚
- You know how to use element events and how incorporate them in React lifecycle 📚
- You know component's lifecycle and know how to use each of the phases. 📚
- You know Context API 📚
- You can use refs to bind to a native DOM element and interact with it in component lifecycle 📚
- You understand concepts of higher order components and render functions, as well as their differences, pros and cons. 📚
- You know how to prevent components from re-rendering. 📚
- You know how to reconcile global state with local component's state
- You know how and when to use portals. 📚
- You can use
useState
anduseEffect
hooks. 📚 - You know how hook dependency array works. 📚
- You understand pros and cons of using
useCallback
hook. 📚 - You know how to write a custom React hook. 📚
- You know how to incorporate react-use hooks in your component 📚
- You understand the advantages/disadvantages of the API compared to Lodash
- You can describe full Redux flow 📚
- You know how to define a new Redux module (Reducer, Saga, Selector) 📚
- You know how to dispatch Redux action (outside React context)
- You know how to apply selector functions to
useSelector
hook. 📚 - You know how to dispatch actions from React component. 📚
- You can use one of the toolset libraries to create reducers, action types, and action creators more efficiently
- You know how to create a reducer. 📚
- You know how to create an action creator 📚
- You understand how to leverage the fact that action creators serialize to action's type string.
- You know how to define a reducer function for a specific action type.
- You understand benefits of using immutable data structures in Redux applications 📚
- You know how to use at least one of the libraries that provide immutable data structures in redux state 📚
- You know how to create a reducer that uses immer 📚
- You know how to convert immutable structure to regular JavaScript object
- You know how to create a selector with
createSelector
function 📚 - You know how to create a selector that uses multiple other selectors as an input.
- You understand the concept of side effects 📚
- You know how to take a side effect and dispatch an action based on it 📚
- You know how to select data from Redux state using selector functions inside sagas. 📚
- You understand the concept of Javascript generators 📚
- You know to sequence Sagas and how to run them in parallel 📚
- You know how to wait for an another action from inside the running saga. 📚
- You know how to create your own routine
- You know how to promisify a routine
- You understand the advantages of standardizing action type's name
- You know how to write CSS rules 📚
- You know how to apply basic styles to elements (colour, size, position, etc)
- You know how to display and properly scale images 📚
- You know how to center an element horizontally and vertically 📚
- You know how to use media queries
- You know how to add and use webfonts 📚
- You know how to display different images depending on the screen pixel density ratio 📚
- You can apply global styles 📚
- You can create a styled component for a primitive element 📚
- You can extend styles of an existing component 📚
- You can implement media queries 📚
- You can apply styles to 3rd party components that only support styling by classnames
- You know how to use theme modes to apply different themes based on the context 📚
- You know how to use theme variants to apply different styles to a component based on the context
You can learn how to style HTML elements with flexbox by reading this awesome guide https://css-tricks.com/snippets/css/a-guide-to-flexbox/
- You know how to use column and row layouts 📚
- You know how to align children elements 📚
- You know how to stretch child element to the size of its parent 📚
- You can properly use flex-basis and flex-wrap 📚
- You can explain benefits of the library
- You know how to use this library in a project
- You know how to divide a web page to rows and columns
- You can position elements in a grid
- You can define and use named grid areas
- You can align items in grid cells
- You understand basics of at least one of the UI Kit libraries 📚
- You have used one of the UI Kit libraries in a project
- You used at least one of the icon libraries in a project
- You understand the emails engine support for HTML elements and CSS styles 📚
- You know how to write CSS in order to be interpreted by email engines
- You know how to attach images so they're properly displayed
- You know how to incorporate backend variables in order to properly present in the email
- You know and use email templating tools to facilitate the creation of emails 📚
- You know how to create a Date object for a specific date 📚
- You know what ISO 8601 standard format is and how to parse it to a date object 📚
- You know what unix timestamp is and how to parse it to a date object 📚
- You know how to create a date-fns date object for specific date 📚
- You know how to format and display a date object using standard format strings 📚
- You know how to convert date into a different timezone (usually user's local timezone)
- You know how to manipulate, compare date objects
- You can create a simple route structure using Switch and Route 📚
- You know how to add parameters to a route, and make them required or optional 📚
- You know how to match exactly the route needed 📚
- You know how to render 404 pages 📚
- You know how to interact with browser history via the history API 📚
- You know how to use basic router hooks (useHistory, useLocation, useParams, useRouteMatch) 📚
- You know how to manipulate history's location object
- You know how to use in order to render a needed component in a given occasion
- You know to how separate private routes from public routes
- You know how to use basic components - Link, NavLink 📚
You don't need to know all of the charting libraries. One is enough, but make sure to master it!
- You used at least one charting library in a project
- You implemented custom interactive charts using one of the charting libraries
- You used and know well at least one of the react animation libraries
- You know how to apply CSS or inline styles to add transition between components being rendered 📚
- You understand the 4 states of react-transition-group
- You can animate elements after application's state changes
- You know well at least one of the animation libraries
- You know how write CSS animations - transitions, keyframes 📚
- You know what properties to add in order to provide the best browser performance in an animation
- You know how to animate elements after they appear in the viewport
- You know what parallax animation is and can implement it either manually or using one of the available libraries
- You know and use React-intl components 📚
- You know how to create messages files using defineMessage api 📚
- You know how to use
useIntl
hook
- You know how to format a message passing values and date-time stamps
- You know how to use standard HTML Audio and Video tags
- You know which formats and codecs should be used to support all modern browsers
- You have used at least one video player libraries
- You understand what Service Workers are and the APIs they allow us to interact among different browsers
- You can choose and install a SW plugin
- You understand the challenges of updating a website that has a service worker cache enabled
- You can order a list of elements
- You can drag and drop elements in specific areas
- You can change how the dragging element looks like when being dragged
- You can add validations on dragging and dropping elements
- You can specify the proper backend to support mobiles and desktops
- You have used one of the text editor libraries
- You know at least one of the CMS platforms and can easily use its basic features (defining data models, editing, etc)
- You understand how webpack works 📚
- You understand what webpack plugins are and you can add and configure when needed 📚
- You understand the key concepts: entry, output, loaders and plugins
- You know how to pass environmental variables to the application
- You're able to use inline commands to add, install & remove packages 📚
- You understand the benefits of
yarn.lock
file 📚 - You know how to run package.json scripts 📚
- You can upgrade packages using upgrade-interactive command
- You're able to use inline commands to add, install & remove packages 📚
- You understand the benefits of
package-lock.json
file 📚 - You know how to run package.json scripts 📚
- You can upgrade packages to newer versions
- You know how to define new package.json scripts
- You can generate a new app using create-react-app cli 📚
- You can create components using plop command line tool 📚
- You can create and update current templates
- You can prototype your components using storybooks
- You know how to describe component's prop types
- You know how to define shapes
- You use redux-devtools to see the current state and play with the state change history 📚
- You can create and configure redux-devtools so your store is available to be inspected
- You're able to install and configure react-hot-loader to refresh the build when component changes
- You can run eslint and fix the warnings and errors 📚
- You can add or exclude rules
- You can run prettier and auto-correct errors 📚
- You can add or exclude rules
- You know how to configure stylelint in within the project's build tools
- You know how to add a set o rules, exclude exceptions and add rules according to project needs
- You know how to inject env variables via dotenv and use them when needed
- You know when to commit env files to the repository and when not to
- You are aware of how SSR works and understand its use cases
- You understand the difference between prerendering + cache compared to full SSR
- You know how to set up and add plugins to Gatsby
- You understand the difference between gatsby-ssr, gatsby-node, gatsby-config and gatsby-browser files, and you know their roles
- You understand the concept of data sources and how Gatsby creates a data store that you can later query using GraphQL
- You know how to generate pages based on external sources (API, Markdown files)
- You know how to use gatsby-image to optimise the way we get images
- You know how to write static queries
- You know how to write page queries
- You know how to use page context variables to parametrize page queries
- You know the key concepts of functional programming: pure functions, same input -> same output, no side-effects 📚
- You know how to curry a function 📚
- You know how to compose a function from other functions
- You know how to pipe functions to produce a step by step processing sequence
- You can use basic functions such as map, mapValues, find, sort, sortBy, concat, equals, cond, ifElse 📚
- You can explain what CORS is and understand its shortcomings
- You know how to use axios to send HTTP request to an API endpoint 📚
- You know how to handle errors returned in HTTP response 📚
- You can configure axios to have a predefined base url for making requests
- You know to add meta data (for example JWT token) to the request headers
- You know how to create an HTTP request using native
fetch
📚 - You know how to handle errors returned in HTTP response 📚
- You know how to use humps to camelize or decamelize strings and object's keys
- You know how to split strings and object's keys containing numerical values
- You know how to parse URLs
- You know how to create a query string out of an object
- You use descriptive status codes instead of number literals
- You know how to use templating engines in various situations that require you to create a parametrized text file
- You know how to load custom webfonts available in Google Fonts 📚
- You know how to load custom webfonts provided to you in a file
- You understand HTML semantics and use them properly
- You generate page's content following best SEO practices
- You can configure SEO meta tags, OG tags and page descriptions
- You're able to generate descriptions based on content
- You know how to create schemas with proper types
- You know how to extend a schema type
- You know how to add transformations
- You know how to send a HTTP request to upload a file to backend
- You used and fulfill all requirements of at least one library that manages forms in react
- You know how to test custom React hooks.
- You know how to test a selector function.
- You know how to test components and functions
- You know how to mock functions and global objects
- You know how to add snapshot testing
- You know how to install and configure it in the build tools
- You know how to query for the component you want to test according to library best practices
- You know how to mock server's response
- You know how to test the redux store actions
- You can install and configure it in a project
- You can test if an HTML node has the proper style
- You can create snapshots with readable classes and proper styles properties
- You know how to test when an action has been put for processing
- You know how to provide an initial state for a saga execution
- You know how to check if the expected action has been called
- You know how to mock API calls with or without payload
- You know how to set configuration header's and meta data
- You can write assertions to check if API endpoint has been called with proper data
- You know how to mock Date object to return specific value in test environment
- You know how to run Lighthouse audits in Google Chrome DevTools
- You can analyse Lighthouse results and draw conclusions to improve your web app
- You know how to run PageSpeed Insights on your web app
- You can analyse PageSpeed Insights results and draw conclusions to improve your web app
- You understand and can explain what PCI Compliance is
- You know how to create and publish simple Netlify Functions implemented in NodeJS
- You know how to configure GTM to track pages and events
- You know how to configure google analytics to track pages
- You know how to configure events and set category, action and labels
- You know how to configure user properties
- You know how to extract style values (geometry, colours, fonts, etc.) from a design project 📚
- You know how to extract image assets from a design project
- You know how to extract vector icon asset from a project
- You know how to extract style values (geometry, colours, fonts, etc.) from a design project
- You know how to extract image assets from a design project
- You know how to extract vector icon asset from a project
https://developers.google.com/web/fundamentals/performance/rendering
- You know what reflow step is and what it does
- You know what paint step is and what it does
- You know what composite step is and what it does
We are very open to contributions to extend or change the requirements based on your gut and experience. To contribute you can use a pull request which will be later validated by our technical team and added to the main docs.
If you will spot any issues please add them in the Issues section.
This page is maintained by the 🔹 Flairs.ai and 🇵🇱 Apptension teams.
If you would like to create a dedicated Developer Handbook for your company, you can e-mail us 👉 [email protected]
© 2020 Flairs Sp. z o.o.
Built and maintained by Flairs and Apptension.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.