generated from hack4impact-utk/nextjs-template
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit d90924b
Showing
24 changed files
with
6,044 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
{ | ||
"plugins": ["@typescript-eslint", "prettier"], | ||
"extends": ["next/core-web-vitals", "plugin:@typescript-eslint/recommended"], | ||
"rules": { | ||
"@typescript-eslint/no-unused-vars": "error", | ||
"@typescript-eslint/no-explicit-any": "warn" | ||
}, | ||
"ignorePatterns": ["*.js", "node_modules/", ".next", "*.mjs"] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
# Description | ||
<!-- Please include a summary of the changes. Please also include relevant motivation and context. --> | ||
|
||
## Relevant issue(s) | ||
|
||
<!-- List the issues related to this PR here in the format "#[ISSUE NUMBER]". Ideally, there should only be one issue per PR. --> | ||
<!-- For example: | ||
- #1 | ||
- #2 | ||
--> | ||
|
||
## Questions | ||
<!-- Please note any questions or concerns about this PR here, or specific areas you would like reviewers to pay special attention to --> | ||
|
||
## Type of change | ||
|
||
<!-- Please delete options that are not relevant. --> | ||
|
||
- [ ] Bug fix (non-breaking change which fixes an issue) | ||
- [ ] New feature (non-breaking change which adds functionality) | ||
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) | ||
- [ ] This change requires a documentation update | ||
|
||
# Checklist: | ||
|
||
- [ ] My code follows the style guidelines of this project | ||
- [ ] I have performed a self-review of my code | ||
- [ ] I have commented my code, particularly in hard-to-understand areas | ||
- [ ] I have made corresponding changes to the documentation | ||
- [ ] My changes generate no new warnings | ||
- [ ] I have added tests that prove my fix is effective or that my feature works | ||
- [ ] I have assigned reviewers to this PR |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. | ||
|
||
# dependencies | ||
/node_modules | ||
/.pnp | ||
.pnp.js | ||
|
||
# testing | ||
/coverage | ||
|
||
# next.js | ||
/.next/ | ||
/out/ | ||
|
||
# production | ||
/build | ||
|
||
# misc | ||
.DS_Store | ||
*.pem | ||
|
||
# debug | ||
npm-debug.log* | ||
yarn-debug.log* | ||
yarn-error.log* | ||
|
||
# local env files | ||
.env*.local | ||
|
||
# vercel | ||
.vercel | ||
|
||
# typescript | ||
*.tsbuildinfo | ||
next-env.d.ts |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
#!/usr/bin/env sh | ||
. "$(dirname -- "$0")/_/husky.sh" | ||
|
||
pnpm exec lint-staged |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
module.exports = { | ||
// Type check TypeScript files | ||
'**/*.(ts|tsx)': () => 'yarn tsc --noEmit', | ||
|
||
// Lint & Prettify TS and JS files | ||
'**/*.(ts|tsx|js)': (filenames) => [ | ||
`yarn eslint ${filenames.join(' ')}`, | ||
`yarn prettier --write ${filenames.join(' ')}`, | ||
], | ||
|
||
// Prettify only Markdown and JSON files | ||
'**/*.(md|json)': (filenames) => | ||
`yarn prettier --write ${filenames.join(' ')}`, | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
{ | ||
"semi": true, | ||
"trailingComma": "es5", | ||
"singleQuote": true, | ||
"tabWidth": 2, | ||
"useTabs": false | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
{ | ||
// See https://go.microsoft.com/fwlink/?LinkId=827846 to learn about workspace recommendations. | ||
// Extension identifier format: ${publisher}.${name}. Example: vscode.csharp | ||
|
||
// List of extensions which should be recommended for users of this workspace. | ||
"recommendations": [ | ||
"dbaeumer.vscode-eslint", | ||
"eamodio.gitlens", | ||
"esbenp.prettier-vscode", | ||
"Orta.vscode-jest", | ||
"firsttris.vscode-jest-runner", | ||
"yoavbls.pretty-ts-errors" | ||
], | ||
// List of extensions recommended by VS Code that should not be recommended for users of this workspace. | ||
"unwantedRecommendations": [] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
{ | ||
"prettier.endOfLine": "lf", | ||
"files.exclude": { | ||
"**/.git": true, | ||
"**/.svn": true, | ||
"**/.hg": true, | ||
"**/CVS": true, | ||
"**/.DS_Store": true, | ||
"**/Thumbs.db": true, | ||
"**/.keep": true | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,123 @@ | ||
<!-- DELETE THIS SECTION AFTER USING TEMPLATE --> | ||
|
||
## About this repository | ||
|
||
This is a template repository meant to act as a starting point for new NextJS projects. This template will help us to standardize our development process and make it easier to onboard new developers. | ||
|
||
<!-- DELETE THIS SECTION AFTER USING TEMPLATE --> | ||
|
||
### What's Included | ||
|
||
- React/NextJS | ||
- MongoDB/Mongoose | ||
- `utils/db-connect.ts` contains connection caching functionality for accessing MongoDB. | ||
- Material UI | ||
- Zod | ||
- Jest | ||
- ESLint | ||
- Prettier | ||
- VS Code | ||
- Recommended extensions | ||
- [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) | ||
- [GitLens](https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens) | ||
- [Prettier](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) | ||
- [Jest](https://marketplace.visualstudio.com/items?itemName=Orta.vscode-jest) | ||
- [Jest Runner](https://marketplace.visualstudio.com/items?itemName=firsttris.vscode-jest-runner) | ||
- [Pretty TS Errors](https://marketplace.visualstudio.com/items?itemName=yoavbls.pretty-ts-errors) | ||
- GitHub | ||
- [Pull Request template](https://github.com/hack4impact-utk/nextjs-template/blob/main/.github/pull_request_template.md) | ||
- Pre-commit linting hook | ||
|
||
# Project Title | ||
|
||
## Overview | ||
|
||
Put an overview of the non-profit you are working with and what you are doing for them here. | ||
|
||
## Getting Started | ||
|
||
### Prerequisites | ||
|
||
<!-- Ensure any other prerequisites your project needs are mentioned here. --> | ||
|
||
- [Node.js (v18)](https://nodejs.org/en/) | ||
- [pnpm](https://pnpm.io/) | ||
- [Visual Studio Code](https://code.visualstudio.com/) | ||
|
||
<!-- Add or modify steps here for getting started as a developer --> | ||
|
||
### 1. Clone the repository | ||
|
||
```bash | ||
git clone https://github.com/hack4impact-utk/[PROJECT NAME].git | ||
``` | ||
|
||
### 2. Open project in VS Code and accept recommended extensions | ||
|
||
### 3. Install dependencies | ||
|
||
```bash | ||
pnpm install | ||
``` | ||
|
||
### 4. Set the environment variables | ||
|
||
Either ask a project lead for the `.env.local` file or create your own. The `.env.local` file should be in the root directory of the project. You need to have the following variables set: | ||
|
||
<!-- Add any other environment variables your project requires to this table. --> | ||
|
||
| Variable Name | Description | | ||
| ------------- | ------------------------ | | ||
| MONGODB_URI | URI for MongoDB database | | ||
|
||
### 5. Run the development server | ||
|
||
```bash | ||
pnpm dev | ||
``` | ||
|
||
## Building for Production | ||
|
||
Make sure you have finished all the setup steps in the [Getting Started](#getting-started) section and you can run the development server before building for production. | ||
|
||
### 1. Build the project | ||
|
||
```bash | ||
pnpm build | ||
``` | ||
|
||
### 2. Run the project in production mode | ||
|
||
```bash | ||
pnpm start | ||
``` | ||
|
||
## Testing | ||
|
||
### Running tests | ||
|
||
```bash | ||
pnpm test | ||
``` | ||
|
||
## Code/PR Workflow | ||
|
||
<!-- Add any project specific workflows in here --> | ||
|
||
- Create a new branch in the format `[GITHUB USERNAME]/[SHORT FEATURE DESCRIPTION]-[ISSUE NUMBER]` | ||
- For example: `hack4impact-utk/add-login-page-1` | ||
- Make changes on your branch, ensuring you adhere to our style guide and best practices (add links here when ready) | ||
- Commit your changes and push them to GitHub | ||
- Create a pull request from your branch to `main` | ||
- Ensure you diligently follow the pull request template | ||
|
||
## Project Structure | ||
|
||
- `src/app`: Contains pages for the application using the [NextJS App Router](https://nextjs.org/docs/app) | ||
- `src/components`: Contains React components used across the project | ||
- There should be a folder for each component with an `index.ts` file that exports the component | ||
- `src/server/actions`: Contains functions that interact with the database through the Mongoose ODM | ||
- `src/server/models`: Contains Mongoose models for the database | ||
- `src/services`: Contains functionality for interacting with external data sources (e.g. APIs) | ||
- `src/types`: Contains TypeScript types and interfaces used across the project | ||
- `src/utils`: Contains utility functions used across the project |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
import nextJest from 'next/jest.js'; | ||
|
||
const createJestConfig = nextJest({ | ||
// Provide the path to your Next.js app to load next.config.js and .env files in your test environment | ||
dir: './', | ||
}); | ||
|
||
// Add any custom config to be passed to Jest | ||
/** @type {import('jest').Config} */ | ||
const config = { | ||
// Add more setup options before each test is run | ||
// setupFilesAfterEnv: ['<rootDir>/jest.setup.js'], | ||
|
||
testEnvironment: 'jest-environment-jsdom', | ||
}; | ||
|
||
// createJestConfig is exported this way to ensure that next/jest can load the Next.js config which is async | ||
export default createJestConfig(config); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
/** @type {import('next').NextConfig} */ | ||
const nextConfig = {}; | ||
|
||
module.exports = nextConfig; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
{ | ||
"name": "nextjs-template", | ||
"version": "1.0.0", | ||
"private": true, | ||
"scripts": { | ||
"dev": "next dev", | ||
"build": "next build", | ||
"start": "next start", | ||
"lint": "next lint", | ||
"test": "jest", | ||
"prepare": "husky install" | ||
}, | ||
"dependencies": { | ||
"@emotion/react": "^11.11.1", | ||
"@emotion/styled": "^11.11.0", | ||
"@mui/material": "^5.14.6", | ||
"mongoose": "^7.4.5", | ||
"next": "13.4.19", | ||
"react": "18.2.0", | ||
"react-dom": "18.2.0", | ||
"zod": "^3.22.2" | ||
}, | ||
"devDependencies": { | ||
"@testing-library/jest-dom": "^6.1.2", | ||
"@testing-library/react": "^14.0.0", | ||
"@types/jest": "^29.5.4", | ||
"@types/node": "20.5.6", | ||
"@types/react": "18.2.21", | ||
"@types/react-dom": "18.2.7", | ||
"@typescript-eslint/eslint-plugin": "^6.4.1", | ||
"eslint": "8.47.0", | ||
"eslint-config-next": "13.4.19", | ||
"eslint-config-prettier": "^9.0.0", | ||
"eslint-plugin-prettier": "^5.0.0", | ||
"husky": "^8.0.0", | ||
"jest": "^29.6.4", | ||
"jest-environment-jsdom": "^29.6.4", | ||
"lint-staged": "^14.0.1", | ||
"typescript": "5.2.2" | ||
} | ||
} |
Oops, something went wrong.