2.8 KiB
US Notify API
This project is the core of Notify. It's cloned from the brilliant work of the team at GOV.UK Notify, cheers!
This repo contains:
- A public-facing REST API for Notify, which teams can integrate with using API clients built by UK
- An internal-only REST API built using Flask to manage services, users, templates, etc., which the admin UI talks to)
- Asynchronous workers built using Celery to put things on queues and read them off to be processed, sent to providers, updated, etc
Local setup
Direct installation
-
Set up Postgres && Redis
-
Install dependencies into a virtual environment
pipenv install --with dev createdb notification_api flask db upgrade -
Create the .env file
cp sample.env .env # follow the instructions in .env -
Run Flask
pipenv run make run-flask -
Run Celery
pipenv run make run-celery
VS Code && Docker installation
If you're working in VS Code, you can also leverage Docker for a containerized dev environment
-
Create .env file as described in the .env section below.
-
Install the Remote-Containers plug-in in VS Code
-
With Docker running, create the network:
docker network create notify-network -
Using the command palette (shift+cmd+p) or green button thingy in the bottom left, search and select “Remote Containers: Open Folder in Container...” When prompted, choose devcontainer-api folder (note: this is a subfolder of notification-api). This will startup the container in a new window, replacing the current one.
-
Wait a few minutes while things happen
-
Open a VS Code terminal and run the Flask application:
make run-flask -
Open another VS Code terminal and run Celery:
make run-celery
NOTE: when you change .env in the future, you'll need to rebuild the devcontainer for the change to take effect. Vscode should detect the change and prompt you with a toast notification during a cached build. If not, you can find a manual rebuild in command pallette or just docker rm the notifications-api container.
Deeper documentation
Infrastructure
- Checklist for onboarding to all of the things
- Setting up the initial infrastructure using AWS
- Database management