A free and open-source document management system implemented in Javascript. Check it out on Heroku
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
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.
- Clone the repo with the link Github provides.
- Change directory to
libre-dms
and runnpm 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 (whereport
is the WEBPORT environment variable). API is available at http://localhost:port (whereport
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 withnpm run test:e2e
- Server testing:
API documentation can be found here
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
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.
This project is available for use and modification under the MIT License. See the LICENSE file for more details.