Skip to content

quayside-app/quayside

Repository files navigation

quayside.app

Welcome to our quayside.app, the project management tool that helps your team answer the question "What's Next?" to succeed in your project goals. The stack is Django with Tailwind and MongoDB. It will hosted on Google Cloud Platform.

Setup

You need to install python3, pip, and npm (you can do this by installing Node.js). Once that is done, set up your virtual environment (venv):

python -m venv venv

Now activate your venv:

# Mac/Linux:
source venv/bin/activate

# Windows:
venv\Scripts\activate

# Windows Bash:
source venv\Scripts\activate

Then run these following commands in this directory to install all dependencies:

pip install -r requirements.txt
npm install

For accessing the mongo database locally, you will need the following generated database Atlas, ChatGPT, and Github creds in an .env file (fyi, the Atlas creds are different than your creds to login to Mongo Atlas). You'll also need the following Github URLs. Here is the format:

MONGO_USERNAME=<your username>
MONGO_PASSWORD=<your password>
CHATGPT_API_KEY=<your ChatGPT API key>
GITHUB_CLIENT_ID=<your client ID>
GITHUB_CLIENT_SECRET=<your client secret>
GITHUB_API_URL_email=https://api.github.com/user/emails
GITHUB_API_URL_user=https://api.github.com/user
API_SECRET=<key you make up to encrypt your jwt tokens (must be 32 url-safe base64-encoded bytes)>

Check the env_check_file for more required variables.

Usage

Running
If your venv has deactivated, reactivate it with the instructions in Setup. Then to start the development server, run:

python manage.py rundev

This custom command will allow you to see add tailwind classes properly (unlike python manage.py runserver).

Open http://127.0.0.1:8000/ with your browser to see the result.

Linting
We use pep8 and JavaScript Standard Style standards. The only exceptions to these are that we use camelCase and jsdocs function block strings for python as well as javascript. We use black and pylint for our python and eslint for our javascript. Here's the commands to run to lint your code:

# Automagically reformats your python code.
black app api

# Reports potential python bugs/errors. Fix as many of them as you can (get a score of 8.+).
pylint app/ api/

# Fixes as many javascript formatting/code errors as possible and tells you which ones you heed to fix yourself.
npx eslint app/**/*.html --fix

Note: If npx tells you <someFunction> is not defined no-undef because someFunction is defined in a script you are importing, add the following comment before each line where the error occurs.

// eslint-disable-next-line no-undef

Adding Dependencies
If you add any other npm dependencies, please do it by running npm install --save <my-dependency> so it is added to package.json for the next person to install. Otherwise, add the package manually to package.json. If you install python dependencies, please add them to the requirements.txt by running pip freeze > requirements.txt.

Note: If you are having issues with "[SSL: CERTIFICATE_VERIFY_FAILED]" you may need to upgrade pip.