{"id":14985475,"url":"https://github.com/pedro-candido/store","last_synced_at":"2026-02-21T11:30:55.408Z","repository":{"id":247582946,"uuid":"826053156","full_name":"pedro-candido/store","owner":"pedro-candido","description":"Aplicativo Simples de Loja com possibilidade de adicionar e remover produtos do carrinho.","archived":false,"fork":false,"pushed_at":"2024-07-23T09:26:18.000Z","size":3463,"stargazers_count":1,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-20T02:35:43.686Z","etag":null,"topics":["jest","react","react-native","storybook","typescript","zustand"],"latest_commit_sha":null,"homepage":"","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/pedro-candido.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":"2024-07-09T02:58:38.000Z","updated_at":"2024-07-23T09:26:22.000Z","dependencies_parsed_at":"2024-09-25T00:32:22.576Z","dependency_job_id":null,"html_url":"https://github.com/pedro-candido/store","commit_stats":{"total_commits":52,"total_committers":2,"mean_commits":26.0,"dds":"0.23076923076923073","last_synced_commit":"dd1ca31d0d481978e27d31262b117beddbc43e46"},"previous_names":["pedro-candido/store"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pedro-candido%2Fstore","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pedro-candido%2Fstore/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pedro-candido%2Fstore/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pedro-candido%2Fstore/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pedro-candido","download_url":"https://codeload.github.com/pedro-candido/store/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243358306,"owners_count":20277995,"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":["jest","react","react-native","storybook","typescript","zustand"],"created_at":"2024-09-24T14:11:01.343Z","updated_at":"2025-10-19T19:51:54.152Z","avatar_url":"https://github.com/pedro-candido.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Introdução\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://github.com/pedro-candido/store/blob/master/src/assets/Logo-white.png?raw=true\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\u003cimg height=\"400\" src=\"https://github.com/pedro-candido/store/blob/master/src/assets/print1.png?raw=true\" /\u003e\n\u003cimg height=\"400\" src=\"https://github.com/pedro-candido/store/blob/master/src/assets/print2.png?raw=true\" /\u003e\n\u003cimg height=\"400\" src=\"https://github.com/pedro-candido/store/blob/master/src/assets/print3.png?raw=true\" /\u003e\n\u003cimg height=\"400\" src=\"https://github.com/pedro-candido/store/blob/master/src/assets/print4.png?raw=true\" /\u003e\n\u003c/p\u003e\nOlá pessoal, espero que estejam muito bem!\n\nEste projeto tem a intenção de validar meus conhecimentos perante o React Native.\n\n## Tecnologias utilizadas\n\nSegue lista das bibliotecas principais utilizadas no app para a realização:\n\n- Expo\n- TypeScript\n- Axios\n- Styled-components\n- Google fonts\n- FlashList\n- Zustand\n- jest\n\n## Escolha das Libs\n\n- Expo: foi escolhida para agilizar o desenvolvimento sendo uma recomendação do próprio react-native utilizar um framework como expo.\n- Axios: Foi escolhido o axios tendo em mente que é uma lib que tenho mais conhecimento, além de ser de fácil utilização.\n- Styled-components: Foi escolhido o styled-components pois é a tecnologia de estilos que eu já utilizo no dia a dia, agilizando a parte de desenvolvimento.\n- FlashList: Há alguns estudos referente a FlashList vs FlatList mostrando os ganhos de performance em momentos de renderização de listas. Exemplo: https://shopify.engineering/instant-performance-upgrade-flatlist-flashlist\n- Zustand: Já possuo conhecimento com context, redux, redux saga, toolkit, e gostaria de finalizar um projeto com algo diferente, e olhando ao projeto do https://github.com/expo/react-conf-app, utilizei de inspiração para utilizar o zustand também!\n\n## Arquitetura de Pastas\n\nAtuei em alguns projetos durante minha carreira, com organizações diferentes, escolhi uma que se aproximasse ao máximo de uma estrutura que me agradasse, tudo separado ficando de fácil uso pra qualquer pessoa que entrasse e fosse utilizar o projeto.\n\n```\n\n├── src\n│   ├── assets          # Assets folder for app icon and splashscreen\n│   ├── types           # Types declarations to images .png.d.ts or .svg.d.ts\n│   ├── assets          # Assets folder for icons, illustrations\n│   ├── constants       # All constants reutilized\n│   ├── components      # Components reutilized\n│   ├── routes          # Navigation configuration\n│   ├── screens         # Screens (can have or not a folder with specific components)\n│   ├── api             # API creation\n│   ├── hooks           # Hooks used on all project\n│   ├── store           # Zustand stores\n│   ├── stories         # StorybookContent\n│   ├── theme           # Files to configure Tamagui tokens and fonts\n│   ├── utils           # Utils methods\n```\n\nSegue imagem com conteúdo representado.\n\n\u003cimg src=\"https://raw.githubusercontent.com/pedro-candido/store/c963ca3c75d0ddfb21e3daac55d7434e4f4f8a25/src/assets/organization.svg\"/\u003e\n\n\n## Setup\n\n1. Instale o NVM ou Node.js LTS release - v20.12.0(Versão utilizada)\n2. Git\n3. Commitzen\n4. Yarn\n5. Expo CLI\n6. Android Studio - Versão recomendada Jellyfish 2023.3.1\n7. Graddle version - Versão 8.6\n8. XCode - versão recomendada 15.4\n9. Testes realizados no iOS 17.4 - iPhone 15 Pro e no Pixel 8(API 34)\n\n## Rodar o projeto\n\n1. Clone o projeto\n   ```bash\n    git clone https://github.com/pedro-candido/store.git\n   ```\n2. Instale as dependências rodando:\n\n   ```bash\n    yarn\n\n    // Apenas rode se for utilizar o iOS\n    yarn clean:ios\n   ```\n\n3. Instale os builds nos respectivos emuladores.\n   ```\n   yarn android\n   yarn ios\n   ```\n\n## Para utilizar o storybook\n\n1. Vá para o arquivo `./App.tsx` e troque o return\n\n```javascript\n   // from\n  return \u003cRoutes /\u003e;\n  // to\n  return \u003cAppEntryPoint /\u003e\n```\n\n2. Rode o yarn start novamente ou atualize o metro.\n\n## Melhorias para o projeto caso fosse um projeto para Produção\n\n- Adicionar rastreamento de erros e observabilidade com ferramentas como Dynatrace, Sentry, Crashlytics ou Datadog.\n- Adicionar SplashScreen animada.\n- Telas de Login, Cadastro, perfil e finalização de compra.\n- Ferramentas para Testes A/B, feature flags e tagueamento como o Firebase/Analytics.\n- Adição de recursos OTA(Over the air).\n- Documentação de Code Style.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpedro-candido%2Fstore","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpedro-candido%2Fstore","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpedro-candido%2Fstore/lists"}