This repository contains the template code for a NodeJS based Microservice of the Slidewiki 2.0 project. Please do NOT clone this repository and develop your application in it. Instead fork it (following the instructions below) and develop your application there. The CI maintainer (Roy Meissner) will setup continuous integration and delivery for your fork. Just notify him.
Remember to exchange badge urls when forking!
Unfortunatly Github doesn't allow someone to fork a repository into the same organization or even transfer ownership after a rename of a forked repository (shame on you, Github!). In order to fork this template, follow these easy steps:
- Create a new repository inside slidewiki organization with your desired name (e.g.: Deck-Service). Don't initiate the repository with a Readme or a license!
- Execute the following commands on your local machine
- Begin your work by altering README.md of your new service
# Clone the Microservice-Template to a folder named after your new service, e.g.: Deck-Service
git clone [email protected]:slidewiki/Microservice-Template.git NAME_OF_YOUR_NEW_REPO
cd NAME_OF_YOUR_NEW_REPO
# Rename the actual origin and add your new repo as the default origin
git remote rename origin template
git remote add origin ORIGIN_OF_YOUR_NEW_REPO
# e.g.: git remote add origin [email protected]:slidewiki/Deck-Service.git
git push -u origin master
Please visit the wiki at Install NodeJS.
Have a look at the file application/server.js, that is the main routine of this service. Follow the require(...) statements to get trough the entire code in the right order.
When you want to have a look at tests, head over to the folder application/tests/. We're using Mocha and Chai for our purposes.
Since we're developing our application with NodeJS, we're using npm as a task runner. Have a look at the /application/package.json script section to obtain an overview of available commands. Some are:
# Run syntax check and lint your code
npm run lint
# Run unit tests
npm run unit:test
# Start the application
npm start
...
You want to checkout this cool service? Simply start the service and head over to: http://localhost:3000/documentation. We're using swagger to have this super cool API discrovery/documentation tool. BTW.: Did you already discoverd the super easy swagger integration inside /application/routes.js? Tags 'api' and 'description' were everything we needed to add.
Continuous Integration (and in the future Continuous Delivery) is currently setup by using the (for OSS projects) free to use web application Snap-CI. By clicking on the first badge (see at the top), you will be redirected to Snap-CI. There you can have a look at all the different build stages.
We've also setup Code Coverage reports. This is done by Coveralls. Just click on the coverage badge and you'll be redirected to our corresponding Coveralls project.
In the future, we will exchange Snap-CI with our local instance of Bamboo at the Fraunhofer institute. There will be no changes for you, except that the UI looks a little different.
You can use Docker to build, test and run your application locally. Simply edit the Dockerfile and run:
docker build -t MY_IMAGE_TAG ./
docker run -it --rm -p 8880:3000 MY_IMAGE_TAG
Alternatively you can use docker-compose to run your application in conjunction with a (local) mongodb instance. Simply execute:
docker-compose up -d