Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/formysister/angular-contacts-app

Contacts App example built by Angular
https://github.com/formysister/angular-contacts-app

angular docker nestjs nginx nodejs sass typescript

Last synced: about 2 months ago
JSON representation

Contacts App example built by Angular

Awesome Lists containing this project

README

        



# Full Stack Angular PWA app with NgRx Store, Effects (HTTP+WebSockets), Entity & NestJS

[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)

**Backend is available here: https://github.com/formysister/angular-contacts-app

**DEMO: https://angular-contacts-ngrx.surge.sh**

This application uses [@ngrx/store](https://github.com/ngrx/platform/blob/master/docs/store/README.md) to manage application state, and [@ngrx/effects](https://github.com/ngrx/platform/blob/master/docs/effects/README.md) to manange side effects (http+sockets), It also uses NgRx fractal state management to leverage lazy loading of reducers and effects.

[@ngrx/entity](https://github.com/ngrx/platform/tree/master/docs/entity) is released and available on NPM, @ngrx/entity helps to reduce boilerplate and [manipulate data](https://i.imgur.com/2IGdFRB.jpg) in a fast and easy fashion, you can find @ngrx/entity implementation in Contacts Reducer.

# NGRX infrastructure

## Ngrx + Effects with an HTTP Service

![](https://i.imgur.com/qtjdPbe.png)

## Ngrx + Effects with Socket.IO

![](https://i.imgur.com/jIQ4Rd3.png)

## Lighthouse Audit:

![](https://i.imgur.com/UqW3s9M.png)

## Get started

You can run the app with docker compose:

```
$ docker-compose up --build
```

The app will be available at: http://localhost:4000

![](http://i.imgur.com/TKWwYgQ.png)

![](http://i.imgur.com/GBBXbuu.png)

![](http://i.imgur.com/J4inaXx.png)

## Development server

Start the backend server: https://github.com/formysister/angular-contacts-app

Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.

## Code scaffolding

Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|module`.

## Build

Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `-prod` flag for a production build.

## Further help

To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).