# OwlBoard

OwlBoard is both a backend API, and a frontend Arrival/Departure board webapp.

Powered by Node.JS and using the ldbs-json module, the OwlBoard API provides up to date train departure information for any station in the UK.

## Build

To build the application with Docker, clone the repository and run `docker build`

## API Endpoints:

API Documentation has been removed as it is now out of date. I do intent to re-write the documentation at a later date.

## Configuration:

Configuration options are set through environment variables.
These configuration options are shared with other programs in the OwlBoard ecosystem.

|         VAR         |  DEFAULT  | REQUIRED |                          PURPOSE                          |
| :-----------------: | :-------: | :------: | :-------------------------------------------------------: |
|    OWL_SRV_PORT     |   8460    |    NO    |                      Web Server Port                      |
|   OWL_SRV_LISTEN    |  0.0.0.0  |    NO    |                 Web Server Listen Address                 |
|     OWL_DB_USER     |    owl    |    NO    |                     Database Username                     |
|     OWL_DB_PASS     | twittwoo  |    NO    | Database Password - Do not leave as default in production |
|     OWL_DB_NAME     | owlboard  |    NO    |                       Database Name                       |
|     OWL_DB_PORT     |   27017   |    NO    |                   Database Server Port                    |
|     OWL_DB_HOST     | localhost |    NO    |                   Database Server Host                    |
|     OWL_LDB_KEY     |           |   YES    |                National Rail LDBWS API Key                |
|    OWL_LDB_SVKEY    |           |    NO    |               National Rail LDBSVWS API Key               |
| OWL_LDB_CORPUSUSER  |           |   YES    |                Network Rail NROD Username                 |
| OWL_LDB_CORPUSPASS  |           |   YES    |                Network Rail NROD Password                 |
|  OWL_GIT_ISSUEBOT   |           |    NO    |             Gitea API Key for issue reporting             |
| OWL_GIT_APIENDPOINT |           |    NO    |                    Gitea API Endpoint                     |

In the case that OWL_LDB_SVKEY is not available, staff versions of departure board, etc. will not be available.

In the case that OWL_GIT_ISSUEBOT is not available, the 'Report Issue' page will not be able to POST data.

## Database

OwlBoard uses MongoDB

The OwlBoard database is managed by the dbmanager application which will configure and maintain the database and should be run at least twice a day to ensure timetable data is up to date, see https://git.fjla.uk/owlboard/db-manager.