apps/
contains the Next.js applicationsplatform-portal
anddeveloper-portal
.packages/
contains ESLint and Typescript configurations that are common to allapps
, as well as the sharedcomponents
library.- Essentially,
packages
can be used by any number ofapps
and can be treated like published NPM packages from within anapp
.
- IMPORTANT: You MUST use
pnpm
as 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 install
in a terminal pointed at this directory. - Work with all
apps
in 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
dev
operation 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-portal
and/or http://localhost:3001/ fordeveloper-portal
. - The
lint
operation 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
build
operation 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.
heroicons
are available inplatform-portal
,developer-portal
, andcomponents
- For both
platform-portal
anddeveloper-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.js
directs ESLint to use the configuration from theeslint-config-custom
package at the repository level. This is needed so you canpnpm lint
from this directory..gitignore
tells 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 dev
andpnpm lint
.LICENSE
is the file that tells GitHub what license this code uses (for us, this is the MIT License).package.json
is the file thatpnpm
uses to figure out what dependencies this project has and how to runpnpm {dev|lint|build}
.pnpm-lock.yaml
is a file that is generated bypnpm
to speed up the execution ofpnpm install
in the case where there have been no dependency changes since the last execution.pnpm-workspace.yaml
is the file that allowspnpm
to think of this project'spackages
as published NPM packages.tsconfig.json
directs tsc (the TypeScript transpiler) to use the configuration from thetsconfig
package at the repository level. This is needed so you canpnpm {dev|lint|build}
from this directory.turbo.json
is 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.