# Next Boilerplate

This is a cool boilerplate for Next.js projects. It includes setup for the following tools:

## Framework

- [x] [Next.js](https://nextjs.org/)

## DX

- [x] [TypeScript](https://www.typescriptlang.org/)
- [x] [Bun](https://bun.sh/)
- [x] [ESLint](https://eslint.org/)
- [x] [Prettier](https://prettier.io/)
- [x] [Husky](https://typicode.github.io/husky/)

## Backend (sort of)

- [x] [TRPC](https://trpc.io/)
- [x] [Clerk](https://clerk.dev/)
- [x] [Prisma](https://www.prisma.io/)
- [x] [PlanetScale](https://planetscale.com/)
- [ ] [Uploadthing](https://uploadthing.com/) - not yet implemented..

## Back-front integration

- [x] [React Query](https://react-query.tanstack.com/)
- [x] [Zod](https://zod.dev/)
- [x] [React Hook Form](https://react-hook-form.com/)

## UI

- [x] [Tailwind CSS](https://tailwindcss.com/)
- [x] [Shadcn/UI](https://ui.shadcn.com/)
- [x] [Sonner](https://sonner.emilkowal.ski/)
- [x] [NProgress](https://ricostacruz.com/nprogress/)
- [x] [Recoil](https://recoiljs.org/)
- [x] [Moment.js](https://momentjs.com/) (for now, might be replaced with [Date-fns](https://date-fns.org/))
- [x] [Lucide Icons](https://lucide.dev/)

# How to start

## Clone the repo

Do I have to tell you how?

## Install dependencies

- run `bun install` to install all dependencies

## Create Clerk app

- Visit [Clerk](https://clerk.dev/) and create an account
- Create a new project
- Copy the `CLERK_SECRET_KEY` and `NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY` variables and paste them into `.env.local`

## Create PlanetScale database

- Visit [PlanetScale](https://planetscale.com/) and create an account
- Create a new database and set framework to [Prisma](https://www.prisma.io/)
- Copy the `DATABASE_URL` variable and paste it into `.env.local`
- run `bunx prisma db push` to push the state of `schema.prisma` to the database

<!-- ## Create Uploadthing App

- Visit [Uploadthing](https://uploadthing.com/) and create an account
- Create a new app
- Copy the `UPLOADTHING_SECRET` and `UPLOADTHING_APP_ID` variables and paste them into `.env.local` -->

## More env variables

Along with your Clerk, Uploadthing, and Database env variables, you will need to add the following:

```
/* nothing for now, might change later */
```

## Run the app

- run `bun dev` to start the app
- Test Clerk authentication and tRPC works by following instructions

## Start building

Happy hacking.