---
title: CS Platform Setup
tags: CoderSchool
---
# CS Platform
## Getting started
**Documentation**:
- Prisma: https://www.prisma.io/docs/
- Graphql:
- https://graphql.org/learn/
- [GraphQL vs REST](https://www.apollographql.com/blog/graphql/basics/graphql-vs-rest/)
- [The anatomy of a graphql query](https://www.apollographql.com/blog/graphql/basics/the-anatomy-of-a-graphql-query/)
- [GraphQL in NestJS](https://docs.nestjs.com/graphql/quick-start)
-
- Urql: https://formidable.com/open-source/urql/docs/
- Relay Pagination:
- https://relay.dev/docs/guided-tour/list-data/pagination/
- https://github.com/devoxa/prisma-relay-cursor-connection
**Repository**: `git@github.com:coderschool/cs-platform.git`
### Setup VSCode
Add to user setting JSON:
```json
"[typescriptreact]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
}
}
```
Prisma format: `Opt + Shift + F`
Setup in User Settings:
![[Pasted image 20220808163054.png]]
### Start on local:
```bash
# Install dependencies
yarn install
npm i -g prisma
# Migrate db
cd package/server
prisma migrate dev
# Start server
cd package/server
yarn start:dev
# Start client
cd package/web
yarn dev
```
Open `http://localhost:3000` (don't use `127.0.0.1`)
GraphQL: `http://localhost:4000/graphql`
PostgreSQL:
- Open Docker Desktop and click on pgadmin or `localhost:5050`
- Password admin: `admin` (from `packages/server/docker-compose-dev.yml`)
- Create server: Host `postgres_container` (refer to the container_name), Port `5432`, username/password: `postgres`/`postgres`
- Open Query Tool: `SELECT * FROM public."User"`
- Edit the column roles to `{ADMIN}` (Or go to `devtools.module.ts` and uncomment line 13 `await this.authService.seedPlatformSuperUsers()`)
>Fixing GraphQL validation error in `.gql` files: `Cmd+Shift+P`, choose `Apollo reload schema`
Testing: Run from `packages/server/`
- `yarn test -u`
- Test a service specificly: `yarn test -t NAME_OF_THE_SERVICE`
- Test with detail logs: `yarn test -u`
Before pushing code:
- Pass all test
- Pass lint: `/ $ yarn lint`
## Tricks
### Sort lines
Select the code you wish to sort in Visual Studio Code. Then hit the key combination `Cmd+Shift+P`. Next type sort and choose **Sort Lines Ascending** or choose the **Descending** option. Now the lines you've previously selected will be sorted by the option you chose.
### Create new component
- Create `.tsx` component then use `rfc` to create the code snippet.
- Create `index.ts` then use `erfc` to create the code snippet.
- Create page: `erfclz`
- After add `.gql` => `/packages/web> yarn codegen --watch`
- ?? need to run this before `yarn add -EDW undici@5.5.1 cross-undici-fetch sync-fetch --no-lockfile`
Github
- Assign to issue
- Create branch from the issue
- Fetch origin new branch -> checkout new branch (script on github)
## Frontend
- Start with `routes.tsx`
- Containers contains `Outlet` and are setup in `routes/`
- `RootContainer` handles `/` and navigate user.
- `MeetingContainer` is for the video sdk `meeting/:meetingId`
- `WorkspaceContainer` contains management routes
- `MentorContainer` is for mentor views
- In `RootContainer`, depends on the use role, the app will split to
- `/workplace`: for staff and admin
- `/mentor`: for mentor GUI
- `/learner`: for learner GUI
- Also handling `isLoading` and signing out if `!user`
- In `WorkspaceContainer`:
- Control sidebar open/close
- Control Notification Provider
- `WorkspaceRoute` defines which route will be handled by which component in `app/workspace/`
-