_helpers | ||
_middleware | ||
accounts | ||
config | ||
models | ||
postman-examples | ||
public | ||
routes | ||
.gitignore | ||
app.js | ||
docker-compose.yaml | ||
Dockerfile | ||
LICENSE | ||
package-lock.json | ||
package.json | ||
README.md | ||
yarn.lock |
OpenBikeSensor Web API
The backend API for the OpenBikeSensor Web App.
Running it
Requirements
A working installation of npm and node.js - get the latest node.js LTS release at the node.js homepage and verify it's working via node -v
and npm -v
in a command prompt of your choice.
A working installation of Docker for the used containerized MongoDB.
First start
To get started you need to download all used packages with npm i
in the project's root folder first.
Next up is our local MongoDB. This uses docker but can be conveniently started via sudo npm run mongo:start
(at least in Ubuntu Linux).
Afterwards the dev server is started with npm run dev
and can be called via http://localhost:3000/api
.
To completely stop the project after running it a call to sudo npm run mongo:stop
is necessary.
Running the tests
Just execute npm run test
while both the node.js server and the MongoDB are up and running.
Warning: At the moment (2020-09-29) there are no tests.
Uploading a track for test purposes
Uploading a track to the local server requires multiple steps, as uploading is not possible via the dummy upload form in the corresponding web app yet:
- Create a user in the web app and copy the user id, which can be found at (http://localhost:4200/settings) as "API key"
- Import the Postman script "add-track.json" from the "postman-examples" into Postman
- In each of the three requests add your user id in the "Pre-request script" tab as the value for the "UserId" variable
- As tracks have to be split into smaller parts to get a working upload from the sensor you have to run the three requests in the order of: begin -> add -> end
- View your freshly uploaded track at (http://localhost:4200) -> Home -> Your feed
Sending E-Mails
By default in development mode mails are not sent, but instead the mail data is logged to the console. This can be overriden with the --devSendMails
flag if you start the application like so: npm run dev -- --devSendMails
.
Mails are also always sent in production mode!
For actually sending e-mails the mailserver, sender, user and password for the SMTP server need to be specified as environment variables. The username is read from MAILUSER
, and the password is read from MAILPW
, Mailserver is read from 'MAILSERVER' and the sender name from 'MAILSENDER', so in local development startup would like something like this (at least in Linux): MAILSERVER=mail.my-domain.de MAILSENDER=noreply@whatever.de MAILUSER=myuser MAILPW=supersecurepassword npm run dev -- --devSendMails
.