This repository has been archived on 2023-08-16. You can view files and clone it, but cannot push or open issues or pull requests.
Find a file
2021-03-20 10:24:36 +00:00
.github/ISSUE_TEMPLATE Add Issue templates 2021-03-20 10:24:36 +00:00
.idea Hopefully fix speed issue on external data 2019-09-09 15:37:56 +01:00
doc Payroll sumission API improved and test added 2017-09-18 17:13:18 +01:00
etc/code-point-open Added codepoint open data to etc. dir with LICENCE file 2017-09-21 13:15:20 +01:00
images fixes 2017-04-20 16:40:24 +01:00
lib Merge remote-tracking branch 'origin/ben/fix/failing-tests' into ben/feature/push-notifications 2021-03-20 09:49:07 +00:00
log Added log folder and gitignore config 2016-09-15 16:55:27 +01:00
public Word wrap feedback in admin console 2017-10-23 15:02:18 +01:00
script added new relations 2019-07-03 17:36:36 +01:00
share Add push notifications and device token management 2020-11-30 17:34:13 +00:00
t Possible fix for test failure 2019-07-14 15:52:39 +01:00
templates flash fixes on import 2019-09-11 15:02:08 +01:00
.gitignore Add postcode CSVs to .gitignore 2020-11-08 15:00:44 +00:00
.travis.yml Update perl version in Travis CI 2019-09-16 10:46:38 +01:00
CHANGELOG.md Update changelog 2019-09-16 10:43:44 +01:00
cpanfile Add device token management and server connection detection 2020-11-28 19:53:19 +00:00
make_leaderboards Fixed rank sending and added leaderboard creation script 2017-07-20 11:56:24 +01:00
pear-local_loop.conf Merge remote-tracking branch 'origin/TBSliver/Minion-Tasks' into finn/minionimport 2019-07-05 18:50:37 +01:00
pear-local_loop.development.conf Fix various bits for import 2019-07-14 15:15:14 +01:00
pear-local_loop.testing.conf Update config and tests so deployment and testing use separate databases. 2017-03-08 18:52:04 +00:00
README.md Update readme 2021-03-20 09:40:32 +00:00

LocalSpend (Server)

Looking to discover if the value of spending local can be measured, understood and shown.

This repository contains the server application for the LocalSpend system. See also:

Current Status

Branch Status
master Build Status
development Build Status

Table of Contents

Technology Stack

The server app. is written in Perl.

Technology Description Link
Mojolicious Perl Web framework Link
PostgreSQL Relational database Linke

Features

This server app. provides:

  • user creation, updating and deletion;
  • organisation creation, updating and deletion;
  • transaction logging;
  • transaction history analysis; and
  • leaderboard generation.

Installation

  1. Clone the repo. to your dev. environment (git clone git@github.com:Pear-Trading/FoodLoop-Server.git);
  2. enter the new directory (cd FoodLoop-Server);
  3. install the dependencies:
    • cpanm --installdeps . \
      --with-feature=sqlite \
      --with-feature=codepoint-open
      
    • if you are using a PostgreSQL database, replace --with-feature=sqlite with --with-feature=postgres.
  4. install the database:
    • development supports both SQLite and PostgreSQL, 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.
    • run ./script/deploy_db install -c 'dbi:SQLite:dbname=foodloop.db'.
  5. set up the development users:
    • ./script/pear-local_loop dev_data --force
    • DO NOT RUN ON PROD.
  6. start the minion job queue:
    • ./script/pear-local_loop minion worker
  7. import ward data:
    1. Download the CSV(s) from here; and
    2. run the following command:
      •     ./script/pear-local_loop minion job \
            --enqueue 'csv_postcode_import'  \
            --args '[ "⟨ path to CSV ⟩ ]'
            ```
        
  8. set up postcodes:
    1. import Code-Point Open: - a copy is included in etc/; - run ./script/pear-local_loop codepoint_open --outcodes LA1
      1. assign postcodes:
      ./script/pear-local_loop minion job
      --enqueue entity_postcode_lookup ```

Configuration

App. configuration settings are found in pear-local_loop.⟨environment⟩.conf.

Firebase Cloud Messaging (FCM) credentials should be placed in a file called localspend-47012.json in root.

Usage

  • Run morbo script/pear-local_loop -l http://*:3000 to start the server; and
  • run ./script/pear-local_loop minion worker to start the Minion asynchronous job scheduler.

Database Scripts

To upgrade the database after making changes to commit:

  1. Increment the $VERSION number in lib/Pear/LocalLoop/Schema.pm;
  2. run ./script/deploy_db write_ddl -c 'dbi:SQLite:dbname=foodloop.db'; and
  3. run ./script/deploy_db upgrade -c 'dbi:SQLite:dbname=foodloop.db'.

Run ./script/pear-local_loop recalc_leaderboards to update the leaderboards.

Testing

  • Run prove -lr to run the full test suite using Test-Simple (when using an SQLite database); and
  • run PEAR_TEST_PG=1 prove -lr to run the full test suite (when using a PostgreSQL database).

Code Formatting

TODO

Documentation

TODO

Acknowledgements

LocalLoop is the result of collaboration between the Small Green Consultancy, Shadowcat Systems, Independent Lancaster and the Ethical Small Traders Association.

License

This project is released under the MIT license.

Contact

Name Link(s)
Mark Keating Email
Michael Hallam Email