🦸‍♀️ A super template for Next.js with a pack of incredible tools

Overview

Next-Plate

Next-Plate Banner

🦸‍♀️ A super template for Next.js with a pack of incredible tools


License MIT
Open Source Made with TypeScript Built with Love
Powered by Vercel


Bugs Maintainability Rating Quality Gate Status Reliability Rating Security Rating Vulnerabilities Renovate

Demo Desktop Demo Mobile

🌎 Translations

English Português Brasileiro

🚀 Demo →

Deploy your own copy of this template in just a few clicks!

📖 Introduction

This is a complete template with all you need for your next React projects and all the best practices of JAMStack.

This template have a bunch of folders, code examples and configurations. Feel free to edit or remove them, including this README!

Customize and enjoy!

📚 Documentation →

🌟 Features

This project features all the latest tools and good practices in web development!

Framework

  • ⚛️ Next.js – A complete React framework for hybrid and server rendering

Data Fetching

  • ✳️ React Query – Hooks for fetching, caching and updating asynchronous data in React
  • ❇️ SWR (alternative for React Query) – A React Hooks library for data fetching
  • 🔄 Axios – Promise based HTTP client for the browser and Node.js

State Management

  • 🐻 Zustand – A small, fast and scalable bearbones state-management solution using simplified flux principles

Design System and Animations

  • 🎨 Chakra-UI – A simple, modular and accessible component library that gives you the building blocks to build your React applications
  • 🎞️ Framer Motion – A production-ready motion library for React
  • React Icons – A collection of popular icons to React projects

Form Validation

  • 📋 React Hook Form – Performant, flexible and extensible forms with easy-to-use validation
  • 🚨 Yup – A schema builder for runtime value parsing and validation

Tests

  • 🃏 Jest – A delightful JavaScript Testing Framework with a focus on simplicity
  • 🐙 Testing Library – Simple and complete testing utilities that encourage good testing practices

Design Patterns

  • ESLint – Find and fix problems in your JavaScript code
  • 🎀 Prettier – An opinionated code formatter, supporting multiple languages and code editors
  • 🐺 Husky – Modern native Git hooks made easy
  • 💩 lint-staged – Run linters against staged git files and don't let 💩 slip into your code base
  • 📓 commitlint – Helps your team adhering to a commit convention
  • 🏷️ Standard Version – A utility for versioning using semver and CHANGELOG generation powered by Conventional Commits

Analysis

  • 🕵🏻‍♂️ why-did-you-render (optional) – Notify you about potentially avoidable re-renders

Additional Plugins

  • 🗃️ next-compose-plugins – Provides a cleaner API for enabling and configuring plugins for Next.js
  • 📱 next-pwa – A PWA plugin for Next.js
  • 📈 next-seo – A plugin that makes managing your SEO easier in Next.js projects
  • 🤖 next-sitemap – Sitemap generator for Next.js

▶️ Getting Started

📙 Creating a New Repository on GitHub

  1. Click on "Use this template" button
  2. Configure your new repository and click on "Create repository from template" button
  3. Now you can clone the generated repository to your local machine:
 $ git clone https://github.com/<YOUR-GITHUB-LOGIN>/<NAME-OF-YOUR-GENERATED-REPOSITORY>.git

🛠️ Installation

Before you can start developing your super application, you need to install the project's dependencies.

Move yourself to the root of the project:

$ cd <NAME-OF-YOUR-GENERATED-REPOSITORY>

Install all dependencies of the project:

$ npm install
# or
$ yarn install

⌨️ Development

Once all dependencies have been installed, you can run the local development server:

$ npm run dev
# or
$ yarn dev

Now just code!

🖥️ Production

After applying the changes, you can generate a build to test and/or deploy to your production environment.

Make a production build:

$ npm run build
# or
$ yarn build

And then run the build:

$ npm start
# or
$ yarn start
View more commands you can use

Lint

$ npm run lint
# or
$ yarn lint

Lint and Fix

$ npm run lint:fix
# or
$ yarn lint:fix

Test

$ npm run test # or npm run test:watch
# or
$ yarn test # or yarn test:watch

Type Checking

$ npm run type-check
# or
$ yarn type-check

Format

$ npm run format
# or
$ yarn format

Interactive Update Tool

$ npm run up
# or
$ yarn up

Update All Dependencies

$ npm run up-latest
# or
$ yarn up-latest

Release As Major Version

$ npm run release-as-major
# or
$ yarn release-as-major

Release As Minor Version

$ npm run release-as-minor
# or
$ yarn release-as-minor

Release As Patch Version

$ npm run release-as-patch
# or
$ yarn release-as-patch

Publish Release

$ npm run push-release
# or
$ yarn push-release

Get Updates From Remote and Maintain Current Changes

$ npm run pull
# or
$ yarn pull

⚙️ Extra Configurations

SWR

Swap to SWR

Install the SWR on the project:

$ npm install swr
# or
$ yarn add swr

Remove all import lines, providers and code blocks of React Query located in src/pages/_app.tsx and src/pages/[login].tsx.

