After cloning the repository, run the following commands to initialize the repo.
pnpm install # install project dependencies
pnpm run prepare # initializes husky, for git hooks
The following is a list of the primary scripts for the project.
pnpm run dev # start development server
pnpm run build # build project
pnpm run start # start server for production
pnpm run lint # lint codebase with ESLint
pnpm run tscheck # typecheck codebase with Typescript
pnpm run format # format codebase with Prettier
This project uses the following tech for the API.
- tRPC: End-to-end type-safe client-server communication
- Zod: Declarative data validation with user-defined schemas
An interactive documentation page for the tRPC API can be found at /api/trpc
during development only.
tRPC API (formatted with tree.nathanfriend.com):
.
βββ ping: healthcheck server
βββ users/
β βββ find: 1 user
β βββ list: many users
β βββ create
β βββ update
β βββ remove
βββ classes/
β βββ find: 1 class
β βββ list: classes where user has access
β βββ create
β βββ update
β βββ remove
βββ problems/
β βββ find: 1 class
β βββ list: problems from all classes where user has access
β βββ create
β βββ update
β βββ remove
βββ solutions/
βββ find: 1 solution
βββ find_latest: latest solution for problem
βββ list: authored solutions (? for a problem)
βββ list_latest: latest solutions from all users for a problem
βββ create
pnpm exec drizzle-kit studio # start database gui client
pnpm exec drizzle-kit generate # generate migration files
pnpm exec drizzle-kit migrate # apply migration files
- See Drizzle Studio: quickly viewing contents of the database.
Database Schema (formatted with Jetbrains DataGrip)
This project uses the following tools to enforce consistent coding conventions, formatting, and automated workflows:
- Prettier: Enforces consistent code formatting.
- ESLint: Enforces best practices on coding conventions.
- Typescript: Provides static typing and checks.
- CommitLint: Standardizes commit messages based on Conventional Commits.
- Github Actions: Automates CI workflows, including formatting & linting.
In alphabetical order:
- Adrian Labasan (@lukexodus)
- Ajay Lopez (@borzwick)
- Theone Eclarin (@daawaan4x)