<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/sources/logrocket/best-of/2021/07" -->

---
title: Best LogRocket posts — July 2021 | daily.dev
description: The most upvoted LogRocket posts from July 2021, curated by the daily.dev community.
canonical: https://daily.dev/sources/logrocket/best-of/2021/07
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:url: https://daily.dev/sources/logrocket/best-of/2021/07
og:type: website
og:site_name: daily.dev
og:title: Best LogRocket posts — July 2021 | daily.dev
og:description: The most upvoted LogRocket posts from July 2021, curated by the daily.dev community.
og:image: https://media.daily.dev/image/upload/s--VAY5ToZt--/f_auto/v1724209435/public/daily.dev%20-%20open%20graph
---

# Best of LogRocket — July 2021

1. 1  
[](https://daily.dev/posts/understanding-javascript-decorators-sh1btedln "Understanding JavaScript decorators")  
Article  
![Avatar of logrocket](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/logrocket)LogRocket · 5y  
Understanding JavaScript decorators  
Decorating is simply wrapping one piece of code with another, thereby decorating it. A decorator (also known as a decorator function) can additionally refer to the design pattern that wraps a function with another function to extend its functionality. The concept of decorators is not new in JavaScript because higher-order functions are a form of function decorators. The TC39 class decorator proposal aims to solve this problem.  
40
2. 2  
[](https://daily.dev/posts/getting-started-with-the-notion-api-qjzpsiab3 "Getting started with the Notion API")  
Article  
![Avatar of logrocket](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/logrocket)LogRocket · 5y  
Getting started with the Notion API  
Notion is a customizable project management software that makes it easy to collaborate on projects and pages. Some popular alternatives to Notion are Trello, Jira, and Airtable. In this tutorial, we’ll use Notion to create a database, connect to the Notion API, and create a small Node.js server that uses Fastify to serve up content.  
21  
1
3. 3  
[](https://daily.dev/posts/vue-native-vs-react-native-4z8fozr3b "Vue Native vs. React Native")  
Article  
![Avatar of logrocket](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/logrocket)LogRocket · 5y  
Vue Native vs. React Native  
Vue Native is a cross-platform framework that wraps the Vue.js syntax around React Native. Because Vue Native’s code transpiles into React Native before it compiles into a mobile app, you don’t need to learn React from scratch. Both frameworks are open source for anyone to contribute their source code to and use.  
18  
1
4. 4  
[](https://daily.dev/posts/building-a-next-js-shopping-cart-app-dgulhqwmy "Building a Next.js shopping cart app")  
Article  
![Avatar of logrocket](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/logrocket)LogRocket · 5y  
Building a Next.js shopping cart app  
Next.js is the React framework by Vercel. This tutorial details how to build a shopping cart web app for a fictional game store. We’ll cover the following features:Setting up a Next.js project with create-next-app. Styling with CSS modules. Image optimization with the <Image> component. Integrating Redux Toolkit for state management.  
17
5. 5  
[](https://daily.dev/posts/building-a-url-shortener-with-node-js-gf3ranywv "Building a URL shortener with Node.js")  
Article  
![Avatar of logrocket](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/logrocket)LogRocket · 5y  
Building a URL shortener with Node.js  
URL shorteners like Bitly and Cuttly are incredibly popular. In this article, we are going to create a similar tool by building an API service that shortens the URLs provided to it. For each URL passed into our API, we will generate a unique ID and create a short URL with it. Then, the long URL, short URL, and unique ID will be stored in the database.  
14
6. 6  
[](https://daily.dev/posts/getting-started-with-peerjs-nkzykpepo "Getting started with PeerJS")  
Article  
![Avatar of logrocket](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/logrocket)LogRocket · 5y  
Getting started with PeerJS  
PeerJS is a library that simplifies WebRTC and provides a complete, configurable, and easy-to-use API. It allows you to provide a way of exchanging video, audio, and other data between different users on your page, independently of the users’ specific browser and device types.  
11  
1
7. 7  
[](https://daily.dev/posts/creating-contact-forms-with-the-notion-api-and-next-js-1d9lpjrw5 "Creating contact forms with the Notion API and Next.js")  
Article  
![Avatar of logrocket](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/logrocket)LogRocket · 5y  
Creating contact forms with the Notion API and Next.js  
With Next.js and the Notion API, you can use the database feature to save all submissions directly to your Notion workspace. This is especially useful if you already use Notion as a project management tool and can bring everything together in one place. We’ll use two packages: react-toastify to display toast notifications on form submissions and @hq/client to interact with the Notions API.  
10  
1

[See all LogRocket archives](/sources/logrocket/best-of)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@graph":[{"@type":"CollectionPage","@id":"https://daily.dev/sources/logrocket/best-of/2021/07#page","url":"https://daily.dev/sources/logrocket/best-of/2021/07","name":"Best LogRocket Posts — July 2021","description":"The most upvoted LogRocket posts from July 2021, curated by the daily.dev community.","isPartOf":{"@type":"WebSite","url":"https://daily.dev"}},{"@type":"ItemList","@id":"https://daily.dev/sources/logrocket/best-of/2021/07#items","numberOfItems":7,"itemListElement":[{"@type":"ListItem","position":1,"url":"https://daily.dev/posts/understanding-javascript-decorators-sh1btedln","name":"Understanding JavaScript decorators"},{"@type":"ListItem","position":2,"url":"https://daily.dev/posts/getting-started-with-the-notion-api-qjzpsiab3","name":"Getting started with the Notion API"},{"@type":"ListItem","position":3,"url":"https://daily.dev/posts/vue-native-vs-react-native-4z8fozr3b","name":"Vue Native vs. React Native"},{"@type":"ListItem","position":4,"url":"https://daily.dev/posts/building-a-next-js-shopping-cart-app-dgulhqwmy","name":"Building a Next.js shopping cart app"},{"@type":"ListItem","position":5,"url":"https://daily.dev/posts/building-a-url-shortener-with-node-js-gf3ranywv","name":"Building a URL shortener with Node.js"},{"@type":"ListItem","position":6,"url":"https://daily.dev/posts/getting-started-with-peerjs-nkzykpepo","name":"Getting started with PeerJS"},{"@type":"ListItem","position":7,"url":"https://daily.dev/posts/creating-contact-forms-with-the-notion-api-and-next-js-1d9lpjrw5","name":"Creating contact forms with the Notion API and Next.js"}]},{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Sources","item":"https://daily.dev/sources"},{"@type":"ListItem","position":3,"name":"LogRocket","item":"https://daily.dev/sources/logrocket"},{"@type":"ListItem","position":4,"name":"Best of","item":"https://daily.dev/sources/logrocket/best-of"},{"@type":"ListItem","position":5,"name":"July 2021"}]}]}
```

