Skip to content

alex639hz/template-react-framework

Repository files navigation

LinkedIn


Logo

Technical Interview by:

Alex Zvuluny

For an awesome company:
www.wisdo.com »

Table of Contents
  1. About The Project
  2. Getting Started
  3. Links

About The Project

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

Built With

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)

Getting Started

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

Prerequisites

  • NodeJS + NPM
  • MongoDB
  • Redis
  • Git

Installation

  1. Clone the repo <>

    git clone https://github.com/alex639hz/wisdo.git

    change directory to root folder

    cd wisdo
  2. Install NPM packages

    npm install
  3. Testing without notification service

    npm run test
  4. Testing with notification service

    npm run test_notification

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Links