Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gustavomorinaga/next-plate
π¦ΈββοΈ A super template for Next.js with a pack of incredible tools
https://github.com/gustavomorinaga/next-plate
axios chakra-ui commitlint eslint framer-motion gustavomorinaga husky lint-staged nextjs prettier pwa react-hook-form react-icons react-query ready-to-use template typescript yup zustand
Last synced: 6 days ago
JSON representation
π¦ΈββοΈ A super template for Next.js with a pack of incredible tools
- Host: GitHub
- URL: https://github.com/gustavomorinaga/next-plate
- Owner: gustavomorinaga
- License: mit
- Created: 2022-01-18T03:24:50.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2024-10-23T04:56:26.000Z (14 days ago)
- Last Synced: 2024-10-24T19:52:33.479Z (12 days ago)
- Topics: axios, chakra-ui, commitlint, eslint, framer-motion, gustavomorinaga, husky, lint-staged, nextjs, prettier, pwa, react-hook-form, react-icons, react-query, ready-to-use, template, typescript, yup, zustand
- Language: TypeScript
- Homepage: https://next-plate.vercel.app
- Size: 6.38 MB
- Stars: 112
- Watchers: 3
- Forks: 12
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
- awesome - gustavomorinaga/next-plate - π¦ΈββοΈ A super template for Next.js with a pack of incredible tools (TypeScript)
README
Next-Plate
π¦ΈββοΈ A super template for Next.js with a pack of incredible tools---
---
---
## π Translations
[](./public/docs/translations/README.en-US.md)
[](./public/docs/translations/README.pt-BR.md)
[](./public/docs/translations/README.ko-KR.md)## π [Demo β](https://next-plate.vercel.app)
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](https://jamstack.org)**.
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 β](https://next-plate.vercel.app/docs)
## π Features
This project features all the latest tools and good practices in web development!
### Framework
- βοΈ **[Next.js](https://nextjs.org)** β A complete React framework for hybrid and server rendering
### Data Fetching
- β³οΈ **[React Query](https://tanstack.com/query)** β Hooks for fetching, caching and updating asynchronous data in React
- βοΈ **[SWR](https://swr.vercel.app)** (alternative for React Query) β A React Hooks library for data fetching
- π **[Axios](https://github.com/axios/axios)** β Promise based HTTP client for the browser and Node.js### State Management and Hooks
- π» **[Zustand](https://zustand-demo.pmnd.rs)** β A small, fast and scalable bearbones state-management solution using simplified flux principles
- π **[react-use](https://github.com/streamich/react-use)** β Collection of essential React Hooks### Design System and Animations
- π¨ **[Chakra-UI](https://chakra-ui.com)** β A simple, modular and accessible component library that gives you the building blocks to build your React applications
- ποΈ **[Framer Motion](https://www.framer.com/motion)** β A production-ready motion library for React
- β¨ **[React Icons](https://react-icons.github.io/react-icons)** β A collection of popular icons to React projects### Form Validation
- π **[React Hook Form](https://react-hook-form.com)** β Performant, flexible and extensible forms with easy-to-use validation
- π¨ **[Yup](https://github.com/jquense/yup)** β A schema builder for runtime value parsing and validation### Tests
- π **[Jest](https://jestjs.io)** β A delightful JavaScript Testing Framework with a focus on simplicity
- π **[Testing Library](https://testing-library.com)** β Simple and complete testing utilities that encourage good testing practices### Design Patterns
- β **[ESLint](https://eslint.org)** β Find and fix problems in your JavaScript code
- π **[Prettier](https://prettier.io)** β An opinionated code formatter, supporting multiple languages and code editors
- πΊ **[Husky](https://github.com/typicode/husky)** β Modern native Git hooks made easy
- π© **[lint-staged](https://github.com/okonet/lint-staged)** β Run linters against staged git files and don't let π© slip into your code base
- π **[commitlint](https://commitlint.js.org)** β Helps your team adhering to a commit convention
- π·οΈ **[Standard Version](https://github.com/conventional-changelog/standard-version)** β A utility for versioning using semver and CHANGELOG generation powered by Conventional Commits### Analysis
- π΅π»ββοΈ **[why-did-you-render](https://github.com/welldone-software/why-did-you-render)** (optional) β Notify you about potentially avoidable re-renders
### Additional Plugins
- ποΈ **[next-compose-plugins](https://github.com/cyrilwanner/next-compose-plugins)** β Provides a cleaner API for enabling and configuring plugins for Next.js
- π± **[next-pwa](https://github.com/shadowwalker/next-pwa)** β A PWA plugin for Next.js
- π **[next-seo](https://github.com/garmeeh/next-seo)** β A plugin that makes managing your SEO easier in Next.js projects
- π€ **[next-sitemap](https://github.com/iamvishnusankar/next-sitemap)** β Sitemap generator for Next.js
- π **[Partytown](https://partytown.builder.io/)** β Relocate resource intensive third-party scripts off of the main thread and into a web worker## βΆοΈ 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:```bash
$ git clone https://github.com//.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:
```bash
$ cd
```> For the next steps, choose a package manager of your choice and change the commands contained in the `package.json` scripts. See their documentation for more information:
>
> - [PNPM](https://pnpm.io/pt/cli/add)
> - [NPM](https://docs.npmjs.com/cli/v6/commands)
> - [Yarn](https://classic.yarnpkg.com/en/docs/cli)Install all dependencies of the project:
```bash
# PNPM
$ pnpm install
# NPM
$ npm install
# Yarn
$ yarn install
```### β¨οΈ Development
Once all dependencies have been installed, you can run the local development server:
```bash
# PNPM
$ pnpm run dev
# NPM
$ npm run dev
# Yarn
$ 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:
```bash
# PNPM
$ pnpm run build
# NPM
$ npm run build
# Yarn
$ yarn build
```And then run the build:
```bash
# PNPM
$ pnpm start
# NPM
$ npm start
# Yarn
$ yarn start
```View more commands you can use
Lint
```bash
# PNPM
$ pnpm run lint
# NPM
$ npm run lint
# Yarn
$ yarn lint
```
Lint and Fix
```bash
# PNPM
$ pnpm run lint:fix
# NPM
$ npm run lint:fix
# Yarn
$ yarn lint:fix
```
Test
```bash
# PNPM
$ pnpm run test # or pnpm run test:watch
# NPM
$ npm run test # or npm run test:watch
# Yarn
$ yarn test # or yarn test:watch
```
Type Checking
```bash
# PNPM
$ pnpm run type-check
# NPM
$ npm run type-check
# Yarn
$ yarn type-check
```
Format
```bash
# PNPM
$ pnpm run format
# NPM
$ npm run format
# Yarn
$ yarn format
```
Interactive Update Tool
```bash
# PNPM
$ pnpm run up
# NPM
$ npm run up
# Yarn
$ yarn up
```
Update All Dependencies
```bash
# PNPM
$ pnpm run up-latest
# NPM
$ npm run up-latest
# Yarn
$ yarn up-latest
```
Release As Major Version
```bash
# PNPM
$ pnpm run release-as-major
# NPM
$ npm run release-as-major
# Yarn
$ yarn release-as-major
```
Release As Minor Version
```bash
# PNPM
$ pnpm run release-as-minor
# NPM
$ npm run release-as-minor
# Yarn
$ yarn release-as-minor
```
Release As Patch Version
```bash
# PNPM
$ pnpm run release-as-patch
# NPM
$ npm run release-as-patch
# Yarn
$ yarn release-as-patch
```
Publish Release
```bash
# PNPM
$ pnpm run push-release
# NPM
$ npm run push-release
# Yarn
$ yarn push-release
```
Get Updates From Remote and Maintain Current Changes
```bash
# PNPM
$ pnpm run pull
# NPM
$ npm run pull
# Yarn
$ yarn pull
```### βοΈ Extra Configurations
SWR
Swap to SWR
Install the SWR on the project:
```bash
# PNPM
$ pnpm install swr
# NPM
$ npm install swr
# Yarn
$ 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:
```bash
# PNPM
$ pnpm uninstall @welldone-software/why-did-you-render
# NPM
$ npm uninstall @welldone-software/why-did-you-render
# Yarn
$ 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.
```txt
π 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](LICENSE) page for details.
---
### β Give a star to maintain this project!
### β€οΈ Thanks for your attention!
### π¨βπ» Good Hacking!
---
[!["Buy Me A Coffee"](https://cdn.buymeacoffee.com/buttons/default-red.png)](https://www.buymeacoffee.com/gmatthewsfeuer)