Files
notifications-admin/README.md

134 lines
3.3 KiB
Markdown
Raw Normal View History

2015-11-20 10:31:28 +00:00
# notifications-admin
2015-11-18 16:32:15 +00:00
2020-05-20 10:52:55 +01:00
GOV.UK Notify admin application - https://www.notifications.service.gov.uk/
2015-11-23 14:37:29 +00:00
2016-02-03 15:18:57 +00:00
## Features of this application
- Register and manage users
- Create and manage services
- Send batch emails and SMS by uploading a CSV
2016-02-03 15:18:57 +00:00
- Show history of notifications
2016-02-03 15:18:57 +00:00
## First-time setup
2020-05-16 16:00:38 -07:00
### 1. Install Homebrew
2020-05-20 10:52:55 +01:00
Install [Homebrew](https://brew.sh), a package manager for OSX:
2020-05-16 16:00:38 -07:00
2017-04-18 14:04:10 +01:00
```shell
2020-05-20 10:52:55 +01:00
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
2017-04-18 14:04:10 +01:00
```
2020-05-20 10:52:55 +01:00
### 2. Make sure you're using correct language versions
2020-05-16 16:00:38 -07:00
Languages needed
2020-05-16 16:00:38 -07:00
- Python 3.6.x
- [Node](https://nodejs.org/) 10.15.3 or greater
- [npm](https://www.npmjs.com/) 6.4.1 or greater
2020-05-16 16:00:38 -07:00
2020-05-20 10:52:55 +01:00
Need to install node? Run:
2020-05-16 16:00:38 -07:00
2017-04-18 14:04:10 +01:00
```shell
2020-05-20 10:52:55 +01:00
brew install node
2017-04-18 14:04:10 +01:00
```
2020-05-20 10:52:55 +01:00
#### 2.1. `pyenv` For Python version management
2020-05-20 10:52:55 +01:00
[pyenv](https://github.com/pyenv/pyenv) is a program to manage and swap between different versions of Python. To install:
2020-05-16 16:00:38 -07:00
```shell
2020-05-20 10:52:55 +01:00
brew install pyenv
2020-05-16 16:00:38 -07:00
```
2020-05-20 10:52:55 +01:00
And then follow the further installation instructions in https://github.com/pyenv/pyenv#installation to configure it.
2020-05-16 16:00:38 -07:00
2020-05-20 10:52:55 +01:00
#### 2.2. `n` For Node version management
2020-05-16 16:00:38 -07:00
2020-05-20 10:52:55 +01:00
[NPM](npmjs.org) is Node's package management tool. `n` is a tool for managing
different versions of Node. The following installs `n` and uses the long term support (LTS)
version of Node.
2020-05-16 16:00:38 -07:00
```shell
2020-05-20 10:52:55 +01:00
npm install -g n
n lts
```
2020-05-20 10:52:55 +01:00
### 3. Install NPM dependencies
2020-05-16 16:00:38 -07:00
```shell
2020-05-20 10:52:55 +01:00
npm install
npm rebuild node-sass
2020-05-16 16:00:38 -07:00
```
### 4. Install Python dependencies
2020-05-20 10:52:55 +01:00
Install dependencies and build the frontend assets:
2020-05-16 16:00:38 -07:00
```shell
make bootstrap
2020-05-16 16:00:38 -07:00
```
2020-05-20 10:52:55 +01:00
**Note:** You may need versions of both Python 3 and Python 2 accessible to build the python dependencies. `pyenv` is great for that, and making both Python versions accessible can be done like so:
2020-05-16 16:00:38 -07:00
2016-02-03 15:18:57 +00:00
```shell
2020-05-20 10:52:55 +01:00
pyenv global 3.6.3 2.7.15
2016-02-03 15:18:57 +00:00
```
2015-12-10 16:47:29 +00:00
### 5. Create a local `environment.sh` file
In the root directory of the application, run:
```
echo "
export NOTIFY_ENVIRONMENT='development'
export FLASK_APP=application.py
export FLASK_ENV=development
export WERKZEUG_DEBUG_PIN=off
"> environment.sh
```
### 6. AWS credentials
2016-08-17 15:59:16 +01:00
To run parts of the app, such as uploading letters, you will need appropriate AWS credentials. See the [Wiki](https://github.com/alphagov/notifications-manuals/wiki/aws-accounts#how-to-set-up-local-development) for more details.
### 7. Running the application
2020-05-16 16:00:38 -07:00
In the root directory of the application, run:
2016-02-03 15:18:57 +00:00
```shell
make run-flask
2016-02-03 15:18:57 +00:00
```
Then visit [localhost:6012](http://localhost:6012)
## Updating application dependencies
`requirements.txt` file is generated from the `requirements-app.txt` in order to pin
versions of all nested dependencies. If `requirements-app.txt` has been changed (or
we want to update the unpinned nested dependencies) `requirements.txt` should be
regenerated with
```
make freeze-requirements
```
`requirements.txt` should be committed alongside `requirements-app.txt` changes.
2020-05-20 10:52:55 +01:00
## Automatically rebuild the frontend assets
If you want the front end assets to re-compile on changes, leave this running
in a separate terminal from the app
```shell
npm run watch
```
2018-12-21 12:54:19 +00:00
## Working with static assets
2018-12-21 12:54:19 +00:00
When running locally static assets are served by Flask at http://localhost:6012/static/…
When running on preview, staging and production theres a bit more to it:
2018-12-21 12:54:19 +00:00
![notify-static-after](https://user-images.githubusercontent.com/355079/50343595-6ea5de80-051f-11e9-85cf-2c20eb3cdefa.png)