Location-based websocket chat application, like YikYak
Go to file
2021-12-04 17:13:43 -07:00
bin undo removeable 2021-12-04 17:11:10 -07:00
client adds roles 2021-12-01 20:18:26 -07:00
server remove unused names 2021-12-03 18:40:37 -07:00
test first commit 2021-10-29 18:57:24 -06:00
views adds api, guard, tailwind 2021-11-23 14:04:12 -07:00
.env.example add admin user and seeds 2021-11-30 17:44:58 -07:00
.eslintrc.js separate client and server apps 2021-11-16 19:14:46 -07:00
.gitignore basic login boilerplatre 2021-11-20 18:18:58 -07:00
.prettierrc basic login boilerplatre 2021-11-20 18:18:58 -07:00
.tool-versions adds foundation for postgres 2021-11-07 18:23:01 -07:00
nest-cli.json separate client and server apps 2021-11-16 19:14:46 -07:00
package.json update readme 2021-12-03 18:48:52 -07:00
README.md update readme 2021-12-04 17:13:43 -07:00
tsconfig.build.json readme 2021-12-03 17:00:23 -07:00
tsconfig.json adds roles 2021-12-01 20:18:26 -07:00
yarn.lock adds roles 2021-12-01 20:18:26 -07:00

USU CS4610 Nest Starter App

Description

A starter app with Postgres, NestJS, and React

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

$ git clone git@github.com:dittonjs/NestStarterApp.git <YourAppName>

a Replace your app name with the name of your app, for example

$ git clone git@github.com:dittonjs/NestStarterApp.git SpyChat

Next, go create a remote repository in github (or gitlab, or bitbucket, it doesn't matter) for your new application.

Finally, run

$ bash ./bin/setup_new_project.sh

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.

Pulling Updates from Starter App

To retrieve changes from the starter app run

$ git pull upstream main

Prerequisites

asdf-vm

Tool versions are managed using asdf-vm. You will need to have asdf-vm installed first.

Setup

Tool versions

Install the tool versions by running

$ asdf install

Install yarn

We will use yarn instead of npm for package managment. To install yarn run

$ npm install -g yarn

.env

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.

In your new .env file update the values for each key as you would like

Dependencies

To install the server dependencies run

$ yarn # this is same thing as `yarn install`

To install the client dependencies run

$ cd client && yarn && cd ..

Database

This application uses Postgres. To setup the database run

$ yarn db:setup

This will create the database, run the migrations, and run the seeds for you.

Migrations

Any time you want make changes to your database schema you will need to generate a migration file

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

$ yarn db:migrate

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.

Seeds

Seeds allow you to pre-populate your database with data. By default this application prepopulates the Roles and the Admin User into your database.

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

$ yarn db:seed

SSL

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

Create a ssl key and certificate and place them in the root directory

$ openssl req -x509 -newkey rsa:4096 -keyout private-key.pem -out public-cert.pem -sha256 -nodes

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.

Running the app

To start the server run

$ yarn start:dev

To start the client run

$ yarn client:watch

Test

WORK IN PROGRESS

# unit tests
$ yarn test

# e2e tests
$ yarn test:e2e

# test coverage
$ yarn test:cov