├── .editorconfig ├── .eslintrc.cjs ├── .github ├── images │ ├── ddd-layers.png │ └── project-home.png └── workflows │ ├── bohr.yml │ └── test.yaml ├── .gitignore ├── .npmrc ├── README.md ├── index.html ├── package.json ├── public ├── icon-app.png ├── icon-app@2x.png └── robots.txt ├── src ├── data │ ├── protocols │ │ ├── cache │ │ │ ├── GetCacheClientProtocol.ts │ │ │ └── SaveCacheClientProtocol.ts │ │ └── http │ │ │ └── HttpClientProtocol.ts │ └── use-cases │ │ ├── CacheLoadRepositories.ts │ │ ├── CacheSaveRepositories.ts │ │ ├── RemoteGetRepositoryDetails.ts │ │ ├── RemoteGetRepositoryIssues.ts │ │ └── RemoteSearchRepository.ts ├── domain │ ├── errors │ │ ├── InvalidRepositoryError.ts │ │ └── UnexpectedError.ts │ ├── models │ │ ├── Repository.ts │ │ ├── RepositoryDetails.ts │ │ ├── RepositoryIssue.ts │ │ └── RepositoryOwner.ts │ └── use-cases │ │ ├── GetRepositoryDetails.ts │ │ ├── GetRepositoryIssues.ts │ │ ├── LoadRepositories.ts │ │ ├── SaveRepositories.ts │ │ └── SearchRepository.ts ├── infra │ ├── cache │ │ ├── LocalStorageGetCacheClienteAdapter.test.ts │ │ ├── LocalStorageGetCacheClienteAdapter.ts │ │ ├── LocalStorageSaveCacheClienteAdapter.test.ts │ │ └── LocalStorageSaveCacheClienteAdapter.ts │ └── http │ │ ├── AxiosHttpClientAdapter.ts │ │ └── FetchHttpClientAdapter.ts ├── main.tsx ├── main │ ├── App.tsx │ ├── factories │ │ ├── cache │ │ │ ├── local-storage-get-cache-client-adapter-factory.ts │ │ │ ├── local-storage-save-cache-client-adapter-factory.ts │ │ │ └── repositories-cache-key-factory.ts │ │ ├── http │ │ │ ├── api-url-factory.ts │ │ │ ├── axios-http-client-adapter-factory.ts │ │ │ └── fetch-http-client-adapter-factory.ts │ │ ├── use-cases │ │ │ ├── cache-load-repositories-factory.ts │ │ │ ├── cache-save-repositories-factory.ts │ │ │ ├── remote-get-repository-details-factory.ts │ │ │ ├── remote-get-repository-issues-factory.ts │ │ │ └── remote-search-repository-factory.ts │ │ └── views │ │ │ ├── home-factory.tsx │ │ │ └── repository-details-factory.tsx │ └── routes │ │ └── index.tsx ├── presentation │ ├── assets │ │ ├── github-background.svg │ │ └── logo.svg │ ├── components │ │ ├── Footer │ │ │ ├── footer.test.tsx │ │ │ ├── index.tsx │ │ │ └── styles.ts │ │ └── RepositoriesList │ │ │ ├── index.tsx │ │ │ ├── repositories-list.test.tsx │ │ │ └── styles.tsx │ ├── pages │ │ ├── Home │ │ │ ├── index.tsx │ │ │ └── styles.ts │ │ └── RepositoryDetails │ │ │ ├── index.tsx │ │ │ └── styles.ts │ ├── protocols │ │ └── validation.ts │ └── styles │ │ └── global.ts ├── validation │ ├── RequiredFieldValidator.ts │ └── errors │ │ └── RequiredFieldError.ts └── vite-env.d.ts ├── tsconfig.json ├── tsconfig.node.json ├── vite.config.ts ├── vitest-setup.ts ├── vitest.config.ts └── yarn.lock /.editorconfig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/.editorconfig -------------------------------------------------------------------------------- /.eslintrc.cjs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/.eslintrc.cjs -------------------------------------------------------------------------------- /.github/images/ddd-layers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/.github/images/ddd-layers.png -------------------------------------------------------------------------------- /.github/images/project-home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/.github/images/project-home.png -------------------------------------------------------------------------------- /.github/workflows/bohr.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/.github/workflows/bohr.yml -------------------------------------------------------------------------------- /.github/workflows/test.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/.github/workflows/test.yaml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/.gitignore -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | engines=node>=18 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/README.md -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/index.html -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/package.json -------------------------------------------------------------------------------- /public/icon-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/public/icon-app.png -------------------------------------------------------------------------------- /public/icon-app@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/public/icon-app@2x.png -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/public/robots.txt -------------------------------------------------------------------------------- /src/data/protocols/cache/GetCacheClientProtocol.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/data/protocols/cache/GetCacheClientProtocol.ts -------------------------------------------------------------------------------- /src/data/protocols/cache/SaveCacheClientProtocol.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/data/protocols/cache/SaveCacheClientProtocol.ts -------------------------------------------------------------------------------- /src/data/protocols/http/HttpClientProtocol.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/data/protocols/http/HttpClientProtocol.ts -------------------------------------------------------------------------------- /src/data/use-cases/CacheLoadRepositories.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/data/use-cases/CacheLoadRepositories.ts -------------------------------------------------------------------------------- /src/data/use-cases/CacheSaveRepositories.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/data/use-cases/CacheSaveRepositories.ts -------------------------------------------------------------------------------- /src/data/use-cases/RemoteGetRepositoryDetails.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/data/use-cases/RemoteGetRepositoryDetails.ts -------------------------------------------------------------------------------- /src/data/use-cases/RemoteGetRepositoryIssues.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/data/use-cases/RemoteGetRepositoryIssues.ts -------------------------------------------------------------------------------- /src/data/use-cases/RemoteSearchRepository.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/data/use-cases/RemoteSearchRepository.ts -------------------------------------------------------------------------------- /src/domain/errors/InvalidRepositoryError.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/domain/errors/InvalidRepositoryError.ts -------------------------------------------------------------------------------- /src/domain/errors/UnexpectedError.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/domain/errors/UnexpectedError.ts -------------------------------------------------------------------------------- /src/domain/models/Repository.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/domain/models/Repository.ts -------------------------------------------------------------------------------- /src/domain/models/RepositoryDetails.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/domain/models/RepositoryDetails.ts -------------------------------------------------------------------------------- /src/domain/models/RepositoryIssue.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/domain/models/RepositoryIssue.ts -------------------------------------------------------------------------------- /src/domain/models/RepositoryOwner.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/domain/models/RepositoryOwner.ts -------------------------------------------------------------------------------- /src/domain/use-cases/GetRepositoryDetails.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/domain/use-cases/GetRepositoryDetails.ts -------------------------------------------------------------------------------- /src/domain/use-cases/GetRepositoryIssues.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/domain/use-cases/GetRepositoryIssues.ts -------------------------------------------------------------------------------- /src/domain/use-cases/LoadRepositories.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/domain/use-cases/LoadRepositories.ts -------------------------------------------------------------------------------- /src/domain/use-cases/SaveRepositories.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/domain/use-cases/SaveRepositories.ts -------------------------------------------------------------------------------- /src/domain/use-cases/SearchRepository.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/domain/use-cases/SearchRepository.ts -------------------------------------------------------------------------------- /src/infra/cache/LocalStorageGetCacheClienteAdapter.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/infra/cache/LocalStorageGetCacheClienteAdapter.test.ts -------------------------------------------------------------------------------- /src/infra/cache/LocalStorageGetCacheClienteAdapter.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/infra/cache/LocalStorageGetCacheClienteAdapter.ts -------------------------------------------------------------------------------- /src/infra/cache/LocalStorageSaveCacheClienteAdapter.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/infra/cache/LocalStorageSaveCacheClienteAdapter.test.ts -------------------------------------------------------------------------------- /src/infra/cache/LocalStorageSaveCacheClienteAdapter.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/infra/cache/LocalStorageSaveCacheClienteAdapter.ts -------------------------------------------------------------------------------- /src/infra/http/AxiosHttpClientAdapter.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/infra/http/AxiosHttpClientAdapter.ts -------------------------------------------------------------------------------- /src/infra/http/FetchHttpClientAdapter.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/infra/http/FetchHttpClientAdapter.ts -------------------------------------------------------------------------------- /src/main.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/main.tsx -------------------------------------------------------------------------------- /src/main/App.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/main/App.tsx -------------------------------------------------------------------------------- /src/main/factories/cache/local-storage-get-cache-client-adapter-factory.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/main/factories/cache/local-storage-get-cache-client-adapter-factory.ts -------------------------------------------------------------------------------- /src/main/factories/cache/local-storage-save-cache-client-adapter-factory.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/main/factories/cache/local-storage-save-cache-client-adapter-factory.ts -------------------------------------------------------------------------------- /src/main/factories/cache/repositories-cache-key-factory.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/main/factories/cache/repositories-cache-key-factory.ts -------------------------------------------------------------------------------- /src/main/factories/http/api-url-factory.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/main/factories/http/api-url-factory.ts -------------------------------------------------------------------------------- /src/main/factories/http/axios-http-client-adapter-factory.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/main/factories/http/axios-http-client-adapter-factory.ts -------------------------------------------------------------------------------- /src/main/factories/http/fetch-http-client-adapter-factory.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/main/factories/http/fetch-http-client-adapter-factory.ts -------------------------------------------------------------------------------- /src/main/factories/use-cases/cache-load-repositories-factory.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/main/factories/use-cases/cache-load-repositories-factory.ts -------------------------------------------------------------------------------- /src/main/factories/use-cases/cache-save-repositories-factory.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/main/factories/use-cases/cache-save-repositories-factory.ts -------------------------------------------------------------------------------- /src/main/factories/use-cases/remote-get-repository-details-factory.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/main/factories/use-cases/remote-get-repository-details-factory.ts -------------------------------------------------------------------------------- /src/main/factories/use-cases/remote-get-repository-issues-factory.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/main/factories/use-cases/remote-get-repository-issues-factory.ts -------------------------------------------------------------------------------- /src/main/factories/use-cases/remote-search-repository-factory.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/main/factories/use-cases/remote-search-repository-factory.ts -------------------------------------------------------------------------------- /src/main/factories/views/home-factory.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/main/factories/views/home-factory.tsx -------------------------------------------------------------------------------- /src/main/factories/views/repository-details-factory.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/main/factories/views/repository-details-factory.tsx -------------------------------------------------------------------------------- /src/main/routes/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/main/routes/index.tsx -------------------------------------------------------------------------------- /src/presentation/assets/github-background.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/presentation/assets/github-background.svg -------------------------------------------------------------------------------- /src/presentation/assets/logo.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/presentation/assets/logo.svg -------------------------------------------------------------------------------- /src/presentation/components/Footer/footer.test.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/presentation/components/Footer/footer.test.tsx -------------------------------------------------------------------------------- /src/presentation/components/Footer/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/presentation/components/Footer/index.tsx -------------------------------------------------------------------------------- /src/presentation/components/Footer/styles.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/presentation/components/Footer/styles.ts -------------------------------------------------------------------------------- /src/presentation/components/RepositoriesList/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/presentation/components/RepositoriesList/index.tsx -------------------------------------------------------------------------------- /src/presentation/components/RepositoriesList/repositories-list.test.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/presentation/components/RepositoriesList/repositories-list.test.tsx -------------------------------------------------------------------------------- /src/presentation/components/RepositoriesList/styles.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/presentation/components/RepositoriesList/styles.tsx -------------------------------------------------------------------------------- /src/presentation/pages/Home/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/presentation/pages/Home/index.tsx -------------------------------------------------------------------------------- /src/presentation/pages/Home/styles.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/presentation/pages/Home/styles.ts -------------------------------------------------------------------------------- /src/presentation/pages/RepositoryDetails/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/presentation/pages/RepositoryDetails/index.tsx -------------------------------------------------------------------------------- /src/presentation/pages/RepositoryDetails/styles.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/presentation/pages/RepositoryDetails/styles.ts -------------------------------------------------------------------------------- /src/presentation/protocols/validation.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/presentation/protocols/validation.ts -------------------------------------------------------------------------------- /src/presentation/styles/global.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/presentation/styles/global.ts -------------------------------------------------------------------------------- /src/validation/RequiredFieldValidator.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/validation/RequiredFieldValidator.ts -------------------------------------------------------------------------------- /src/validation/errors/RequiredFieldError.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/validation/errors/RequiredFieldError.ts -------------------------------------------------------------------------------- /src/vite-env.d.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/src/vite-env.d.ts -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/tsconfig.json -------------------------------------------------------------------------------- /tsconfig.node.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/tsconfig.node.json -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/vite.config.ts -------------------------------------------------------------------------------- /vitest-setup.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/vitest-setup.ts -------------------------------------------------------------------------------- /vitest.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/vitest.config.ts -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunderhus/GithubExplorer/HEAD/yarn.lock --------------------------------------------------------------------------------