{"id":13578102,"url":"https://github.com/nunux-keeper/keeper-core-api","last_synced_at":"2025-04-05T16:31:54.033Z","repository":{"id":135689648,"uuid":"82215307","full_name":"nunux-keeper/keeper-core-api","owner":"nunux-keeper","description":"Nunux Keeper core API","archived":false,"fork":false,"pushed_at":"2020-09-04T04:23:14.000Z","size":882,"stargazers_count":64,"open_issues_count":7,"forks_count":4,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-11-05T15:49:19.328Z","etag":null,"topics":["content-curation","content-management","nodejs","restful-api","webscraper","webscraping"],"latest_commit_sha":null,"homepage":"https://api.nunux.org/keeper/api-docs/","language":"JavaScript","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/nunux-keeper.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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}},"created_at":"2017-02-16T18:58:54.000Z","updated_at":"2024-01-04T13:20:15.000Z","dependencies_parsed_at":"2024-01-16T20:29:23.018Z","dependency_job_id":"45210176-8695-4ece-9199-399891039773","html_url":"https://github.com/nunux-keeper/keeper-core-api","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nunux-keeper%2Fkeeper-core-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nunux-keeper%2Fkeeper-core-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nunux-keeper%2Fkeeper-core-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nunux-keeper%2Fkeeper-core-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nunux-keeper","download_url":"https://codeload.github.com/nunux-keeper/keeper-core-api/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247366331,"owners_count":20927493,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["content-curation","content-management","nodejs","restful-api","webscraper","webscraping"],"created_at":"2024-08-01T15:01:27.453Z","updated_at":"2025-04-05T16:31:53.570Z","avatar_url":"https://github.com/nunux-keeper.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.org/nunux-keeper/keeper-core-api.svg?branch=master)](https://travis-ci.org/nunux-keeper/keeper-core-api)\n\n# Keeper core API\n\n\u003e Your personal content curation service.\n\nThis project is the core system of Nunux Keeper. It's an API that allow you to\ncollect, organize, and retrieve online documents.\n\n## Features\n\n* Create text or HTML documents (from scratch, from an URL or from an uploaded\n  file)\n* Cleaning web pages for better readability\n* Edit document content\n* Attach files to a document\n* Full Text search on documents\n* Create labels (name, color)\n* Classify documents with labels\n* Remove and restore documents\n* Share documents with other users or publicly\n* Expose public documents with RSS\n* Import and Export documents of an user\n* RESTFul API (with [HATOAS][hateoas] support)\n* Authentication delegated to external identity provider (like\n  [Keycloak][keycloak], [Auth0][auth0], ...)\n* Store attachments on disk or on [S3][s3]\n* Online API documentation\n* Produce metrics (with [StatsD][statsd])\n* Publish server event to external systems (with Webhooks, AMQP, ...)\n* BDD testing (with [Cucumber][cucumber])\n\nSee `ROADMAP.md` for planned features.\n\n## Under the hood\n\nThe project is developed with [Node.js][nodejs] and uses the [Express][express]\nFramework.\n\nThe backend storage is pluggable. Documents can be stored into\n[MongoDB][mongodb] or [Elasticsearch][elasticsearch]. It's planned to support\nother storage backends (like CouchBase, Cassandra, ...)\n\nThe indexation engine is also pluggable, but only Elasticsearch is supported for\nnow.\n\n[Redis][redis] is used as an event bus to exchange data between services.\n\n\n## Installation\n\n### Prerequisites\n\n* [Docker][docker]\n* [Docker compose][docker-compose]\n\n### Run tests\n\n```bash\n# Start required backends (ElasticSearch, MongoDB, Redis)\n# Launch tests\n# Teardown backends\nmake build deploy test undeploy\n```\n\nYou can also launch tests using Elasticsearch as main database:\n\n```bash\nmake build deploy with-elastic test undeploy\n```\n\n### Start the server\n\n\u003e *Warning:* This is useful for testing or have a development server.\n\u003e If you want to operate the service and don't lost your data please refer\n\u003e below.\n\n```bash\n# Start required backends (ElasticSearch, MongoDB, Redis) and the API server.\n# (Using dev configuration: etc/default/dev.env)\nmake with-app deploy logs\n```\n\nIf you want to start the server with another configuration (for instance:\n*staging*) you need to override the `env` variable of the `Makefile`:\n\n```bash\nmake with-app deploy env=staging\n```\n\nConfiguration files are located into the `etc/default` directory.\nSee [etc/default/dev.env](etc/default/dev.env) for development configuration\ndetails.\n\nFinally you can remove everything like this:\n\n```bash\n# Stop and destroy all services\nmake undeploy\n```\n\n### Install the server as a service\n\nYou need to have all backend services up and running with following Docker\nnames:\n\n- mongodb\n- elasticSearch\n- redis\n\n```bash\n# Install systemd configuration (for staging env)\nmake install env=staging\n```\n\n\u003e Un-install is as simple: `make uninstall`\n\nStarted services are:\n\n- **keeper-core-api**: Core API server.\n- **keeper-core-job-worker**: Job worker to process background tasks\n- **keeper-data-backup**: Backup documents files (scheduler).\n\n[hateoas]: https://en.wikipedia.org/wiki/HATEOAS\n[keycloak]: http://www.keycloak.org\n[auth0]: https://auth0.com/\n[nodejs]: https://nodejs.org\n[docker]: https://www.docker.com\n[docker]: https://docs.docker.com/compose/\n[mongodb]: https://www.mongodb.com\n[elasticsearch]: https://www.elastic.co\n[redis]: http://redis.io/\n[express]: http://expressjs.com\n[cucumber]: https://cucumber.io\n[s3]: https://aws.amazon.com/s3\n[statsd]: https://github.com/b/statsd_spec\n\n\n----------------------------------------------------------------------\n\nNUNUX Keeper\n\nCopyright (c) 2016 Nicolas CARLIER (https://github.com/ncarlier)\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program.  If not, see \u003chttp://www.gnu.org/licenses/\u003e.\n\n----------------------------------------------------------------------\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnunux-keeper%2Fkeeper-core-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnunux-keeper%2Fkeeper-core-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnunux-keeper%2Fkeeper-core-api/lists"}