{"id":13674366,"url":"https://github.com/jonashellmann/everydocs-core","last_synced_at":"2026-01-12T08:03:56.829Z","repository":{"id":39664489,"uuid":"188589240","full_name":"jonashellmann/everydocs-core","owner":"jonashellmann","description":"A simple Document Management System for private use with basic functionality to organize your documents digitally","archived":false,"fork":false,"pushed_at":"2025-10-22T16:58:32.000Z","size":310,"stargazers_count":309,"open_issues_count":0,"forks_count":19,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-12-20T21:22:41.110Z","etag":null,"topics":["document","document-management"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jonashellmann.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-05-25T16:33:40.000Z","updated_at":"2025-12-19T02:47:46.000Z","dependencies_parsed_at":"2024-03-31T18:22:05.695Z","dependency_job_id":"aa22ce71-3d64-4491-bb88-90b9944911bf","html_url":"https://github.com/jonashellmann/everydocs-core","commit_stats":null,"previous_names":[],"tags_count":53,"template":false,"template_full_name":null,"purl":"pkg:github/jonashellmann/everydocs-core","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonashellmann%2Feverydocs-core","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonashellmann%2Feverydocs-core/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonashellmann%2Feverydocs-core/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonashellmann%2Feverydocs-core/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jonashellmann","download_url":"https://codeload.github.com/jonashellmann/everydocs-core/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonashellmann%2Feverydocs-core/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28337006,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T06:09:07.588Z","status":"ssl_error","status_checked_at":"2026-01-12T06:05:18.301Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["document","document-management"],"created_at":"2024-08-02T11:00:48.021Z","updated_at":"2026-01-12T08:03:56.814Z","avatar_url":"https://github.com/jonashellmann.png","language":"Ruby","readme":"# EveryDocs Core\n\n[![Build Status](https://img.shields.io/github/actions/workflow/status/jonashellmann/everydocs-core/ruby.yml??branch=main\u0026style=flat-square)](https://github.com/jonashellmann/everydocs-core/actions?query=workflow%3ARuby)\n![Lines of Code](https://img.shields.io/tokei/lines/github/jonashellmann/everydocs-core?style=flat-square)\n![License](https://img.shields.io/github/license/jonashellmann/everydocs-core?style=flat-square)\n![GitHub Repo\nStars](https://img.shields.io/github/stars/jonashellmann/everydocs-core?style=social)\n[![Commit activity](https://img.shields.io/github/commit-activity/y/jonashellmann/everydocs-core?style=flat-square)](https://github.com/jonashellmann/everydocs-core/commits/)\n[![Last commit](https://img.shields.io/github/last-commit/jonashellmann/everydocs-core?style=flat-square)](https://github.com/jonashellmann/everydocs-core/commits/)\n\nEveryDocs Core is the server-side part of EveryDocs. This project contains a [web interface](https://github.com/jonashellmann/everydocs-web/). All in all, EveryDocs is a simple Document Management System (DMS) for private use. It contains basic functionality to organize your documents digitally.\n\n## Features\n\n- Uploading PDF documents with a title, description and the date the document was created\n- Organizing documents in folders and subfolders\n- Adding people and processing states to documents\n- Extracting the content from the PDF file for full-text search\n- Encrypted storage of PDF files on disk\n  - Encryption is automatically activated for all newly created users after upgrading to EveryDocs 1.5.0\n  - For all other users encryption can be activated by adding a `secret_key` (generated for example by `openssl rand -hex 32`) and changing the flag `encryption_actived_flag` in the `users` database table for each user\n  - If encrpytion is actived for a user, then there will be no content extraction and therefore no full-text search for this document\n- Searching all documents by title, description or content of the document\n- Creating new accounts (be aware that at the current moment everybody who knows the URL can create new accounts)\n- Authentication via JsonWebToken\n- REST-API for all CRUD operation for documents, folders, persons and processing states\n- Mobile-friendly web UI\n\n## Screenshots of the web interface\n\n![EveryDocs Web - Dashboard](images/dashboard.png)\n![EveryDocs Web - Uploading new document](images/new-document.png)\n\n## Installation\n\n### Docker Compose (recommended)\n\nThe easiest way to get started is to use Docker Compose. The ``docker-compose.yaml`` creates three containers for the database, Everydocs Core (available on port 5678) and the web interface (available on port 8080 and 8443).\n\nYou may simply need to changed the URL in ``./everydocs-web-config.js`` where EveryDocs Core will be accessible and execute the following command while being inside the source folder of this repository:\n\u003cpre\u003eSECRET_KEY_BASE=\"$(openssl rand -hex 64)\" docker-compose up --build\u003c/pre\u003e\n\n### Docker (recommended)\n\nStart the container and make the API accessible on port ``8080`` by running the following commands. Of course, you can change the port in the last command.\nAlso make sure to check the folder that is mounted into the container. In this case, the uploaded files are stored in ``/data/everydocs`` on the host.\n\u003cpre\u003edocker run -p 127.0.0.1:8080:5678/tcp -e SECRET_KEY_BASE=\"$(openssl rand -hex 64)\" -v /data/everydocs:/var/everydocs-files jonashellmann/everydocs\u003c/pre\u003e\n\nYou can configure the application by using the following environment variables:\n- ``EVERYDOCS_DB_ADAPTER``: The database adapter (default: ``mysql2``)\n- ``EVERYDOCS_DB_NAME``: The name of the database (default: ``everydocs``)\n- ``EVERYDOCS_DB_USER``: The user for the database connection (default: ``everydocs``)\n- ``EVERYDOCS_DB_PASSWORD``: The password for the database connection (no default)\n- ``EVERYDOCS_DB_HOST``: The host of the database (default: ``localhost``)\n- ``EVERYDOCS_DB_PORT``: The port of the database (default: ``3306``)\n\nYou might want to include this container in a network so it has access to a database container.\nAlso there are ways to connect to a database that runs on the host (e.g. see [Stackoverflow](https://stackoverflow.com/questions/24319662/from-inside-of-a-docker-container-how-do-i-connect-to-the-localhost-of-the-mach)).\n\n### Manual Installation (not recommended)\n\n1. Make sure you have Ruby installed. For an installation guide, check here: [Ruby installation guide](https://guides.rubyonrails.org/getting_started.html#installing-rails)\n2. If you haven't installed the Rails Gem, you can run the following command: ``gem install rails``\n3. Download the newest release and unzip it in a location of your own choice.\n4. Configure your database connection by setting the following environment variables: ``EVERYDOCS_DB_ADAPTER`` (e.g. mysql2), ``EVERYDOCS_DB_NAME``, ``EVERYDOCS_DB_USER``, ``EVERYDOCS_DB_PASSWORD``, ``EVERYDOCS_DB_HOST``, ``EVERYDOCS_DB_PORT``.\n   You can do so by editing the ``start-app.sh`` script.\n5. Configure the folder where documents are stored in config/settings.yml.\n   The default location is ``/var/everydocs-files/``.\n6. Install required dependencies by running: ``bundle install``\n7. You might want to change the port of the application in ``start-app.sh`` and ``stop-app.sh``.\n8. Setup your database by running: ``rake db:migrate RAILS_ENV=production``. If there is an error, you might need to execute the following command, to\nset an encryption key: ``EDITOR=\"mate --wait\" bin/rails credentials:edit``\n9. Make sure that the environment variable ``SECRET_KEY_BASE`` has a value.\n   If not, you can generate a key by running ``rake secret`` and set it by editing the ``start-app.sh`` script.\n   In case your not using production as your environment, the environment variable ``SECRET_KEY_BASE_DEV`` or ``SECRET_KEY_BASE_TEST`` needs to be set.\n10. Start your Rails server: ``./start-app.sh``\n11. Access the application on http://localhost:5678 or configure any kind of proxy forwarding in your webserver.\n12. If you wish to use this application in your web browser, consider to install [EveryDocs Web](https://github.com/jonashellmann/everydocs-web/)!\n13. Stop the application: ``./stop-app.sh``\n\n## Backup\n\nTo backup your application, you can simply use the backup functionality of your\ndatabase. For example, a MySQL/MariaDB DBMS may use mysqldump.\n\nAdditionally you have to backup the place where the documents are stored. You\ncan configure this in config/settings.yml. To restore, just put the documents back in that location.\n\n## Routes Documentation\n\nTo learn about the routes the API offers, run the following command: ``rake routes``\n","funding_links":[],"categories":["Software"],"sub_categories":["Document Management"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonashellmann%2Feverydocs-core","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjonashellmann%2Feverydocs-core","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonashellmann%2Feverydocs-core/lists"}