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.
- 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
- GitHub
- Pre-commit linting hook
Put an overview of the non-profit you are working with and what you are doing for them here.
git clone https://github.com/hack4impact-utk/[PROJECT NAME].git
pnpm install
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:
Variable Name | Description |
---|---|
MONGODB_URI | URI for MongoDB database |
pnpm dev
Make sure you have finished all the setup steps in the Getting Started section and you can run the development server before building for production.
pnpm build
pnpm start
pnpm test
- Create a new branch in the format
[GITHUB USERNAME]/[SHORT FEATURE DESCRIPTION]-[ISSUE NUMBER]
- For example:
hack4impact-utk/add-login-page-1
- For example:
- 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
src/app
: Contains pages for the application using the NextJS App Routersrc/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
- There should be a folder for each component with an
src/server/actions
: Contains functions that interact with the database through the Mongoose ODMsrc/server/models
: Contains Mongoose models for the databasesrc/services
: Contains functionality for interacting with external data sources (e.g. APIs)src/types
: Contains TypeScript types and interfaces used across the projectsrc/utils
: Contains utility functions used across the project