{"id":48394124,"url":"https://github.com/osscameroon/prolang-api","last_synced_at":"2026-04-06T01:16:20.851Z","repository":{"id":43717354,"uuid":"397395323","full_name":"osscameroon/prolang-api","owner":"osscameroon","description":"Get information about programming languages through REST API or GraphQL.","archived":false,"fork":false,"pushed_at":"2022-12-26T18:13:33.000Z","size":55651,"stargazers_count":3,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-09-03T06:31:02.120Z","etag":null,"topics":["graphql","language","mongodb","nextjs","programming-language","rest-api"],"latest_commit_sha":null,"homepage":"https://www.prolanghistory.com","language":"HTML","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/osscameroon.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}},"created_at":"2021-08-17T21:27:00.000Z","updated_at":"2023-03-30T12:49:05.000Z","dependencies_parsed_at":"2023-01-31T00:46:25.920Z","dependency_job_id":null,"html_url":"https://github.com/osscameroon/prolang-api","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/osscameroon/prolang-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osscameroon%2Fprolang-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osscameroon%2Fprolang-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osscameroon%2Fprolang-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osscameroon%2Fprolang-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/osscameroon","download_url":"https://codeload.github.com/osscameroon/prolang-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osscameroon%2Fprolang-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31455619,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T21:22:52.476Z","status":"ssl_error","status_checked_at":"2026-04-05T21:22:51.943Z","response_time":75,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["graphql","language","mongodb","nextjs","programming-language","rest-api"],"created_at":"2026-04-06T01:16:20.146Z","updated_at":"2026-04-06T01:16:20.840Z","avatar_url":"https://github.com/osscameroon.png","language":"HTML","readme":"# Programming language API\n\nGet information about programming languages\n\n[![Website](https://github.com/osscameroon/prolang-api/actions/workflows/ci-web.yml/badge.svg)](https://github.com/osscameroon/prolang-api/actions/workflows/ci-web.yml)\n[![API](https://github.com/osscameroon/prolang-api/actions/workflows/ci-api.yml/badge.svg)](https://github.com/osscameroon/prolang-api/actions/workflows/ci-api.yml)\n[![Better Uptime Badge](https://betteruptime.com/status-badges/v1/monitor/bbu9.svg)](https://betteruptime.com/?utm_source=status_badge)\n![Follow](https://img.shields.io/twitter/follow/osscameroon?style=social)\n\n[![Website](https://prolanghistory.com/assets/img/og.png)](https://prolanghistory.com)\n\n# Features\n- Retrieve all programming languages\n- Retrieve programming languages by a group of years (the 1940s, 1950s, 1990s, 2000s, etc.)\n- Retrieve successors and predecessors of a language\n- Retrieve programming languages authors\n\n## Prerequisites\n- Node.js 12+\n- Yarn or NPM\n- MongoDB 4+\n- Docker and Docker Compose\n\n## Installation\nClone the project and install the dependencies for each project\n```shell\ngit clone https://github.com/osscameroon/prolang-api.git\ncd prolang-api/apidoc \u0026\u0026 yarn install\ncd ../backend \u0026\u0026 yarn install\ncd ../frontend \u0026\u0026 yarn install\n```\nIf you want to launch the application locally with configuring each project, run the command below\nat the project root directory\n```shell\ndocker-compose up -d\n```\nWait for the application to be ready then, navigate to `http://localhost:5701` and explore the app.\n\n## Backend\nThe backend interacts with a Mongo database so, make sure you set up one before continuing.\nCheck out [this tutorial](https://blog.tericcabrel.com/enable-authentication-and-authorization-on-mongodb/) to see how to set up.\n\nCreate the environment file from the template and update the database URL to your\n```shell\ncp .env.tempalte .env\nnano .env # update the properties, save and exit\n```\nGenerate GraphQL types and start the application\n```shell\nyarn generate:types\nyarn start\n```\n- Navigate to `http://localhost:5700` for the REST API\n- Navigate to `http://localhost:5700/graphql` for the GraphQL Playground\n\n## Apidoc\nNo additional action is required here to start working. \nCheck out the Readme inside the project for more details\n\n## Frontend\nMake sure the Backend is up and running before launching this project.\n\nCreate the environment file from the template and start the project\n```shell\ncp .env.template .env.development.local\nyarn dev\n```\nNavigate to `http://localhost:5701` to view the website\n\n## Testing\nEvery project has tests to validate the integrity of the feature before shipping in production.\n\n### Apidoc\nThe test verifies that the API definition is valid according to the OpenAPI specification.\nRun the command to validate:\n```shell\nyarn lint\n```\n\n### Backend\nThe purpose is to make sure critical features of the application still work as expected by running\nunit and integration tests.\n\nTestcontainers is used to create a database for testing purpose.\nSo, you don't have to worry about your local DB is being polluted.\n```shell\nyarn test\n```\n\n### Frontend\nAs same as for the Backend, unit and end-to-end tests are written on the critical component.\nCypress is used to testing the navigation flow of the application.\nJest is used to test component behavior\n\nRun end-to-end tests with Cypress:\n```shell\nyarn test:it\n# to launch it in headless browser mode\nyarn test:it:ci \n```\n\nRun component tests with Jest\n```shell\nyarn test\n```\n\n## Deployment\nWe use GitHub Action for Continuous Integration and Continuous Delivery.\n\n- The frontend deployment is handled by Vercel Bot that gives you a preview of the website\n  when you create a pull request. It is deployed in production once merged on the main branch\n\n\n- The backend deployment is handled also automated through a bash script that connects to the production server, pulls the new docker image, and runs it.\n\n## How to contribute\n\n- Create an issue where you explain clearly the problem you want to solve\n- Make a Pull Request\n- If it's relevant, we're going to merge it.\n  Yeah, it's simple as this!\n\n\n## License\n\n- [LICENSE: MIT](/LICENSE)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fosscameroon%2Fprolang-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fosscameroon%2Fprolang-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fosscameroon%2Fprolang-api/lists"}