That's it! Use the useFetch function to fetch your data in the application.

Wanna see a demo? Uncomment all import lines and code blocks of SWR implementation on src/pages/[login].tsx.

Why Did You Render

How to Activate

Put the babel.config.js file (located in the path src/scripts) in the project root and delete .babelrc file.

Uncomment the wdyr import line on pages/_app.tsx.

That's it! Now you can monitore React re-renders!

How to Uninstall

Just delete the babel.config.js and wdyr.ts files, remove wdyr import line on pages/_app.tsx and uninstall it:

$ npm uninstall @welldone-software/why-did-you-render
# or
$ yarn remove @welldone-software/why-did-you-render

📁 File Tree

See below the file tree to understand the project structure.

View file tree

Folders and files marked with (**) are optional, so you can delete then.

📂 next-plate/
┣ 📂 .github/                   # GitHub's folder configs **
┣ 📂 .husky/                    # Husky's folder
┃ ┣ 📃 commit-msg               # Commitlint git hook
┃ ┗ 📃 pre-commit               # Lint-staged git hook
┣ 📂 .vscode/                   # VSCode's workspace **
┣ 📂 public/                    # Public folder
┃ ┣ 📂 static/                  # Static files folder **
┃ ┃ ┣ 📂 icons/                 # Icons folder **
┃ ┃ ┣ 📂 images/                # Images folder **
┃ ┃ ┣ 📂 sounds/                # Sounds folder **
┃ ┃ ┗ 📂 videos/                # Videos folder **
┃ ┣ 📂 docs/                    # Documentation folder **
┃ ┃ ┣ 📂 demo/                  # Demonstrations project **
┃ ┃ ┗ 📂 translations/          # Translations folder **
┃ ┣ 📃 favicon.ico              # Icon tab browser
┃ ┣ 📃 site.webmanifest         # PWA config
┣ 📂 src/
┃ ┣ 📂 animations/              # Framer Motion Animations **
┃ ┣ 📂 components/              # App Components
┃ ┃ ┗ 📂 Motion/                # Chakra + Framer components **
┃ ┣ 📂 hooks/                   # React Hooks **
┃ ┃ ┗ 📃 useFetch.ts            # SWR fetch hook (optional) **
┃ ┣ 📂 interfaces/              # TypeScript Interfaces
┃ ┣ 📂 pages/                   # App pages
┃ ┣ 📂 scripts/                 # Additional scripts **
┃ ┃ ┣ 📃 babel.config.js        # Babel config with WDYR **
┃ ┃ ┗ 📃 wdyr.ts                # WDYR file **
┃ ┣ 📂 services/                # Services
┃ ┃ ┣ 📂 global/
┃ ┃ ┃ ┗ 📃 api.ts               # AXIOS config
┃ ┃ ┗ 📂 users/
┃ ┃   ┣ 📃 index.ts             # React Query Configuration
┃ ┃   ┗ 📃 keys.ts              # React Query Key
┃ ┣ 📂 stores/                  # Zustand stores
┃ ┣ 📂 styles/                  # Styles folder
┃ ┃ ┣ 📃 bgImages.ts            # SVG background images **
┃ ┃ ┗ 📃 theme.ts               # Chakra-UI theme
┃ ┗ 📂 utils/                   # Useful functions **
┣ 📃 .babelrc                   # Default Babel config
┣ 📃 .editorconfig              # Editor config
┣ 📃 .eslintignore              # ESLint ignore
┣ 📃 .eslintrc                  # ESLint config
┣ 📃 .gitignore                 # Git ignore
┣ 📃 .versionrc                 # Versioning config
┣ 📃 .commitlintrc              # Commitlint config
┣ 📃 jest.config.js             # Jest config
┣ 📃 jest.setup.js              # Jest setup
┣ 📃 LICENSE                    # License of the project
┣ 📃 next-env.d.ts              # Next.js types to TypeScript
┣ 📃 next-seo.config.js         # Next-SEO config
┣ 📃 next-sitemap.config.js     # Next-Sitemap config
┣ 📃 next.config.js             # Next.js config
┣ 📃 .prettierrc                # Prettier config
┣ 📃 README.md                  # Main README
┣ 📃 renovate.json              # Renovate Bot config **
┣ 📃 tsconfig.json              # TypeScript config

📜 License

Although you don't have to, if you reuse this template for your projects I would appreciate it if you would credit me and provide a link to my GitHub profile in the footer of your project. Thanks!

This project is licensed under the MIT License - see the LICENSE page for details.


Give a star to maintain this project!

❤️ Thanks for your attention!

👨‍💻 Good Hacking!


"Buy Me A Coffee"

Comments
Owner
Gustavo Matheus Morinaga Cardoso
👨‍💻👨🏻‍🎨 Full-Stack Developer, passionate about Front-End, Design and Technology in general
Gustavo Matheus Morinaga Cardoso
Hemsida för personer i Sverige som kan och vill erbjuda boende till människor på flykt

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

