/libre-dms

A full-stack document management system (Javascript)

Primary LanguageJavaScriptMIT LicenseMIT

Build Status Client Coverage Server Coverage Code Climate Issue Count

LibreDMS

A free and open-source document management system implemented in Javascript. Check it out on Heroku

Features

LibreDMS is used to track, manage and store documents.

  • Stateless authentication with JSON web tokens
  • Create, edit and delete documents
  • Different document access levels:
    • Private documents can only be accessed by their owner and the administrators/superadministrator
    • Role access documents can only be accessed by their owner, other users with the same privilege level and the administrators/superadministrator
    • Public documents can be accessed by every registered user
  • Different privilege levels:
    • The superadministrator has view access to all the documents in the system (including the documents of deleted users) and has the ability to delete them. They can promote and demote users to any privilege level except superadministrator (of which there can be only one)
    • Administrators have view access to all documents excluding those of deleted users. They can promote and demote regular users and reviewers but cannot demote fellow administrators
    • Reviewers are a step below administrators and have the (coming soon) ability to leave review comments on users' documents. They can access
    • Regular users

Technologies

This project uses a NodeJS server with Express as its web application framework. It uses a PostgreSQL database with models managed with Sequelize. Its frontend is a React app with its state managed by Redux. It follows material design principles using the Materialize CSS framework and own styling in Sass. Some other technologies used include Webpack to transpile and bundle client code, Babel for transpiling ES6 to ES5, Nodemon for hot-reloading the server during development and NPM scripts for running various tasks.

How can you get started?

  • Clone the repo with the link Github provides.
  • Change directory to libre-dms and run npm install to install the app.
  • Make sure you have Postgres installed and running.
  • Create a .env file in the root of the folder following the format in the provided sample.env file.
  • Run npm start to launch the app.
  • You can now use LibreDMS by visiting http://localhost:port (where port is the PORT environment variable in your .env file).
  • To launch the app in a development-optimized environment, run npm run start:dev. Visit http://localhost:port (where port is the WEBPORT environment variable). API is available at http://localhost:port (where port is the APIPORT environment variable).
  • Testing:
    • Server testing: npm test
    • Server testing (with coverage reporting): npm run test:cover
    • Client testing: npm run test:client
    • Client testing (with coverage reporting): npm run test:client:cover
    • End-to-end testing: Run npm run start:dev in another terminal and run tests with npm run test:e2e

Documentation

API documentation can be found here

Limitations

LibreDMS' current limitations (aka features in development) include:

  • Handles only text documents
  • Documents cannot be shared with specific other users
  • Reviewers cannot currently leave reviews on documents
  • Lack of email verification and notifications
  • Users cannot download their documents
  • Users cannot upload documents to the system
  • Lack of refresh tokens for continued authentication

Contributing to the project

If you want to contribute to this project, you can fork it, clone it and create a pull request against the development branch once you've pushed your changes to your fork. For branch naming conventions, please use feat/short-feature-description for new features, chore/short-chore-description for chores, and bug/short-bug-description for bugs.

License

This project is available for use and modification under the MIT License. See the LICENSE file for more details.