Skip to content

aloverso/dog_rates2020

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dog_rates 2020

This is a full-stack JavaScript app for a voting bracket on the best of the best dogs of 2020 from @dog_rates.

app screenshot

Getting Started

npm Dependencies

You'll need npm and node installed.

For npm dependencies, this will install all for the frontend and backend folders:

./scripts/install-all.sh

postgres

If not already installed, install postgres. Make sure you have psql installed as well, and that postgres is running on port 5432. Your postgres user should have no password.

Create postgres local DB:

psql -c 'create database dograteslocal;' -U postgres

Run local database migrations:

./scripts/db-migrate.sh

Seeding with data

This app needs tweet data from @dog_rates to work. To do this, there are two options. Self-populate your data, or use fixture data (contains only 2 months of tweets).

To self-populate your database, you need a Twitter OAuth 2.0 Bearer Token. You can follow Twitter's instructions to create a developer app and obtain a token. Save this to your environment as TWITTER_TOKEN.

If you are using fixture data, do not set this environment variable at all.

Next, for either datasource, start the backend app locally and post to the /populate endpoint.

npm --prefix=backend run start:dev -- &
curl -X POST localhost:8080/populate
kill $(lsof -i:8080 -t)

This will populate the tweets table and its corresponding images table.

Development

Start frontend dev server:

./scripts/frontend-start.sh

Start backend dev server:

./scripts/backend-start.sh

The backend will run on port 8080 and the frontend will run on port 3000.

Run all jest tests:

./scripts/test-all.sh

In addition to tests, this script will run linting (via eslint) and dependency boundary checks (via good-fences)

Run cypress feature tests:

./scripts/feature-tests.sh

This will start and stop the server for itself, including a Wiremock server to provide stub versions of API dependencies.

Adding DB migrations

npm --prefix=backend run db-migrate create [migration-name] -- --sql-file

Pushing changes

Always push via ship-it (why?)

./scripts/ship-it.sh

Deployment

Build frontend, build backend, compile all into one directory:

./scripts/build.sh

Start the production server (frontend & backend)

./scripts/prod-start.sh

About

Voting app for the best dogs of 2020 from @dog_rates twitter

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published