Skip to content

codejockie/document-manager

Repository files navigation

npm Build Status Code Climate Coverage Status Codacy Badge Codacy Badge CircleCI

Introduction

  • CJDocs is a document management system that exposes endpoints via RESTful APIs.

  • It has the following features:

    • Login
    • Signup
    • Search for documents
    • Search for users
    • Create documents
    • Delete documents, users
    • Update documents, users
  • App lives here

Project Dependencies

Backend Dependencies

  • autoprefixer - PostCSS plugin to parse CSS and add vendor prefixes to CSS rules using values from Can I Use.
  • axios - Promise based HTTP client for the browser and node.js.
  • babel-cli - Allows running the app in ES6 mode on the fly without having to transpile down to ES5
  • babel-preset-env, babel-preset-stage-0 - These packages provide Babel presets for es2015 plugins, stage 0 plugins
  • bcrypt - Used to hash passwords
  • body-parser - Node.js body parsing middleware. Parse incoming request bodies in a middleware before your handlers, available under the req.body property.
  • classnames - A simple JavaScript utility for conditionally joining classNames together.
  • css-loader - The css-loader interprets @import and url() like import/require() and will resolve them.
  • dotenv - Loads environment variables.
  • express - Used as the web server for this application.
  • express-validator - Validates input on request body, params and query.
  • extract-text-webpack-plugin - Extract text from a bundle, or bundles, into a separate file.
  • file-loader - A file loader module for webpack
  • gulp - gulp is a toolkit that helps you automate painful or time-consuming tasks in your development workflow.
  • gulp-babel - Use next generation JavaScript, today, with Babel
  • gulp-exit - ensures that the task is terminated after finishing.
  • gulp-inject-modules - Loads JavaScript files on-demand from a Gulp stream into Node's module loader.
  • gulp-istanbul - Istanbul unit test coverage plugin for gulp.
  • gulp-jasmine - This is a very basic implementation of a gulp task for jasmine
  • gulp-nodemon - it's gulp + nodemon + convenience.
  • html-webpack-plugin - Plugin that simplifies creation of HTML files to serve your bundles
  • jsonwebtoken - Generates JWT tokens and can verify them
  • lodash - Provides utility functions
  • material-ui - Material-UI is a set of React components that implement Google's Material Design specification.
  • moment - A lightweight JavaScript date library for parsing, validating, manipulating, and formatting dates.
  • node-sass - Node-sass is a library that provides binding for Node.js to LibSass, the C version of the popular stylesheet preprocessor, Sass.
  • nodemailer - Send e-mails from Node.js – easy as cake!
  • passport - Passport is Express-compatible authentication middleware for Node.js.
  • pg - Non-blocking PostgreSQL client for node.js. Pure JavaScript and optional native libpq bindings
  • pg-hstore - A node package for serializing and deserializing JSON data to hstore format
  • postcss-loader - Loader for webpack to process CSS with PostCSS
  • prop-types - Runtime type checking for React props and similar objects.
  • react,react-dom,react-router-dom,react-redux - React is a JavaScript library for creating user interfaces.
  • redux,redux-devtools-extension,redux-logger,redux-thunk - Redux is a predictable state container for JavaScript apps.
  • sass-loader - Loads a Sass/SCSS file and compiles it to CSS.
  • sequelize - Sequelize is a promise-based Node.js ORM for Postgres, MySQL, SQLite and Microsoft SQL Server. It features solid transaction support, relations, read replication and more
  • validator -
  • webpack,webpack-dev-middleware,webpack-hot-middleware - webpack is a module bundler. Its main purpose is to bundle JavaScript files for usage in a browser, yet it is also capable of transforming, bundling, or packaging just about any resource or asset.

Development Dependencies

  • chai - Chai is a BDD / TDD assertion library for node and the browser that can be delightfully paired with any javascript testing framework.
  • codacy-coverage - Get coverage reporting and code analysis for Node.js from Codacy.
  • coveralls - Coveralls.io support for node.js. Get the great coverage reporting of coveralls.io and add a cool coverage button to your README.
  • enzyme,enzyme-adapter-react-16 - Enzyme is a JavaScript Testing utility for React that makes it easier to assert, manipulate, and traverse your React Components' output.
  • eslint - ESLint is a tool for identifying and reporting on patterns found in ECMAScript/JavaScript code.
  • jest - Complete and ready to set-up JavaScript testing solution. Works out of the box for any React project.
  • mocha - Simple, flexible, fun JavaScript test framework for Node.js & The Browser.
  • moxios - Mock axios requests for testing.
  • nyc - Istanbul's state of the art command line interface.
  • redux-mock-store - A mock store for testing your redux async action creators and middleware. The mock store will create an array of dispatched actions which serve as an action log for tests.
  • sequelize-cli - The Sequelize Command Line Interface (CLI)
  • supertest - HTTP assertions made easy via superagent.

Installation and Setup

  • Navigate to a directory using your favourite terminal.

  • Clone this repository to that directory.

  • Using SSH: $ git clone git@github.com:codejockie/document-manager.git

  • Using HTTPS: $ git clone https://github.com/codejockie/document-manager.git

  • Navigate to the repo's directory

  • $ cd document-manager

  • Install the app's dependencies

  • $ npm install or yarn install

  • Run the app

  • $ npm start or yarn start

Tests

  • The tests were written using supertest, chai assertion library.
  • The test coverage is generated by gulp-istanbul package
  • To run tests, navigate to the project's root directory
  • Run the following commands.
  • $ npm test or yarn test

How to contribute

In order to contribute, certain guidelines and style guides must be followed. More info is available on the repo's wiki.
To contribute, fork this repo to your private repository and create a pull request based on the feature you want to add.

Disclaimer

This app and its functions are limited by time constraint and is in no way at its best.

FAQs

  • Can I fork the repo?
    • Feel free
  • Can I contribute to the project?
    • Feel free

License

License included in the repository

Author

John Kennedy - @codejockie