Alex Zvuluny
For an awesome company:
www.wisdo.com »
Table of Contents
The project consists of 2 services:
- main application
- Asyncronouse notification service
CRUD resources:
- user
- keywords
- community
- posts
Features: (tested with Jest)
- Swagger documentation
- Signup and signin (using JWT)
- Add new keywords
- List exsiting keywords
- Create new community
- List community
- Block posting request for non-members
- Request membership to join a community
- Approve membership request to join community (by moderator or super-moderator)
- Creat pending post in a community
- Alert about detected keywords in pending post using asynchronose notification service.
- Approve pending post in a community (by moderator or super-moderator)
- List posts in a feed using below sorting:
- All Posts must be from user registered communities
- Posts from same country (user vs author) is displayed first sorted by a numeric score system
- Posts NOT from same origin country is displayed last sorted by a numeric score system
- score [0..100] is calculated using 80% likes + 20% post length
Major frameworks used in the project. Add-ons/plugins described in acknowledgements section.
- Express - back end web application framework for Node.js
- MongoDB - Non relation DB
- Redis - Asynchronose communication between services
- Git - source contrl system
- Github - remote repository
Tools,libs:
- Redis Pub/Sub ( ).
- Jest - unit testing and e2e
- Postman (e2e)
- MongooseJS (MongoDB interface)
- Swagger (documentation)
run development server locally. In root folder run:
npm run dev
run automated test. In root folder run:
npm run test
run automated test. In root folder run:
npm run test:notification
run in production. In root folder run:
npm run start
- NodeJS + NPM
- MongoDB
- Redis
- Git
-
Clone the repo <>
git clone https://github.com/alex639hz/wisdo.git
change directory to root folder
cd wisdo
-
Install NPM packages
npm install
-
Testing without notification service
npm run test
-
Testing with notification service
npm run test_notification
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request