{"id":22489803,"url":"https://github.com/yetanother-blog/reporadar","last_synced_at":"2025-08-02T22:31:17.313Z","repository":{"id":39182451,"uuid":"249556135","full_name":"yetanother-blog/reporadar","owner":"yetanother-blog","description":"Simple radar to gather interesting GitHub repositories","archived":false,"fork":false,"pushed_at":"2023-01-05T17:26:21.000Z","size":3547,"stargazers_count":2,"open_issues_count":56,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2023-03-04T01:35:44.916Z","etag":null,"topics":["apollo","appsync","create-react-app","dynamodb","graphql","lambda","serverless","typescript"],"latest_commit_sha":null,"homepage":"https://reporadar.yetanother.blog","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yetanother-blog.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-03-23T22:15:39.000Z","updated_at":"2021-06-19T20:28:54.000Z","dependencies_parsed_at":"2023-02-04T08:30:46.721Z","dependency_job_id":null,"html_url":"https://github.com/yetanother-blog/reporadar","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yetanother-blog%2Freporadar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yetanother-blog%2Freporadar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yetanother-blog%2Freporadar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yetanother-blog%2Freporadar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yetanother-blog","download_url":"https://codeload.github.com/yetanother-blog/reporadar/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228500492,"owners_count":17930076,"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":["apollo","appsync","create-react-app","dynamodb","graphql","lambda","serverless","typescript"],"created_at":"2024-12-06T17:20:48.679Z","updated_at":"2024-12-06T17:23:09.255Z","avatar_url":"https://github.com/yetanother-blog.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# RepoRadar\n\n[![](https://github.com/yetanother-blog/reporadar/workflows/CI/badge.svg)](https://github.com/yetanother-blog/reporadar/actions)\n\n- [Prod](https://reporadar.yetanother.blog)\n- [Staging](https://reporadar-staging.yetanother.blog)\n\n## About\n\nThe RepoRadar is an internal tool for us to automate the process of finding interesting GitHub repositories. The service crawls GitHub on a regular basis and stores matching repositories in a DynamoDB table. We then use the results to show them on a simple CRA-based web application.\n\n![Architecture](docs/architecture.png)\n\n## Dependencies\n\n- [AWS SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-reference.html#serverless-sam-cli)\n- AWS CLI\n- NodeJS\n- Yarn\n- Docker\n\n## Development\n\n### Install\n\n```sh\n$ make dependencies\n```\n\n### Frontend\n\nThe frontend uses the GraphQL Staging API configured in the `frontend/.env` file. By changing the `REACT_APP_GRAPHQL_API_ENDPOINT` variable, you can also run the frontend against prod or your own environment. \n\n```sh\n$ make start-fe\n```\n\n### API\n\nThe idea here is, to create your own instance of the API and work with the deployed version directly in AWS.\n\n1. Make sure you have AWS credentials in your environment with permissions to deploy a CloudFormation stack\n2. Create a `.env` file (see `.env-template`)\n3. Create a S3 bucket for the CloudFormation stack: `make create-bucket`\n4. Deploy your stack: `make deploy`\n\nAfter the deployment, you should see the output of the CloudFormation stack, for instance:\n\n```\n-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\nOutputs\n-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\nKey                 FrontendDistributionId\nDescription         CloudFront ID for frontend CDN\nValue               E1J6DKDNFKFJRX\n\nKey                 GraphQLApiUrl\nDescription         Endpoint of the public GraphQL API\nValue               https://whatever.cloudfront.net/graphql\n\nKey                 RepoTableName\nDescription         Name of the DynamoDB database\nValue               reporadar-test-RepoTable-whatever\n\nKey                 FrontendBucket\nDescription         Name of the s3 frontend bucket\nValue               reporadar-test\n\nKey                 FrontendUrl\nDescription         Url for the frontend\nValue               https://whatever.cloudfront.net\n-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n```\n\nUse one of the endpoints to test your changes.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyetanother-blog%2Freporadar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyetanother-blog%2Freporadar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyetanother-blog%2Freporadar/lists"}