null 4 May 3, 2022
Kurs-repo för kursen Webbserver och Databaser

Webbserver och databaser This repository is meant for CME students to access exercises and codealongs that happen throughout the course. I hope you wi

null 14 Jan 3, 2023
Incredible drastically simplifies creation of developer video content. It offers a unified workflow to storyboard, record, collaborate and produce the video.

?? Introduction Incredible drastically simplifies creation of developer video content. It offers a unified workflow to storyboard, record, collaborate

Incredible 113 Dec 6, 2022
Incredible resources (with links) to help up-skill yourselves on various fields. Resources like programming, designing, engineering and much more and completely Open Source.

Shiryoku Incredible resources (with links) to help up-skill yourselves on various fields. Resources like programming, designing, engineering and much

Kunal Keshan 22 Dec 15, 2022
💻 A simple Create Next App template to start your projects with Next.js, TypeScript, ESLint, Prettier and other tools.

⚡ Next Typescript Template ⚡ A simple Create Next App template to start your projects with Next.js, TypeScript, ESLint, Prettier and other tools. Quic

João Gabriel 13 Nov 23, 2022
lua-pack is an advanced lua bundler similar to webpack made for lua 5.1+ written in js

lua-pack is an advanced lua bundler similar to webpack made for lua 5.1+ written in js that makes working on large scale projects easy and fast. it takes all the files in your project and packs them into a single production ready file.

Chris 10 May 14, 2022
Web-pack based Todo-List Website built using HTML, CSS and JavaScript. Tested Using Jest.

To-DO List Live Link Additional description about the project and its features: Built With HTML and CSS Javascript HTML & CSS3 & JavaScript Linters Gi

Saadat Ali 8 Mar 31, 2022
Make a release for Jitsi test browser page (minify js/css files, pack the app in one file).

JitsiTestBrowserTool This tools allows you to make a release for Jitsi test browser page (minify js/css files, pack the app in one file). /!\ Not work

GIP Renater 4 Aug 15, 2022
Pack all your node_modules and other files you want inside your project to a zip file.

?? Node Modules Packer Use Cases | Usage | Examples | Headless | Benchmarks | Reference This is a library to package all your node_modules and other f

Vinicius Lourenço 14 Dec 1, 2022
Generates MIDI chords and scales, which can be downloaded as a free MIDI pack.

MIDI Chords and Scales Pack Description This projects generates (~400) MIDI chords and (~300) MIDI scales, which can be downloaded as a free MIDI pack

Simon Heimler 10 Dec 14, 2022
WIP: Power-pack for Turbo Streams

TurboPower turbo_power is a power-pack for Turbo Streams. It provides Turbo Streams with a bunch of new actions and additionally adds the morph action

Marco Roth 123 Jan 4, 2023
Simple utils to pack arrays, objects and strings to a flat object (and back again).

packrup Simple utils to pack (and unpack) arrays and strings to a flat object. Status: In Development Please report any issues ?? Made possible by my

Harlan Wilton 15 Dec 23, 2022
Leader Board is a simple project based on JavaScript programing language. The purpose of this project is to work with APIs and ASYNC & AWAIT methods. I have used vanilla JavaScript with web pack to implement this project

Leader Board - JavaScript Project Table of contents Overview The challenge Screenshot Links Project Setup commands My process Built with What I learne

Mahdi Rezaei 7 Oct 21, 2022
🛠 Solana Web3 Tools - A set of tools to improve the user experience on Web3 Solana Frontends.

?? Solana Web3 Tools - A set of tools to improve the user experience on Web3 Solana Frontends.

Holaplex 30 May 21, 2022
A super simple minimal tRPC for next-js

Typed Routes A way to have fully typed routes in next, without all the complexity of tRPC. This is more for super minimal use cases, where you don't n

Rahul Tarak 4 Dec 28, 2022
A fullstack next.js template with all the fun stuff like next auth, mongodb, prisma, chakra ui

Welcome to FullStack Next.js template ?? A fullstack next.js template with all the fun stuff like next auth, mongodb, prisma, chakra ui ✨ Demo Tech Ne

Avneesh Agarwal 10 Oct 16, 2022
A template for site builders and low-code tools.

Platforms Starter Kit The all-in-one starter kit for building platforms on Vercel. Introduction · Guide · Demo · Kitchen Sink · Contributing Deploy Yo

Vercel 2.3k Jan 3, 2023
⚡⚙️ Fast prototyping with template engines and integrated frontend tools. Vituum is a small wrapper around Vite.

⚡ ⚙️ Vituum Still in early development. Fast prototyping with template engines and integrated frontend tools ⚡ Vite integrated ??️ Fast prototyping ??

Vituum 103 Jan 3, 2023
tooldb is a (soon) massive collection of frameworks and tools. It's build on Flowbite, Next.js, Tailwind CSS and uses Supabase.

tooldb is a (soon) massive collection of frameworks and tools. It's build on Flowbite, Next.js, Tailwind CSS and uses Supabase.

Julian Yaman 12 Jul 14, 2022