apps/contains the Next.js applicationsplatform-portalanddeveloper-portal.packages/contains ESLint and Typescript configurations that are common to allapps, as well as the sharedcomponentslibrary.- Essentially,
packagescan be used by any number ofappsand can be treated like published NPM packages from within anapp.
- IMPORTANT: You MUST use
pnpmas your package manager for this repository. - If you have
npm, you can get it withnpm install -g pnpm. If you do not havenpm, look up installation instructions for your operating system.
- Before doing anything else, you must download the dependencies for this project by running
pnpm installin a terminal pointed at this directory. - Work with all
appsin parallel: runpnpm {dev|lint|build}in a terminal pointed at this directory. - Work with an individual
app: navigate to its directory in a terminal and runpnpm {dev|lint|build}. - The
devoperation spins up a development server on your computer that automatically adjusts to code changes so no restart is necessary. You can access the web pages by going to http://localhost:3000/ forplatform-portaland/or http://localhost:3001/ fordeveloper-portal. - The
lintoperation checks whether the codebase adheres to our style standards and reports any problems as console output. You should run this as a last step before any PR. - The
buildoperation creates an optimized, production-ready bundle. You should run this as a last step before any PR to make sure that there are no traspilation or compiler-time errors.
- ESLint and Prettier are supported, and have been configured to match Nebula's opinionated style guide.
- Tailwind CSS has been configured and is the preferred method for implementing any and all styling.
heroiconsare available inplatform-portal,developer-portal, andcomponents- For both
platform-portalanddeveloper-portal:- Communication between front-end and local back-end is facilitated by tRPC.
- Communication with external back-end is facilitated by Express.
- Input validation is facilitated by Zod.
.github/*are files that tell GitHub (the website that hosts this repository) how to do things like provide issue templates and perform actions automatically when new commits come through..eslintrc.jsdirects ESLint to use the configuration from theeslint-config-custompackage at the repository level. This is needed so you canpnpm lintfrom this directory..gitignoretells Git (out version control software) what files should not be committed to the repository. These are mostly files that your computer generates when running things likepnpm devandpnpm lint.LICENSEis the file that tells GitHub what license this code uses (for us, this is the MIT License).package.jsonis the file thatpnpmuses to figure out what dependencies this project has and how to runpnpm {dev|lint|build}.pnpm-lock.yamlis a file that is generated bypnpmto speed up the execution ofpnpm installin the case where there have been no dependency changes since the last execution.pnpm-workspace.yamlis the file that allowspnpmto think of this project'spackagesas published NPM packages.tsconfig.jsondirects tsc (the TypeScript transpiler) to use the configuration from thetsconfigpackage at the repository level. This is needed so you canpnpm {dev|lint|build}from this directory.turbo.jsonis the configuration file for Turborepo, the tool we used to make (and continue to use to manage) this monorepo. It contains information about global environment variables and project-wide build dependencies.