{"id":21766492,"url":"https://github.com/kastorcode/gostack-challenge-06","last_synced_at":"2026-04-09T16:03:27.406Z","repository":{"id":123500346,"uuid":"401423233","full_name":"kastorcode/gostack-challenge-06","owner":"kastorcode","description":"Challenge #6 of the Rocketseat GoStack Bootcamp: First project with React Native.","archived":false,"fork":false,"pushed_at":"2021-08-30T17:21:16.000Z","size":853,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-21T05:27:42.460Z","etag":null,"topics":["bootcamp","brazil","challenge","course","frontend","goiania","goias","gostack","javascript","matheus","oliveira","ramalho","react-native","rocketseat","styled-components"],"latest_commit_sha":null,"homepage":"https://rocketseat.com.br","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/kastorcode.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-08-30T17:05:45.000Z","updated_at":"2021-08-30T17:21:19.000Z","dependencies_parsed_at":null,"dependency_job_id":"023c8e6a-6a7d-441c-9341-8212ba4628e5","html_url":"https://github.com/kastorcode/gostack-challenge-06","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/kastorcode/gostack-challenge-06","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kastorcode%2Fgostack-challenge-06","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kastorcode%2Fgostack-challenge-06/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kastorcode%2Fgostack-challenge-06/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kastorcode%2Fgostack-challenge-06/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kastorcode","download_url":"https://codeload.github.com/kastorcode/gostack-challenge-06/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kastorcode%2Fgostack-challenge-06/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262870852,"owners_count":23377309,"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":["bootcamp","brazil","challenge","course","frontend","goiania","goias","gostack","javascript","matheus","oliveira","ramalho","react-native","rocketseat","styled-components"],"created_at":"2024-11-26T13:17:44.251Z","updated_at":"2026-04-09T16:03:22.365Z","avatar_url":"https://github.com/kastorcode.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## GoStack Bootcamp Challenge 6\n\u003e 🚀 Practical project of the [Rocketseat](https://rocketseat.com.br) GoStack Bootcamp.  \n👷 Developed by Matheus Ramalho de Oliveira.  \n🔨 Systems Analyst, Full-Stack Developer.  \n🏡 Goiânia, Goiás, Brasil.  \n✉️ kastorcode@gmail.com  \n👍 [instagram.com/kastorcode](https://www.instagram.com/kastorcode)\n\n---\n\n### Screenshots\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"screenshots/1.png\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"screenshots/2.png\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"screenshots/3.png\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"screenshots/4.png\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"screenshots/5.png\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"screenshots/6.png\" /\u003e\n\u003c/p\u003e\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/gostack.png\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    Challenge 6: First project with React Native\n\u003c/p\u003e\n\n---\n\n## :rocket: Sobre o desafio\n\nNesse desafio você adicionará novas funcionalidades na aplicação que desenvolvemos ao longo desse módulo.\n\n### Funcionalidades\n\n#### 1. Loading de repositórios\n\nAdicione um indicator de loading utilizando `\u003cActivityIndicator /\u003e` antes de carregar a lista de repositórios favoritados na tela de detalhes do Usuário.\n\n#### 2. Scroll infinito\n\nAdicione uma funcionalidade de scroll infinito na lista de repositórios favoritados. Assim que o usuário chegar nos **20%** do final de lista, busque pelos items na próxima página e adicione na lista. Seu código ficará da seguinte forma:\n\n```js\n\u003cStars\n  onEndReachedThreshold={0.2} // Carrega mais itens quando chegar em 20% do fim\n  onEndReached={this.loadMore} // Função que carrega mais itens\n  // Restante das props\n\u003e\n```\n\nPara requisitar uma nova página no Github utilize um parâmetro `page` no fim da URL:\n\n```\nhttps://api.github.com/users/diego3g/starred?page=2\n```\n\n#### 3. Pull to Refresh\n\nAdicione uma funcionalidade para quando o usuário arrastar a listagem de repositórios favoritados pra baixo atualize a lista resetando o estado, ou seja, volte o estado da paginação para a página 1 exibindo apenas os 30 primeiros itens.\n\nA funcionalidade \"Pull to Refresh\" existe por padrão na FlatList e pode ser implementada através do seguinte código:\n\n```js\n\u003cStars\n  onRefresh={this.refreshList} // Função dispara quando o usuário arrasta a lista pra baixo\n  refreshing={this.state.refreshing} // Variável que armazena um estado true/false que representa se a lista está atualizando\n  // Restante das props\n\u003e\n```\n\n#### 4. WebView\n\nCrie uma nova página na aplicação que vai ser acessada quando o usuário clicar em um repositório favoritado, essa página deve conter apenas o Header da aplicação. O conteúdo da página será uma WebView, ou seja, um browser integrado que exibe o atributo `html_url` presente no objeto do repositório que vem da API do Github.\n\nDocumentação de utilização da [WebView](https://github.com/react-native-community/react-native-webview/blob/master/docs/Getting-Started.md).\n\nExemplo de código:\n\n```js\n\u003cWebView source={{ uri: repository.html_url }} style={{ flex: 1 }} /\u003e\n```\n\nResultado:\n\n![WebView](https://raw.githubusercontent.com/rocketseat-education/bootcamp-gostack-desafio-06/master/.github/exemplo-web-view.png)\n\n---\n\n### 🗓 ️Roadmap\n- Introduction to Node.js\n- Creating Node.js project\n- Continuing Node.js project\n- CSS Flexbox\n- UI Design\n- Introduction to React\n- First project with ReactJS\n- First project with React Native\n- Front-end documentation\n- Flux architecture\n- Using React Hooks\n- Server-side rendering(SSR) with ReactJS\n- GraphQL\n- Expo\n- Creating ReactJS project\n- Creating React Native project\n- Animations with React Native\n- Full-stack app development\n- Node.js tests\n- Node.js deploy\n- ReactJS tests\n- React Native tests\n- ReactJS deploy\n- React Native publication\n- WebSocket with Express\n- Advanced patterns at Node.js\n- OmniStack SaaS(software as a service) and AdonisJS\n- Final challenge\n- Monorepo\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkastorcode%2Fgostack-challenge-06","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkastorcode%2Fgostack-challenge-06","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkastorcode%2Fgostack-challenge-06/lists"}