LocChat/README.md

133 lines
3.5 KiB
Markdown
Raw Normal View History

2021-12-03 20:31:24 -05:00
# USU CS4610 Nest Starter App
2021-10-29 20:57:24 -04:00
## Description
2021-11-16 21:14:46 -05:00
A starter app with Postgres, NestJS, and React
2021-12-03 20:31:24 -05:00
## Cloning the project
This app is designed to used as a starting point for another application so you will want to clone the project into a folder that matches your app. Run
```bash
2021-12-04 13:33:33 -05:00
$ git clone git@github.com:dittonjs/NestStarterApp.git <YourAppName>
2021-12-03 20:31:24 -05:00
```
Replace your app name with the name of your app, for example
```bash
2021-12-04 13:33:33 -05:00
$ git clone git@github.com:dittonjs/NestStarterApp.git SpyChat
2021-12-03 20:31:24 -05:00
```
Next, go create a remote repository in github (or gitlab, or bitbucket, it doesn't matter) for your new application.
Finally, run
```bash
$ bash ./bin/setup_new_project.sh
```
2021-12-03 20:48:52 -05:00
and follow the prompts. This script will link the repo to your new repo while maintaining a reference to the starter app repo. This way, if we make changes to the starter app repo, you can still get those changes.
To retrieve changes from the starter app run
```bash
$ git pull upstream main
```
2021-11-16 21:14:46 -05:00
## Prerequisites
### asdf-vm
Tool versions are managed using `asdf-vm`. You will need to have `asdf-vm` installed first.
2021-10-29 20:57:24 -04:00
2021-11-03 21:25:40 -04:00
## Setup
2021-11-16 21:14:46 -05:00
### Tool versions
Install the tool versions by running
```bash
$ asdf install
```
### Install yarn
2021-12-03 20:31:24 -05:00
We will use `yarn` instead of `npm` for package managment. To install yarn run
2021-11-16 21:14:46 -05:00
```bash
$ npm install -g yarn
```
### .env
2021-12-03 20:31:24 -05:00
Create a file in the root called `.env` and copy the contents of `.env.example`.
Make sure you create a new file instead of renaming the `.env.example` file.
2021-11-03 21:25:40 -04:00
2021-12-03 19:00:23 -05:00
In your new `.env` file update the values for each key as you would like
2021-11-16 21:14:46 -05:00
### Dependencies
2021-11-30 17:40:07 -05:00
To install the server dependencies run
2021-11-16 21:14:46 -05:00
```bash
$ yarn # this is same thing as `yarn install`
```
2021-11-03 21:25:40 -04:00
2021-11-30 17:40:07 -05:00
To install the client dependencies run
```bash
$ cd client && yarn && cd ..
```
2021-11-16 21:14:46 -05:00
### Database
2021-12-03 20:48:52 -05:00
This application uses Postgres. To setup the database run
2021-11-03 21:25:40 -04:00
```bash
2021-12-03 20:31:24 -05:00
$ yarn db:setup
2021-11-03 21:25:40 -04:00
```
2021-12-03 20:48:52 -05:00
This will create the database, run the migrations, and run the seeds for you.
2021-10-29 20:57:24 -04:00
2021-12-03 20:31:24 -05:00
### Migrations
Any time you want make changes to your database schema you will need to generate a migration file
```bash
yarn db:migration:generate AddContextToRoles # replace this name with a name that describes your migration
```
Open that migration file and make the changes. Then, when you are ready
2021-11-16 21:14:46 -05:00
```bash
2021-12-03 19:00:23 -05:00
$ yarn db:migrate
2021-11-16 21:14:46 -05:00
```
2021-12-03 20:31:24 -05:00
will run any pending migrations.
If a team member adds a migrations you will need to run the migrate command to make the changes to your local database as well.
2021-11-16 21:14:46 -05:00
2021-12-03 20:31:24 -05:00
### Seeds
2021-12-03 20:48:52 -05:00
Seeds allow you to pre-populate your database with data. By default this application prepopulates the `Roles` and the Admin `User` into your database.
2021-11-16 21:14:46 -05:00
2021-12-03 20:31:24 -05:00
If you make changes to the seeds file at `server/database/seeds.ts` the make sure that, in the event seeds are run multiple times, you don't end up with duplicate data.
To run the seeds
2021-12-03 19:00:23 -05:00
```bash
$ yarn db:seed
```
2021-11-16 21:14:46 -05:00
### SSL
2021-12-03 20:31:24 -05:00
**Only do this step if you intend on developing your app in an environment where you need SSL (like canvas or other embedded platforms).**
In your `.env` set
```
USE_SSL=true
```
2021-11-30 17:40:07 -05:00
Create a ssl key and certificate and place them in the root directory
2021-10-29 20:57:24 -04:00
```bash
2021-11-16 21:14:46 -05:00
$ openssl req -x509 -newkey rsa:4096 -keyout private-key.pem -out public-cert.pem -sha256 -nodes
2021-10-29 20:57:24 -04:00
```
2021-11-30 17:40:07 -05:00
Enter `US` for the country code. Where this key will only be used for development you can leave all of the rest of information blank.
2021-10-29 20:57:24 -04:00
## Running the app
2021-11-30 17:40:07 -05:00
To start the server run
2021-10-29 20:57:24 -04:00
```bash
# watch mode
2021-11-16 21:14:46 -05:00
$ yarn start:dev
2021-11-30 17:40:07 -05:00
```
2021-10-29 20:57:24 -04:00
2021-11-30 17:40:07 -05:00
To start the client run
```bash
$ yarn client:watch
2021-10-29 20:57:24 -04:00
```
## Test
```bash
# unit tests
2021-11-16 21:14:46 -05:00
$ yarn test
2021-10-29 20:57:24 -04:00
# e2e tests
2021-11-16 21:14:46 -05:00
$ yarn test:e2e
2021-10-29 20:57:24 -04:00
# test coverage
2021-11-16 21:14:46 -05:00
$ yarn test:cov
2021-10-29 20:57:24 -04:00
```