skillbox/README.md

3.1 KiB

skillBox

Sources

Development

Server

  • Install pipenv
  • Create virtualenv in install dependencies pipenv --python 3.6 install --dev
  • Create PostgreSQL database & user
  • Install Heroku cli, run heroku login and heroku git:remote -a skillbox-hep
  • Create .env in server file with SECRET_KEY and DATABASE_URL
  • Migrate databases: pipenv run python manage.py migrate
  • Create super user: pipenv run python manage.py createsuperuser
  • Run: pipenv run python manage.py runserver
  • Dummy data: pipenv run python manage.py dummy_data (restart the development server afterwards)

Notes

Client

# install dependencies
npm install --prefix client

# serve with hot reload at localhost:8080
npm run dev --prefix client

# run storybook
npm run storybook --prefix client

# build
npm run build --prefix client

# build for production with minification
export NODE_ENV=production && npm install --prefix client && npm run build --prefix client

After running npm run dev login to the Django admin view on the same domain as the webpack dev server is running. Example: The client runs on localhost:8080 and Django on localhost:8000. This way you will have a session and a csrf cookie set and the apollo client will be able to make requests.

Production Build

Urls

(trailing slashes are required)

Heroku

heroku run python server/manage.py <command> --app <appname>

Rollabck

After doing a rollback under https://data.heroku.com/

heroku pg:info --app=<appname>

Change DATABASE URL (e.g after a rollback)

heroku pg:promote HEROKU_POSTGRESQL_PINK

Backup

heroku pg:backups:capture --app <appname>

heroku pg:backups:url b001 --app <appname>

AWS

  1. Create user with API Access and add access key id and access key to .env and set USE_AWS=True
  2. Create S3 Bucket in location EU Ireland

Change bucket Permissions / Bucket Policy

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Sid": "PublicReadForGetBucketObjects",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::<bucket-name>/*"
        },
        {
            "Sid": "",
            "Effect": "Allow",
            "Principal": {
                "AWS": "<user arn>"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::<bucket-name>/*",
                "arn:aws:s3:::<bucket-name>"
            ]
        }
    ]
}