{"id":20448589,"url":"https://github.com/datacamp/rdocumentation-app","last_synced_at":"2025-08-21T00:31:50.424Z","repository":{"id":37623033,"uuid":"59603523","full_name":"datacamp/rdocumentation-app","owner":"datacamp","description":"The web application running rdocumentation.org.","archived":false,"fork":false,"pushed_at":"2025-07-22T11:58:00.000Z","size":13697,"stargazers_count":43,"open_issues_count":46,"forks_count":13,"subscribers_count":21,"default_branch":"master","last_synced_at":"2025-07-22T13:26:19.794Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://www.rdocumentation.org","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/datacamp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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}},"created_at":"2016-05-24T19:47:31.000Z","updated_at":"2025-07-22T11:55:39.000Z","dependencies_parsed_at":"2023-12-04T21:30:54.134Z","dependency_job_id":"ea62076f-a0f4-4dd8-a75d-0a76bac7ecb9","html_url":"https://github.com/datacamp/rdocumentation-app","commit_stats":null,"previous_names":[],"tags_count":60,"template":false,"template_full_name":null,"purl":"pkg:github/datacamp/rdocumentation-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datacamp%2Frdocumentation-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datacamp%2Frdocumentation-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datacamp%2Frdocumentation-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datacamp%2Frdocumentation-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/datacamp","download_url":"https://codeload.github.com/datacamp/rdocumentation-app/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datacamp%2Frdocumentation-app/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271409415,"owners_count":24754711,"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","status":"online","status_checked_at":"2025-08-20T02:00:09.606Z","response_time":69,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2024-11-15T10:35:50.863Z","updated_at":"2025-08-21T00:31:49.933Z","avatar_url":"https://github.com/datacamp.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RDocumentation API\n\n_Important notes:_\n\n1. Please read this [confluence page](https://datacamp.atlassian.net/wiki/spaces/PRODENG/pages/2314469377/RDocumentation) which explains the architecture of how RDocumentation works.\n2. This repo is now only used for its API. Please disregard all the UI code here. THe UI now lives in [datacamp/rdocumentation-2.0](https://github.com/datacamp/rdocumentation-2.0).\n\nrdocumentation.org provides the R community with centralized, quality and easy to search documentation.\n\nR documentation sifts through all CRAN, GitHub and BioConductor packages hourly, parses the documentation files and indexes them in an Elasticsearch database. This makes rdocumentation.org the best online resource to browse all R package documentation.\n\n## How the API works\n\nYou can check docs for the API by running the app locally and going to http://localhost:3000/docs/\n\n1. Newly parsed packages are added to the `rdocs-app-worker` SQS queue every hour.\n2. That queue is configured to hit the `/task` path which calls the `processMessage` method of the WorkerController\n3. That `processMessage` method adds topics to the mysql database\n4. After a query is sent to the API to request a topic, that topic is stored in Redis so that it's returned faster next time.\n\n## Development\n\n### Using docker\n\nYou'll need docker and docker-compose to run this stack locally\n\n- Copy the .env.sample to .env and change relevant variables\n  - If you already have a mysql db running on port 3306, update the `DATABASE_PORT` to another value as well as the port mapping in docker-compose.yml (e.g. change it to `\"3308:3306\"`)\n- Make sure you are using version 2 of docker-compose, then run `docker-compose create` to create the redis and mysql container\n- `docker-compose start` to fire up a local redis an mysql\n- Use the same node version in your terminal as the Dockerfile is using: `nvm use 8.16`\n- `npm install`\n- Run the database migrations by doing `npm run migrate`\n- `npm run start-dev`\n\nOnce the db is running, you can use a mysql client like dbeaver to access it. Connect to it based on the environment variables you have in `docker-compose.yml`. You will also need to go in the \"Driver properties\" tab of the connection window, and set `allowPublicKeyRetrieval` to true. When you are done, click on Finish. The server host should just be `localhost`.\n\n### Troubleshooting\n\nIf you get an error: `SequelizeConnectionError: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client`\nfollow these steps:\n\n1. Access your mysql container: you can do it either through the docker app by clicking on the \"cli\" button of the container, or in your terminal by running:\n   - `docker ps` and grabing the container id for mysql\n   - `docker exec -it \u003cmysql_container_id\u003e bash`\n2. `mysql -u root -p`\n3. Enter: `password`\n4. `ALTER USER 'root' IDENTIFIED WITH mysql_native_password BY 'password';`\n5. `flush privileges;`\n\n\n## Deployment\n\n- Commits to master are deployed to staging\n- Tags that use `vx.y.z` are deployed to production\n\n## What the CI does\n\nThis application runs on the DataCamp infrastructure. Our custom CI flow will:\n\n- Build a docker image\n- Upload it the ECR\n- Deploy the new version to ECS\n\n## License\n\nSee the [LICENSE](LICENSE.md) file for license rights and limitations (MIT).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdatacamp%2Frdocumentation-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdatacamp%2Frdocumentation-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdatacamp%2Frdocumentation-app/lists"}