Merge remote-tracking branch 'origin/rumperuu/update-readme' into ben/feature/push-notifications

This commit is contained in:
Ben Goldsworthy 2020-11-28 14:19:25 +00:00
commit 9b914c11fa
1 changed files with 92 additions and 99 deletions

191
README.md
View File

@ -1,4 +1,6 @@
# Pear LocalLoop Server
# LocalSpend - Server
This repository contains the server for the LocalSpend system.
## Current Status
@ -6,68 +8,68 @@
*Development:* [![Build Status](https://travis-ci.org/Pear-Trading/Foodloop-Server.svg?branch=development)](https://travis-ci.org/Pear-Trading/Foodloop-Server)
# Testing
# Test Environment
To run the main test framework, first install all the dependencies, then run the tests:
## Running Tests
```
cpanm --installdeps .
prove -lr
```
To run the main test framework, first install all the dependencies, then run
the tests:
To run the main framework against a PostgreSQL backend, assuming you have postgres installed, you will need some extra dependencies first:
- `cpanm --installdeps .`
- `prove -lr`
```
cpanm --installdeps . --with-feature postgres
PEAR_TEST_PG=1 prove -lr
```
To run the main framework against a PostgreSQL backend, assuming you have
`postgres` installed, you will need some extra dependencies first:
# Minion
- `cpanm --installdeps . --with-feature postgres`
- `PEAR_TEST_PG=1 prove -lr`
to set up minion support, you will need to create a database and user for
minion to connect to. In production his should be a PostgreSQL database,
however an SQLite db can be used in testing.
## Setting Up Minion
To use the SQLite version, run the following commands:
To set up Minion support, you will need to create a database and user for
it to connect to.
In production his should be a PostgreSQL database, however SQLite can be used
in testing.
```
cpanm --installdeps --with-feature sqlite .
```
To use the SQLite version:
And then add the following to your configuration file:
1. Install the SQLite dependencies:
- `cpanm --installdeps --with-feature sqlite .`
2. Ensure that the following is in your configuration file:
- ```
minion => {
SQLite => 'sqlite:minion.db',
},
```
```
minion => {
SQLite => 'sqlite:minion.db',
},
```
This will then use an SQLite DB for the Minion backend, using `minion.db` as
the database file.
This will then use an SQLite db for the minion backend, using `minion.db` as
the database file. To start the minion itself, run:
To start the minion itself, run this command:
- `./script/pear-local_loop minion worker`
```
./script/pear-local_loop minion worker
```
## Importing Ward Data
# Importing Ward Data
To import ward data:
To import ward data, get the ward data csv and then run the following command:
1. Download CSV(s) from [here](https://www.doogal.co.uk/PostcodeDownloads.php)
1. Run the following command:
- ```shell script
./script/pear-local_loop minion job \
--enqueue 'csv_postcode_import' \
--args '[ "⟨ path to CSV ⟩ ]'
```
```shell script
./script/pear-local_loop minion job \
--enqueue 'csv_postcode_import' \
--args '[ "/path/to/ward/csv" ]'
```
## Setting Up Entity Postcodes
# Setting up Entity Postcodes
Assuming you have imported codepoint open, then to properly assign all
postcodes:
```shell script
./script/pear-local_loop minion job \
--enqueue entity_postcode_lookup
```
1. Import Code-Point Open:
- included in `etc/`
- `./script/pear-local_loop codepoint_open --outcodes LA1`
1. Assign postcodes:
- ```shell script
./script/pear-local_loop minion job \
--enqueue entity_postcode_lookup
```
## Example PostgreSQL setup
@ -81,70 +83,61 @@ psql=# alter user minion with encrypted password 'abc123';
psql=# grant all privileges on database localloop_minion to minion;
```
# Development
# Development Environment
There are a couple of setup steps to getting a development environment ready.
Use the corresponding instructions depending on what state your current setup
is in.
## First Time Setup
First, decide if you're using SQLite or PostgreSQL locally. Development supports
both, however production uses PostgreSQL. For this example we will use SQLite.
As the default config is set up for this, no configuration changes are
needed initially. So, first off, install dependencies:
1. Decide if you're using SQLite or PostgreSQL locally.
- Development supports both, however production uses PostgreSQL.
- For this example we will use SQLite.
- As the default config. is set up for this, no configuration changes are
needed initially.
1. Install dependencies:
- ```shell script
cpanm --installdeps . \
--with-feature=sqlite \
--with-feature=codepoint-open
```
1. Install the database:
- `./script/deploy_db install -c 'dbi:SQLite:dbname=foodloop.db'`
1. Set up the development users:
- `./script/pear-local_loop dev_data --force`
- **DO NOT RUN ON PROD.**
1. Start the minion:
- `./script/pear-local_loop minion worker`
1. Import ward data (see [instructions](#importing-ward-data) above)
1. Set up postcodes (see [instructions](#setting-up-entity-postcodes) above)
1. Create an `environment.dev.ts` file in `src/environments` with your API keys
1. Start the application:
- `morbo script/pear-local_loop -l http://*:3000`
- You can modify the host and port as needed.
```shell script
cpanm --installdeps . --with-feature=sqlite
```
## Database Scripts
Then install the database:
To upgrade the database after making changes to commit:
```shell script
./script/deploy_db install -c 'dbi:SQLite:dbname=foodloop.db'
```
Then set up the development users:
```shell script
./script/pear-local_loop dev_data --force
```
***Note: do NOT run that script on production.***
Then you can start the application:
```shell script
morbo script/pear-local_loop -l http://*:3000
```
You can modify the host and port for listening as needed.
# Old Docs
## Local test database
To install a local DB:
```
./script/deploy_db install -c 'dbi:SQLite:dbname=foodloop.db'
```
To do an upgrade of it after making DB changes to commit:
```
./script/deploy_db write_ddl -c 'dbi:SQLite:dbname=foodloop.db'
./script/deploy_db upgrade -c 'dbi:SQLite:dbname=foodloop.db'
```
1. Increment the `$VERSION` number in `lib/Pear/LocalLoop/Schema.pm`
1. `./script/deploy_db write_ddl -c 'dbi:SQLite:dbname=foodloop.db'`
1. `./script/deploy_db upgrade -c 'dbi:SQLite:dbname=foodloop.db'`
To redo leaderboards:
```
./script/pear-local_loop recalc_leaderboards
```
1. `./script/pear-local_loop recalc_leaderboards`
To serve a test version locally of the server:
# Troubleshooting
## Can't write to /usr/local/share/perl/5.30.0 and /usr/local/bin: Installing modules to /home/<username>/perl5 when running `cpanm` commands
Intall `local::lib` by running the following commands:
```
morbo script/pear-local_loop
cpanm --local-lib=~/perl5 local::lib && eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib)
```
NB: You must run this in each Terminal window; I don't know why.
## Can't load application from file "<path-to-repo>/script/pear-local_loop": Can't locate Data/UUID.pm in @INC (you may need to install the DATA::UUID module) when running server
Ensure you have run the `cpan --installdeps` command.