Folders Architecture
/.github
GitHub (opens in a new tab) configuration files for GitHub actions, PR templates and README assets.
/.husky
GIT hooks created with Husky (opens in a new tab).
/.storybook
Storybook (opens in a new tab) configuration.
/.vscode
VS Code workspace settings (opens in a new tab).
The extensions.json file contains some recommended extensions for the project.
/e2e
End-to-end tests folder for Playwright (opens in a new tab) tests.
/node_modules
This folder should NEVER be tracked on GIT because it contains all dependencies files of the project.
These files are downloaded when you install the dependencies with pnpm install.
/prisma
Prisma (opens in a new tab) folder for database schema and seed scripts.
Prisma generator and client blocs are defined in the /schema/main.prisma file.
All other schema files organize related models / enum together. For example, in /schema/user.prisma you will be able to find
all models / enum related or used by a User model, like VerificationToken model or UserRole enum.
/public
This folder contains static assets which will be exposed at the root of the website by NextJS. See NextJS static assets documentation (opens in a new tab) for more details.
/scripts
Folder for scripts that will be auto executed on build or setup step.
/scripts/build-info.ts
This scripts will be run on postinstall and will auto generate a build-info.json file with commit and date info that can be display in the application.
/src
Root folder of all the source code of the application. When importing files, you can use @/ to reference this folder.
/src/app
Next router folder, all the routes of the application are declared in this folder. See the Next App Router documentation (opens in a new tab) for more details.
/src/components
React generic UI components. In this folder, all components should be "dumb", focus on UI rendering and without business logic. These components should be documented in Storybook.
/src/emails
This folder contains all emails templates created with react-email (opens in a new tab).
/src/features
All business features for client code or code shared between client and server.
/src/hooks
React generic hooks that can be use accross the application.
/src/lib
Global configuration for client libraries or libraries shared between client and server. If you need a configuration only on the server side, use the src/server/config folder.
/src/locales
Folder which contains all the translations files. Use i18n Ally VS Code extension (opens in a new tab) for help on this part 😅.
/src/server
All the code for the server ONLY code.
/src/server/config
Configuration of all server only libraries.
/src/server/routers
All tRPC routers that contains API routes splitted by features.
/src/server/router.ts
The root file for all tRPC routers. This is the entry point of the API.
/src/theme
Customization of the Chakra UI theme (opens in a new tab).
/src/types
Global TypeScript types available accross all the code base without imports.
/src/env.mjs
Allows to validate and transform environment variables. This will enforce strong typing for environment variables.
Update this file when you add/remove/update some environment variables.
/.env
This file is LOCAL and should NEVER be tracked on GIT.
All sensitive information should be set in this .env file by each developers.
/.env.example
This file IS tracked on GIT, make sure that you NEVER put sensitive information in this file. All sensitive information should be set in the .env.
This file show an example of the .env that a new developer on the project can duplicate to create their own .env file.