/play-ngx-github-app

GitHub Depot - experimenting with Angular best practises while building a production-ready app, with @ngrx and other cool tech stack.

Primary LanguageTypeScript

GitHub Depot: Angular playground app for browsing GitHub repositories

CircleCI

Visit https://ng2-github.firebaseapp.com/ to try it online. Deployed automatically from the master branch. The dev branch is also deployed and available here.

Play with it

Tech stack

Architecture

State management

RxJS and @ngrx/store is used for centralised app state management (Redux-like style). See src/app/shared/store directory for details.

Containers and components

This app uses the pattern of smart/dumb components (also called containers and components) and it is reflected in the directory structure. In the containers directories you'll find smart components, concerned with how things works, with some logic inside and external dependencies. Respectively, in the components directories you'll find dumb components, without any external dependencies, concerned more about how things looks, communicating with external world using @Input/@Output properties.

Lazy loading

Each major part of application (e.g. search, repository details) is a separate so-called feature module and it's loaded lazily. Lazy loading starts from the home page featuring SearchModule (why? you could end up first on some subpage using deep-linking, thus the SearchModule would be not needed). Plus, the app is configured to compile with AoT.

CI/CD

Each commit runs tests on CircleCI, automatically. If everything is green, the app is then deployed to Firebase Hosting and available on ng2-github.firebaseapp.com.

Author

Author: Marcin ryzy Ryzycki (marcin@m12.io)


I build this app to polish my Angular skills and play/experiment with other things/libraries around it. I aim for the best practises, following Angular styleguide, scalable architecture and being it production-ready (AoT, lazy loading, nice error handling etc). Any suggestion for improvements - give me a shout!