Skip to content

Commit

Permalink
doc: add README
Browse files Browse the repository at this point in the history
  • Loading branch information
rainerhahnekamp committed Dec 19, 2023
1 parent c5fa930 commit 8fc0b52
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 52 deletions.
115 changes: 64 additions & 51 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,63 +1,76 @@
# NgrxToolkit
# NgRx Toolkit

<a alt="Nx logo" href="https://nx.dev" target="_blank" rel="noreferrer"><img src="https://raw.githubusercontent.com/nrwl/nx/master/images/nx-logo.png" width="45"></a>
<p align="center">
<img src="https://raw.githubusercontent.com/angular-architects/ngrx-toolkit/main/logo.png" width="320" style="text-align: center">
</p>

**This workspace has been generated by [Nx, Smart Monorepos · Fast CI.](https://nx.dev)**
NgRx Toolkit is an extension to the NgRx Signals Store. **It is still in beta** but already offers following features:

- Devtools: Integration into Redux Devtools
- Redux: Possibility to use the Redux Pattern (Reducer, Actions, Effects)

## Start the app
To install it, run

To start the development server run `nx serve ngrx-toolkit`. Open your browser and navigate to http://localhost:4200/. Happy coding!


## Generate code

If you happen to use Nx plugins, you can leverage code generators that might come with it.

Run `nx list` to get a list of available plugins and whether they have generators. Then run `nx list <plugin-name>` to see what generators are available.

Learn more about [Nx generators on the docs](https://nx.dev/plugin-features/use-code-generators).

## Running tasks

To execute tasks with Nx use the following syntax:

```
nx <target> <project> <...options>
```shell
npm i @angular-architects/ngrx-toolkit
```

You can also run multiple targets:

```
nx run-many -t <target1> <target2>
```
## Devtools: `withDevtools()`

..or add `-p` to filter specific projects
This extension is very easy to use. Just add it to a `signalStore`. Example:

```typescript
export const FlightStore = signalStore(
{ providedIn: 'root' },
withDevtools('flights'), // <-- add this
withState({ flights: [] as Flight[] }),
// ...
);
```
nx run-many -t <target1> <target2> -p <proj1> <proj2>
```

Targets can be defined in the `package.json` or `projects.json`. Learn more [in the docs](https://nx.dev/core-features/run-tasks).

## Want better Editor Integration?

Have a look at the [Nx Console extensions](https://nx.dev/nx-console). It provides autocomplete support, a UI for exploring and running tasks & generators, and more! Available for VSCode, IntelliJ and comes with a LSP for Vim users.

## Ready to deploy?

Just run `nx build demoapp` to build the application. The build artifacts will be stored in the `dist/` directory, ready to be deployed.

## Set up CI!

Nx comes with local caching already built-in (check your `nx.json`). On CI you might want to go a step further.

- [Set up remote caching](https://nx.dev/core-features/share-your-cache)
- [Set up task distribution across multiple machines](https://nx.dev/nx-cloud/features/distribute-task-execution)
- [Learn more how to setup CI](https://nx.dev/recipes/ci)

## Connect with us!
## Redux: `withRedux()`

`withRedux()` bring back the Redux pattern into the Signal Store.

It can be combined with any other extension of the Signal Store.

Example:

```typescript
export const FlightStore = signalStore(
{ providedIn: 'root' },
withState({ flights: [] as Flight[] }),
withRedux({
actions: {
public: {
load: payload<{ from: string; to: string }>(),
},
private: {
loaded: payload<{ flights: Flight[] }>(),
},
},
reducer(actions, on) {
on(actions.loaded, ({ flights }, state) => {
patchState(state, 'flights loaded', { flights });
});
},
effects(actions, create) {
const httpClient = inject(HttpClient);
return {
load$: create(actions.load).pipe(
switchMap(({ from, to }) =>
httpClient.get<Flight[]>(
'https://demo.angulararchitects.io/api/flight',
{
params: new HttpParams().set('from', from).set('to', to),
},
),
),
tap((flights) => actions.loaded({ flights })),
),
};
},
}),
);
```

- [Join the community](https://nx.dev/community)
- [Subscribe to the Nx Youtube Channel](https://www.youtube.com/@nxdevtools)
- [Follow us on Twitter](https://twitter.com/nxdevtools)
2 changes: 1 addition & 1 deletion libs/ngrx-toolkit/package.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"name": "ngrx-toolkit",
"name": "@angular-architects/ngrx-toolkit",
"version": "0.0.1",
"peerDependencies": {
"@angular/common": "^17.0.0",
Expand Down
Binary file added logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 8fc0b52

Please sign in to comment.