Moleculer codebase containing real world examples (CRUD, auth, advanced patterns, etc) that adheres to the RealWorld spec and API.
This repo is functionality complete โ PRs and issues welcome!
Live demo on Glitch: https://realworld-moleculer.glitch.me
Glitch project: https://glitch.com/edit/#!/realworld-moleculer
React + Redux front-end UI is included. For more information on how to this works with other frontends/backends, head over to the RealWorld repo.
Getting started
To get the Node server running locally:
- Clone this repo
npm install
to install all required dependenciesnpm run dev
to start the local server- the API is available at http://localhost:3000/api
Alternately, to quickly try out this repo in the cloud, you can
MongoDB persistent store
Basically the services stores data in an NeDB persistent file storage in the ./data
folder. If you have to use MongoDB, set the MONGO_URI
environment variable.
MONGO_URI=mongodb://localhost/conduit
Multiple instances
You can run multiple instances of services. In this case you need to use a transporter i.e.: NATS. NATS is a lightweight & fast message broker. Download it and start with gnatsd
command. After it started, set the TRANSPORTER
env variable and start services.
TRANSPORTER=nats://localhost:4222
To get the Node server running locally with Docker
-
Checkout the repo
git clone https://github.com/ice-services/moleculer-realworld-example-app.git
-
cd moleculer-realworld-example-app
-
Start with docker-compose:
docker-compose up -d
It starts all services in separated containers, a NATS server for communication, a MongoDB server for database and a Traefik reverse proxy
-
Open the http://docker-ip:3000
-
Scale up services
docker-compose scale api=3 articles=2 users=2 comments=2 follows=2 favorites=2
Code Overview
Dependencies
- moleculer - Microservices framework for NodeJS
- moleculer-web - Official API Gateway service for Moleculer
- moleculer-db - Database store service for Moleculer
- moleculer-db-adapter-mongo - Database store service for MongoDB (optional)
- jsonwebtoken - For generating JWTs used by authentication
- bcrypt - Hashing user password
- lodash - Utility library
- slug - For encoding titles into a URL-friendly format
- nats - NATS transport driver for Moleculer (optional)
Application Structure
moleculer.config.js
- Moleculer ServiceBroker configuration file.services/
- This folder contains the services.public/
- This folder contains the front-end static files.data/
- This folder contains the NeDB database files.
Test
Tested with realworld-server-tester.
Local tests is missing currently.
$ npm test
In development with watching
$ npm run ci
License
This project is available under the MIT license.
Contact
Copyright (c) 2016-2017 Ice-Services