Despite having a k8 in the name, this project does not actually utilize K8 orchestration.
Pre-requisites:
- NodeJS
- Yarn. I have completely stopped using
npmin favor of yarn due to performance. - MongoDB
- Docker
- Docker Compose
In the project root directory, run:
# run in `detached` mode (recommended):
docker-compose up -d
# Or run attached, you will see both container logs: mongodb init log and running server log
docker-compose up
# to stop containers generated by docker-compose, run:
docker-compose downDocker compose will pull & build both the project and the mongodb image from docker hub. After compose has successfully built the images, go to http://localhost:1337 to verify that the container is running.
By default, the database has been pre-populated with a set of organizations, comments and members.
Available organizations to query from:
- fsociety
- ecorp
[GET] /orgs/{orgName}/comments
curl -i /orgs/fsociety/comments
HTTP/1.1 200 OK
BODY:
[
{
"deleted": false,
"_id": "5d61050a854b8e001cb96896",
"comment": "i miss qwerty...",
"org": "fsociety",
"createdAt": "2019-08-24T09:36:10.846Z",
"updatedAt": "2019-08-24T09:36:10.846Z",
"__v": 0
},
{
"deleted": false,
"_id": "5d61050a854b8e001cb96897",
"comment": "where is darlene?",
"org": "fsociety",
"createdAt": "2019-08-24T09:36:10.846Z",
"updatedAt": "2019-08-24T09:36:10.846Z",
"__v": 0
}
][POST] /orgs/{orgName}/comments
curl -d '{"comment": "Bonsoir!"}' \
-H "Content-Type: application/json" \
-X POST http://localhost:1337/orgs/ecorp/comments
HTTP/1.1 200 OK[DELETE] /orgs/{orgName}/comments
curl -i -X DELETE http://localhost:1337/orgs/fsociety/comments
HTTP/1.1 200 OK[GET] /orgs/{orgName}/members
curl -i http://localhost:1337/orgs/fsociety/members
HTTP/1.1 200 OK
BODY:
[
{
"avatar": "https://i.pravatar.cc/300",
"followers": 33,
"following": 11,
"_id": "5d61050a854b8e001cb96890",
"email": "praveen@fsociety.com",
"org": "fsociety",
"createdAt": "2019-08-24T09:36:10.811Z",
"updatedAt": "2019-08-24T09:36:10.811Z",
"__v": 0
},
{
"avatar": "https://i.pravatar.cc/300",
"followers": 18,
"following": 7,
"_id": "5d61050a854b8e001cb96891",
"email": "darlene@fsociety.com",
"org": "fsociety",
"createdAt": "2019-08-24T09:36:10.811Z",
"updatedAt": "2019-08-24T09:36:10.811Z",
"__v": 0
},
{
"avatar": "https://i.pravatar.cc/300",
"followers": 7,
"following": 21,
"_id": "5d61050a854b8e001cb9688f",
"email": "gregtandiono@fsociety.com",
"org": "fsociety",
"createdAt": "2019-08-24T09:36:10.810Z",
"updatedAt": "2019-08-24T09:36:10.810Z",
"__v": 0
}
]Install dependencies:
yarnRun the server:
yarn startRunning yarn start will run a seed script via node seed.js to insert default set of collections and documents to your local mongodb db.
Run unit and integration tests:
# run without nyc coverage
yarn test
# run with nyc coverage report
yarn test:coverageIf you're going to develop on your local machine, it is recommended that you use tools like nodemon for watch or reload.
However, it is recommended that you run the seed script first to get some data in your mongodb database.
# Run seed script (recommended)
node ./seed.js
# Run server
nodemon index.jsBefore you do, you need to create a production config /config/production.json:
{
"host": "localhost",
"port": 1337,
"db": {
"connString": "mongodb://mongo:27017/orgcommnode"
}
}Then run:
docker build -t orgcommnode-rest .
You can replace the orgcommnode-rest tag with any name you want.