├── .babelrc ├── .eslintignore ├── .eslintrc.js ├── .gitignore ├── README.md ├── _readme ├── app.png ├── clean-architecture-impl.png ├── clean-architecture.png ├── flow1.png ├── flow2.png ├── insert-note.png ├── note.png └── package.png ├── package.json ├── public └── index.html ├── server ├── data.json ├── package-lock.json └── package.json ├── src ├── App.tsx ├── business │ ├── datasource │ │ ├── network │ │ │ ├── MainNetworkDataSource.ts │ │ │ └── MainNetworkDataSourceImpl.ts │ │ └── storage │ │ │ ├── AppStorageSource.ts │ │ │ └── AppStorageSourceImpl.ts │ ├── domain │ │ └── Book.ts │ └── interactors │ │ ├── DeleteBookUseCase.ts │ │ ├── GetBooksUseCase.ts │ │ ├── HandleUseCaseException.ts │ │ └── InsertBookUseCase.ts ├── di │ ├── NetworkDataSources.ts │ ├── NetworkServices.ts │ ├── UseCases.ts │ ├── index.ts │ └── interfaces │ │ ├── INetworkDataSources.ts │ │ ├── INetworkService.ts │ │ └── IUseCases.ts ├── framework │ ├── datasource │ │ ├── network │ │ │ ├── MainNetworkService.ts │ │ │ └── MainNetworkServiceImpl.ts │ │ └── storage │ │ │ ├── AppStorageService.ts │ │ │ └── AppStorageServiceImpl.ts │ └── presentation │ │ ├── components │ │ ├── AddForm.tsx │ │ ├── Container.tsx │ │ ├── Header.tsx │ │ └── book │ │ │ ├── BookContainer.tsx │ │ │ ├── BookInfo.tsx │ │ │ ├── BooksList.tsx │ │ │ └── book.css │ │ ├── store │ │ ├── hooks.ts │ │ └── store.ts │ │ └── viewmodel │ │ ├── events │ │ ├── DeleteBookEvents.ts │ │ ├── GetBooksEvents.ts │ │ ├── InsertBookEvents.ts │ │ ├── InsertLogEvents.ts │ │ ├── LogInOutEvents.ts │ │ └── ReadBookEvents.ts │ │ └── slices │ │ ├── AuthSlice.ts │ │ ├── BookSlice.ts │ │ └── ReportSlice.ts └── index.tsx ├── tsconfig.json └── webpack ├── webpack.common.js ├── webpack.config.js ├── webpack.dev.js └── webpack.prod.js /.babelrc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/.babelrc -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | /webpack/** -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/.eslintrc.js -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .idea 3 | node_modules 4 | build 5 | lib 6 | coverage -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/README.md -------------------------------------------------------------------------------- /_readme/app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/_readme/app.png -------------------------------------------------------------------------------- /_readme/clean-architecture-impl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/_readme/clean-architecture-impl.png -------------------------------------------------------------------------------- /_readme/clean-architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/_readme/clean-architecture.png -------------------------------------------------------------------------------- /_readme/flow1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/_readme/flow1.png -------------------------------------------------------------------------------- /_readme/flow2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/_readme/flow2.png -------------------------------------------------------------------------------- /_readme/insert-note.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/_readme/insert-note.png -------------------------------------------------------------------------------- /_readme/note.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/_readme/note.png -------------------------------------------------------------------------------- /_readme/package.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/_readme/package.png -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/package.json -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/public/index.html -------------------------------------------------------------------------------- /server/data.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/server/data.json -------------------------------------------------------------------------------- /server/package-lock.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/server/package-lock.json -------------------------------------------------------------------------------- /server/package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/server/package.json -------------------------------------------------------------------------------- /src/App.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/App.tsx -------------------------------------------------------------------------------- /src/business/datasource/network/MainNetworkDataSource.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/business/datasource/network/MainNetworkDataSource.ts -------------------------------------------------------------------------------- /src/business/datasource/network/MainNetworkDataSourceImpl.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/business/datasource/network/MainNetworkDataSourceImpl.ts -------------------------------------------------------------------------------- /src/business/datasource/storage/AppStorageSource.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/business/datasource/storage/AppStorageSource.ts -------------------------------------------------------------------------------- /src/business/datasource/storage/AppStorageSourceImpl.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/business/datasource/storage/AppStorageSourceImpl.ts -------------------------------------------------------------------------------- /src/business/domain/Book.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/business/domain/Book.ts -------------------------------------------------------------------------------- /src/business/interactors/DeleteBookUseCase.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/business/interactors/DeleteBookUseCase.ts -------------------------------------------------------------------------------- /src/business/interactors/GetBooksUseCase.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/business/interactors/GetBooksUseCase.ts -------------------------------------------------------------------------------- /src/business/interactors/HandleUseCaseException.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/business/interactors/HandleUseCaseException.ts -------------------------------------------------------------------------------- /src/business/interactors/InsertBookUseCase.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/business/interactors/InsertBookUseCase.ts -------------------------------------------------------------------------------- /src/di/NetworkDataSources.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/di/NetworkDataSources.ts -------------------------------------------------------------------------------- /src/di/NetworkServices.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/di/NetworkServices.ts -------------------------------------------------------------------------------- /src/di/UseCases.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/di/UseCases.ts -------------------------------------------------------------------------------- /src/di/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/di/index.ts -------------------------------------------------------------------------------- /src/di/interfaces/INetworkDataSources.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/di/interfaces/INetworkDataSources.ts -------------------------------------------------------------------------------- /src/di/interfaces/INetworkService.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/di/interfaces/INetworkService.ts -------------------------------------------------------------------------------- /src/di/interfaces/IUseCases.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/di/interfaces/IUseCases.ts -------------------------------------------------------------------------------- /src/framework/datasource/network/MainNetworkService.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/framework/datasource/network/MainNetworkService.ts -------------------------------------------------------------------------------- /src/framework/datasource/network/MainNetworkServiceImpl.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/framework/datasource/network/MainNetworkServiceImpl.ts -------------------------------------------------------------------------------- /src/framework/datasource/storage/AppStorageService.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/framework/datasource/storage/AppStorageService.ts -------------------------------------------------------------------------------- /src/framework/datasource/storage/AppStorageServiceImpl.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/framework/datasource/storage/AppStorageServiceImpl.ts -------------------------------------------------------------------------------- /src/framework/presentation/components/AddForm.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/framework/presentation/components/AddForm.tsx -------------------------------------------------------------------------------- /src/framework/presentation/components/Container.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/framework/presentation/components/Container.tsx -------------------------------------------------------------------------------- /src/framework/presentation/components/Header.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/framework/presentation/components/Header.tsx -------------------------------------------------------------------------------- /src/framework/presentation/components/book/BookContainer.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/framework/presentation/components/book/BookContainer.tsx -------------------------------------------------------------------------------- /src/framework/presentation/components/book/BookInfo.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/framework/presentation/components/book/BookInfo.tsx -------------------------------------------------------------------------------- /src/framework/presentation/components/book/BooksList.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/framework/presentation/components/book/BooksList.tsx -------------------------------------------------------------------------------- /src/framework/presentation/components/book/book.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/framework/presentation/components/book/book.css -------------------------------------------------------------------------------- /src/framework/presentation/store/hooks.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/framework/presentation/store/hooks.ts -------------------------------------------------------------------------------- /src/framework/presentation/store/store.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/framework/presentation/store/store.ts -------------------------------------------------------------------------------- /src/framework/presentation/viewmodel/events/DeleteBookEvents.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/framework/presentation/viewmodel/events/DeleteBookEvents.ts -------------------------------------------------------------------------------- /src/framework/presentation/viewmodel/events/GetBooksEvents.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/framework/presentation/viewmodel/events/GetBooksEvents.ts -------------------------------------------------------------------------------- /src/framework/presentation/viewmodel/events/InsertBookEvents.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/framework/presentation/viewmodel/events/InsertBookEvents.ts -------------------------------------------------------------------------------- /src/framework/presentation/viewmodel/events/InsertLogEvents.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/framework/presentation/viewmodel/events/InsertLogEvents.ts -------------------------------------------------------------------------------- /src/framework/presentation/viewmodel/events/LogInOutEvents.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/framework/presentation/viewmodel/events/LogInOutEvents.ts -------------------------------------------------------------------------------- /src/framework/presentation/viewmodel/events/ReadBookEvents.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/framework/presentation/viewmodel/events/ReadBookEvents.ts -------------------------------------------------------------------------------- /src/framework/presentation/viewmodel/slices/AuthSlice.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/framework/presentation/viewmodel/slices/AuthSlice.ts -------------------------------------------------------------------------------- /src/framework/presentation/viewmodel/slices/BookSlice.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/framework/presentation/viewmodel/slices/BookSlice.ts -------------------------------------------------------------------------------- /src/framework/presentation/viewmodel/slices/ReportSlice.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/framework/presentation/viewmodel/slices/ReportSlice.ts -------------------------------------------------------------------------------- /src/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/src/index.tsx -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/tsconfig.json -------------------------------------------------------------------------------- /webpack/webpack.common.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/webpack/webpack.common.js -------------------------------------------------------------------------------- /webpack/webpack.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/webpack/webpack.config.js -------------------------------------------------------------------------------- /webpack/webpack.dev.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/webpack/webpack.dev.js -------------------------------------------------------------------------------- /webpack/webpack.prod.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abouelyatim/React-App-Clean-Architecture/HEAD/webpack/webpack.prod.js --------------------------------------------------------------------------------