{"id":19255464,"url":"https://github.com/patrick-emmanuel/github-browser","last_synced_at":"2025-06-10T09:33:20.461Z","repository":{"id":48398983,"uuid":"183761897","full_name":"patrick-emmanuel/github-browser","owner":"patrick-emmanuel","description":"An app that retrieves a GitHub's user/organization repositories and their branches.","archived":false,"fork":false,"pushed_at":"2021-07-28T04:54:06.000Z","size":4409,"stargazers_count":2,"open_issues_count":27,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-23T17:30:19.640Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://patrick-ghusers.herokuapp.com","language":"JavaScript","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/patrick-emmanuel.png","metadata":{"files":{"readme":"README.html","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":"2019-04-27T11:01:56.000Z","updated_at":"2019-05-04T07:40:43.000Z","dependencies_parsed_at":"2022-08-24T08:01:51.873Z","dependency_job_id":null,"html_url":"https://github.com/patrick-emmanuel/github-browser","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/patrick-emmanuel%2Fgithub-browser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patrick-emmanuel%2Fgithub-browser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patrick-emmanuel%2Fgithub-browser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patrick-emmanuel%2Fgithub-browser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/patrick-emmanuel","download_url":"https://codeload.github.com/patrick-emmanuel/github-browser/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patrick-emmanuel%2Fgithub-browser/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259048302,"owners_count":22797700,"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":[],"created_at":"2024-11-09T18:41:17.340Z","updated_at":"2025-06-10T09:33:20.432Z","avatar_url":"https://github.com/patrick-emmanuel.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!DOCTYPE html\u003e\n    \u003chtml\u003e\n    \u003chead\u003e\n        \u003cmeta http-equiv=\"Content-type\" content=\"text/html;charset=UTF-8\"\u003e\n        \u003ctitle\u003eGitHub Browser\u003c/title\u003e\n        \u003clink rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/katex@0.10.0/dist/katex.min.css\" integrity=\"sha384-9eLZqc9ds8eNjO3TmqPeYcDj8n+Qfa4nuSiGYa6DjLNcv9BtN69ZIulL9+8CqC9Y\" crossorigin=\"anonymous\"\u003e\n        \u003clink rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/gh/Microsoft/vscode/extensions/markdown-language-features/media/markdown.css\"\u003e\n        \u003clink rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/gh/Microsoft/vscode/extensions/markdown-language-features/media/highlight.css\"\u003e\n        \u003clink href=\"https://cdn.jsdelivr.net/npm/katex-copytex@latest/dist/katex-copytex.min.css\" rel=\"stylesheet\" type=\"text/css\"\u003e\n        \u003cstyle\u003e\n.task-list-item { list-style-type: none; } .task-list-item-checkbox { margin-left: -20px; vertical-align: middle; }\n\u003c/style\u003e\n        \u003cstyle\u003e\n            body {\n                font-family: -apple-system, BlinkMacSystemFont, 'Segoe WPC', 'Segoe UI', 'Ubuntu', 'Droid Sans', sans-serif;\n                font-size: 14px;\n                line-height: 1.6;\n            }\n        \u003c/style\u003e\n        \n        \u003cscript src=\"https://cdn.jsdelivr.net/npm/katex-copytex@latest/dist/katex-copytex.min.js\"\u003e\u003c/script\u003e\n    \u003c/head\u003e\n    \u003cbody\u003e\n        \u003cp\u003e#GitHub Browser\u003c/p\u003e\n\u003ch2 id=\"getting-started\"\u003eGetting started\u003c/h2\u003e\n\u003cpre\u003e\u003ccode\u003e\u003cdiv\u003e    $ git clone https://github.com/the-bionic/github-browser.git\n    $ cd github-browser\n    $ npm install\n    $ npm start\n\u003c/div\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003ch2 id=\"design-decisions\"\u003eDesign Decisions\u003c/h2\u003e\n\u003ch3 id=\"no-router\"\u003eNo Router\u003c/h3\u003e\n\u003cp\u003eI did not use a router to build the app because all the magic happens on a single page. It is in the form of an accordion,\nsuch that, the user does not need to be taken to a different page to see the results of her actions. This decisions was\nmade intentionally to remove the overhead UX problem of navigating to an extra page when it could be display with a better\nvisual hierachy on the same page.\u003c/p\u003e\n\u003ch3 id=\"responsiveness\"\u003eResponsiveness\u003c/h3\u003e\n\u003cp\u003eResponsiveness is mobile-first. The styles are implemented mobile-first and subsequent media queries are used to\ntailor it to a larger screen. That way, the breakpoints 300px - 1920px are well-covered.\u003c/p\u003e\n\u003ch3 id=\"no-submit-button\"\u003eNo submit button\u003c/h3\u003e\n\u003cp\u003eAPI requests are debounced while the user is typing their keywords. That way, an extra click is not required by the user to perforn a search action.\u003c/p\u003e\n\u003ch2 id=\"deployment\"\u003eDeployment\u003c/h2\u003e\n\u003cp\u003eThe app was deployed to heroku: \u003ca href=\"https://patrick-ghusers.herokuapp.com\"\u003ehere\u003c/a\u003e and can interacted with there.\u003c/p\u003e\n\u003ch2 id=\"end-to-end-tests\"\u003eEnd to End tests.\u003c/h2\u003e\n\u003cp\u003eEnd-to-end tests was implemented with puppeteer.\u003c/p\u003e\n\u003ch2 id=\"extra-thoughts\"\u003eExtra Thoughts\u003c/h2\u003e\n\u003cp\u003eThe tests produce warnings when ran. It is a known issue in React: \u003ca href=\"https://github.com/facebook/react/\"\u003ehere\u003c/a\u003eissues/14769 and a fix is in alpha and has not been released yet. It is due to the tests interaction/updating the dom.\u003c/p\u003e\n\u003ch2 id=\"available-scripts\"\u003eAvailable Scripts\u003c/h2\u003e\n\u003cp\u003eIn the project directory, you can run:\u003c/p\u003e\n\u003ch3 id=\"npm-start\"\u003e\u003ccode\u003enpm start\u003c/code\u003e\u003c/h3\u003e\n\u003cp\u003eRuns the app in the development mode.\u003cbr\u003e\nOpen \u003ca href=\"http://localhost:3000\"\u003ehttp://localhost:3000\u003c/a\u003e to view it in the browser.\u003c/p\u003e\n\u003cp\u003eThe page will reload if you make edits.\u003cbr\u003e\nYou will also see any lint errors in the console.\u003c/p\u003e\n\u003ch3 id=\"npm-test\"\u003e\u003ccode\u003enpm test\u003c/code\u003e\u003c/h3\u003e\n\u003cp\u003eLaunches the test runner in the interactive watch mode.\u003cbr\u003e\nSee the section about \u003ca href=\"https://facebook.github.io/create-react-app/docs/running-tests\"\u003erunning tests\u003c/a\u003e for more information.\u003c/p\u003e\n\n    \u003c/body\u003e\n    \u003c/html\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpatrick-emmanuel%2Fgithub-browser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpatrick-emmanuel%2Fgithub-browser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpatrick-emmanuel%2Fgithub-browser/lists"}