Skip to content

Commit

Permalink
Docs changes
Browse files Browse the repository at this point in the history
  • Loading branch information
TatyanaRyzh committed Apr 26, 2018
1 parent d5203fe commit cbca047
Show file tree
Hide file tree
Showing 20 changed files with 10 additions and 319 deletions.
164 changes: 9 additions & 155 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,79 +3,19 @@

[![Build Status](https://travis-ci.org/reimagined/resolve.svg?branch=master)](https://travis-ci.org/reimagined/resolve) [![npm version](https://badge.fury.io/js/create-resolve-app.svg)](https://badge.fury.io/js/create-resolve-app) [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/reimagined/resolve/master/LICENSE)

A JavaScript framework for **CQRS**, **Domain-Driven Design** and **Event Sourcing** with robust support for **React** and **Redux**. **reSolve** provides a new way to describe an app's core logic and fully separate it from auxiliary code.
A JavaScript framework for **CQRS**, **Domain-Driven Design** and **Event Sourcing** with support for **React** and **Redux**. **reSolve** provides a new way to describe an app's core logic and fully separate it from auxiliary code.

<p align="center"><img src="https://user-images.githubusercontent.com/19663260/38686546-35c6a5fe-3e7d-11e8-9942-956333801c32.png"></p>
## <a name="installation">Installation</a>

* 2 minutes [installation](#installation).
* [Free and open source](https://github.com/reimagined/resolve/blob/master/LICENSE.md).
* Flexible and clear [API](#documentation).
The [create-resolve-app](packages/create-resolve-app) package is used to create a **reSolve**-based application. You can use it to get one of the examples, or create an empty application. By default, `create-resolve-app` generates an empty [Hello World](https://github.com/reimagined/resolve/tree/master/examples/hello-world) application.

<!-- TODO: text="Try it now!" -->
[<p align="center"><img src="https://user-images.githubusercontent.com/19663260/38686570-44c83d6a-3e7d-11e8-8cc6-00b6e2610036.png"></p>](#getting-started)
```sh
npx create-resolve-app my-awesome-app
cd my-awesome-app
npm run dev
```

## **📑 Table of Contents**
* **[🏗️ Why reSolve](#why-resolve)**
* **[🚀 Getting Started](#getting-started)**
* [Installation](#installation)
* [Tutorials](#tutorials)
* [Examples](#examples)
* **[📚 Documentation](#documentation)**
* [Compatibility](#compatibility)
* [Basic Concepts](#basic-concepts)
* **[📢 Get in Touch](#get-in-touch)**

## <a name="why-resolve">**🏗️ Why reSolve**</a>

With **reSolve** you can more efficiently create applications of any complexity level. A single approach is used for simple [ToDo List](#todo-list) and for a complex reactive application like Stack Overflow, with distributed architecture that is ready for high load. The technologies stack (CQRS, Event Sourcing, Domain-Driven Design, React + Redux) makes any **reSolve** application scalable and maintainable, so you can focus on business logic instead of auxiliary code.

* 💎 Reactivity
* 💎 Distribution
* 💎 Highload
* 💎 Fault Tolerance
* 💎 Unidirectional Data Flow

## <a name="getting-started">**🚀 Getting Started**</a>

### <a name="installation">Installation</a>

The [create-resolve-app](packages/create-resolve-app) package is used to create a **reSolve**-based application. You can use it to get one of the examples, or create an empty application. By default, `create-resolve-app` generates an empty [Hello World](https://github.com/reimagined/resolve/tree/master/examples/hello-world) application. You can start working on your new **reSolve** application in just<!--sic--> **2 minutes**!

Use one of these tools to start a new **reSolve** aplication:

* [npx](https://www.npmjs.com/package/npx)

```sh
npx create-resolve-app my-awesome-app
cd my-awesome-app
npm run dev
```

* [yarn](https://yarnpkg.com/lang/en/)

```sh
yarn create resolve-app my-awesome-app
cd my-awesome-app
yarn run dev
```

* [npm](https://www.npmjs.com/)

```sh
npm i -g create-resolve-app
create-resolve-app my-awesome-app
cd my-awesome-app
npm run dev
```

> Note: Installing a package globally (the first command) may require administrative privileges. That means you have to use the `sudo` prefix on Linux and MacOS, or start a terminal with the administrative privileges on Windows.

The created application is accessible using the http://localhost:3000/ and `http://<your_ip>:3000/` URLs (you can [change the URL settings](https://github.com/reimagined/resolve/blob/master/docs/API%20References.md)). Start learning **reSolve** with the [**First Application From Scratch**](https://github.com/reimagined/resolve/blob/master/docs/Tutorials/First%20Application%20From%20Scratch.md) tutorial. Use the [**documentation**](#documentation), [**tutorials**](#tutorials) and [**examples**](#examples) to learn **reSolve** more deeply.

### <a name="tutorials">Tutorials</a>

* [First Application From Scratch](https://github.com/reimagined/resolve/blob/master/docs/Tutorials/First%20Application%20From%20Scratch.md)
* [ToDo List App Tutorial](https://github.com/reimagined/resolve/blob/master/docs/Tutorials/ToDo%20List%20App%20Tutorial.md)
The created application is accessible using the http://localhost:3000/ and `http://<your_ip>:3000/` URLs (you can [change the URL settings](https://github.com/reimagined/resolve/blob/master/docs/API%20References.md)).

### <a name="examples">Examples</a>

Expand All @@ -89,51 +29,16 @@ The following tools are used to get a sample **reSolve** application:
npx create-resolve-app todo-example -e todo
```

* [yarn](https://yarnpkg.com/lang/en/)

```sh
yarn create resolve-app todo-example -e todo
```

* [npm](https://www.npmjs.com/)

```sh
npm i -g create-resolve-app
create-resolve-app todo-example -e todo
```

The created application is accessible using the http://localhost:3000/ and `http://<your_ip>:3000` URLs (you can [change your URL settings](https://github.com/reimagined/resolve/blob/master/docs/API%20References.md)).

The `create-resolve-app` can is capable of creating the following apps:

* [**hacker-news**](https://github.com/reimagined/resolve/tree/master/examples/hacker-news)

This example demonstrates a Hacker News application similar to [YCombinator Hacker News](https://news.ycombinator.com/). The app's creation process is detailed in the [Hacker News Tutorial](https://github.com/reimagined/resolve/blob/master/docs/Tutorials/Hacker%20News%20Tutorial.md).
* [**hello-world**](https://github.com/reimagined/resolve/tree/master/examples/hello-world)
An empty app that can be used as a template for any **reSolve** application (created by default).
* [**todo**](https://github.com/reimagined/resolve/tree/master/examples/todo)
This example demonstrates how to work with the [view-models](https://github.com/reimagined/resolve/blob/master/docs/View%20Model.md). The app's creation process is detailed in the [ToDo List App Tutorial](https://github.com/reimagined/resolve/blob/master/docs/Tutorials/ToDo%20List%20App%20Tutorial.md).

* [**todo-two-levels**](https://github.com/reimagined/resolve/tree/master/examples/todo-two-levels)

This example demonstrates how to work with view-models in the **all events subscribtion** case. Learn more about this case in the [View Model](https://github.com/reimagined/resolve/blob/master/docs/View%20Model.md) article.

* [**top-list**](https://github.com/reimagined/resolve/tree/master/examples/top-list)

This example demonstrates how to update the application state on external events unrelated to user actions.

* [**with-authentication**](https://github.com/reimagined/resolve/tree/master/examples/with-authentication)

This example demonstrates how to add an authentication to an application using the [resolve-auth package](https://github.com/reimagined/resolve/blob/master/packages/resolve-auth/README.md).

* [**with-styled-components**](https://github.com/reimagined/resolve/tree/master/examples/with-styled-components)

This example demonstrates how to add the 'styled-components' library to an application.

## <a name="documentation">**📚 Documentation**</a>

### <a name="compatibility">Compatibility</a>
Expand All @@ -144,58 +49,7 @@ The minimum supported **NodeJS** version is **6.0.0**.

**reSolve** supports [**npx**](https://www.npmjs.com/package/npx), [**yarn**](https://yarnpkg.com/lang/en/), and [**npm**](https://www.npmjs.com/) package managers.

### <a name="basic-concepts">Basic Concepts</a>

* 📄 [**System Metaphor**](https://github.com/reimagined/resolve/blob/master/docs/System%20Metaphor.md)

The [**System Metaphor**](https://github.com/reimagined/resolve/blob/master/docs/System%20Metaphor.md) is a vocabulary that describes all terms used in **reSolve** application development. You can also find the detailed description with code examples for every core concept in the [**docs**](https://github.com/reimagined/resolve/tree/master/docs) directory:

* [_Aggregate_](https://github.com/reimagined/resolve/blob/master/docs/Aggregate.md)
* [_Command_](https://github.com/reimagined/resolve/blob/master/docs/Command.md)
* [_Event Store_](https://github.com/reimagined/resolve/blob/master/docs/Event%20Store.md)
* [_Projection_](https://github.com/reimagined/resolve/blob/master/docs/Projection.md)
* [_Query_](https://github.com/reimagined/resolve/blob/master/docs/Query.md)
* [_Read Model_](https://github.com/reimagined/resolve/blob/master/docs/Read%20Model.md)
* [_View Model_](https://github.com/reimagined/resolve/blob/master/docs/View%20Model.md)

* 📄 [**Architecture**](https://github.com/reimagined/resolve/blob/master/docs/Architecture.md)

The [**Architecture**](https://github.com/reimagined/resolve/blob/master/docs/Architecture.md) topic describes common principles of building a **reSolve** application. You can also find links to Domain-Driven Design, CQRS and Event Sourcing best practices there.

* 📄 [**Packages**](https://github.com/reimagined/resolve/blob/master/docs/Packages.md)

The [**Packages**](https://github.com/reimagined/resolve/blob/master/docs/Packages.md) article provides a description of all **reSolve** packages. The API description and detailed information is available in the package `README` files:

* [_create-resolve-app_](https://github.com/reimagined/resolve/tree/master/packages/create-resolve-app)
* [_resolve-auth_](https://github.com/reimagined/resolve/tree/master/packages/resolve-auth)
* [_resolve-command_](https://github.com/reimagined/resolve/tree/master/packages/resolve-command)
* [_resolve-es_](https://github.com/reimagined/resolve/tree/master/packages/resolve-es)
* [_resolve-query_](https://github.com/reimagined/resolve/tree/master/packages/resolve-query)
* [_resolve-redux_](https://github.com/reimagined/resolve/tree/master/packages/resolve-redux)
* [_resolve-scripts_](https://github.com/reimagined/resolve/tree/master/packages/resolve-scripts)

* [Bus Adapters](https://github.com/reimagined/resolve/tree/master/packages/bus-adapters)
* [_resolve-bus-memory_](https://github.com/reimagined/resolve/tree/master/packages/bus-adapters/resolve-bus-memory)
* [_resolve-bus-rabbit-mq_](https://github.com/reimagined/resolve/tree/master/packages/bus-adapters/resolve-bus-rabbitmq)
* [_resolve-bus-zmq_](https://github.com/reimagined/resolve/tree/master/packages/bus-adapters/resolve-bus-zmq)

* [Read Model Adapters](https://github.com/reimagined/resolve/tree/master/packages/readmodel-adapters)
* [_resolve-readmodel-base_](https://github.com/reimagined/resolve/tree/master/packages/readmodel-adapters/resolve-readmodel-base)
* [_resolve-readmodel-memory_](https://github.com/reimagined/resolve/tree/master/packages/readmodel-adapters/resolve-readmodel-memory)
* [_resolve-readmodel-mysql_](https://github.com/reimagined/resolve/tree/master/packages/readmodel-adapters/resolve-readmodel-mysql)

* [Storage Adapters](https://github.com/reimagined/resolve/tree/master/packages/storage-adapters)
* [_resolve-storage-base_](https://github.com/reimagined/resolve/tree/master/packages/storage-adapters/resolve-storage-base)
* [_resolve-storage-lite_](https://github.com/reimagined/resolve/tree/master/packages/storage-adapters/resolve-storage-lite)
* [_resolve-storage-mongo_](https://github.com/reimagined/resolve/tree/master/packages/storage-adapters/resolve-storage-mongo)

* 📄 [**API References**](https://github.com/reimagined/resolve/blob/master/docs/API%20References.md)

The [**API References**](https://github.com/reimagined/resolve/blob/master/docs/API%20References.md) article describes the environment variables, configs, and other options.

* 📄 [**Contrubutors Guide**](https://github.com/reimagined/resolve/blob/master/docs/Contributors%20Guide.md)

The [**Contrubutors Guide**](https://github.com/reimagined/resolve/blob/master/docs/Contributors%20Guide.md) describes the development workflow for any contributors: basic rules and commits checking principles.

## <a name="get-in-touch">**📢 Get in Touch**</a>

Expand Down
9 changes: 0 additions & 9 deletions docs/API References.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,5 @@
# API References

-------------------------------------------------------------------------
Sorry, this article isn't finished yet :(

We'll glad to see all your questions:
* [**GitHub Issues**](https://github.com/reimagined/resolve/issues)
* [**Twitter**](https://twitter.com/resolvejs)
* e-mail to **[email protected]**
-------------------------------------------------------------------------

## 📑 **Table Of Contents**
* [Available Scripts](#-available-scripts)
* [Project Structure Overview](#️-project-structure-overview)
Expand Down
9 changes: 0 additions & 9 deletions docs/Aggregate.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,5 @@
# Aggregate

-------------------------------------------------------------------------
Sorry, this article isn't finished yet :(

We'll glad to see all your questions:
* [**GitHub Issues**](https://github.com/reimagined/resolve/issues)
* [**Twitter**](https://twitter.com/resolvejs)
* e-mail to **[email protected]**
-------------------------------------------------------------------------

When you need to change the system's state, you send a Command. A command is addressed to a Domain Aggregate. An Aggregate is a cluster of logically related objects, containing enough information to perform a command as one transaction. It handles a command, checks whether it can be executed and generates an event to change the system's state. A new event is sent to Event Store.
Refer to [DDD_Aggregates](https://martinfowler.com/bliki/DDD_Aggregate.html) or [DDD, Event Sourcing, and CQRS Tutorial: design](http://cqrs.nu/tutorial/cs/01-design) for more information on aggregates.

Expand Down
9 changes: 0 additions & 9 deletions docs/Architecture.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,5 @@
# Architecture

-------------------------------------------------------------------------
Sorry, this article isn't finished yet :(

We'll glad to see all your questions:
* [**GitHub Issues**](https://github.com/reimagined/resolve/issues)
* [**Twitter**](https://twitter.com/resolvejs)
* e-mail to **[email protected]**
-------------------------------------------------------------------------

![CQRS schema](https://user-images.githubusercontent.com/15689049/30436232-4932f952-9974-11e7-8e3d-575cc5de407e.png)
_*This scheme is based on the "CQRS with Event Sourcing" image from the [Event Sourcing for Functional Programmers](http://danielwestheide.com/talks/flatmap2013/slides/#/) presentation.*_

Expand Down
9 changes: 0 additions & 9 deletions docs/Command.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,4 @@
# Command

-------------------------------------------------------------------------
Sorry, this article isn't finished yet :(

We'll glad to see all your questions:
* [**GitHub Issues**](https://github.com/reimagined/resolve/issues)
* [**Twitter**](https://twitter.com/resolvejs)
* e-mail to **[email protected]**
-------------------------------------------------------------------------

When you need to change the system's state, you send a Command. A command is addressed to a Domain Aggregate. An Aggregate is a cluster of logically related objects, containing enough information to perform a command as one transaction. It handles a command, checks whether it can be executed and generates an event to change the system's state. A new event is sent to Event Store.
Refer to [DDD_Aggregates](https://martinfowler.com/bliki/DDD_Aggregate.html) or [DDD, Event Sourcing, and CQRS Tutorial: design](http://cqrs.nu/tutorial/cs/01-design) for more information on aggregates.
9 changes: 0 additions & 9 deletions docs/Contributors Guide.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,5 @@
# Contributors Guide

-------------------------------------------------------------------------
Sorry, this article isn't finished yet :(

We'll glad to see all your questions:
* [**GitHub Issues**](https://github.com/reimagined/resolve/issues)
* [**Twitter**](https://twitter.com/resolvejs)
* e-mail to **[email protected]**
-------------------------------------------------------------------------

:+1::tada: First off, thanks for taking the time to contribute! :tada::+1:

The following is a set of guidelines for contributing to Resolve and its packages, which are hosted in the [Reimagined](https://github.com/reimagined) on GitHub. These are mostly guidelines, not rules. Use your best judgment, and feel free to propose changes to this document in a pull request.
Expand Down
9 changes: 0 additions & 9 deletions docs/Event Store.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,3 @@
# Event Store

-------------------------------------------------------------------------
Sorry, this article isn't finished yet :(

We'll glad to see all your questions:
* [**GitHub Issues**](https://github.com/reimagined/resolve/issues)
* [**Twitter**](https://twitter.com/resolvejs)
* e-mail to **[email protected]**
-------------------------------------------------------------------------

The Event Store stores all events aggregates produce and delivers them to subscribers. It combines a persistent storage and message bus.
9 changes: 0 additions & 9 deletions docs/Packages.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,5 @@
# Packages

-------------------------------------------------------------------------
Sorry, this article isn't finished yet :(

We'll glad to see all your questions:
* [**GitHub Issues**](https://github.com/reimagined/resolve/issues)
* [**Twitter**](https://twitter.com/resolvejs)
* e-mail to **[email protected]**
-------------------------------------------------------------------------

reSolve includes the following libraries which can be used independently or simultaneously.

App generator libraries:
Expand Down
9 changes: 0 additions & 9 deletions docs/Projection.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,3 @@
# Projection

-------------------------------------------------------------------------
Sorry, this article isn't finished yet :(

We'll glad to see all your questions:
* [**GitHub Issues**](https://github.com/reimagined/resolve/issues)
* [**Twitter**](https://twitter.com/resolvejs)
* e-mail to **[email protected]**
-------------------------------------------------------------------------

See [Event Sourcing - Projections](https://abdullin.com/post/event-sourcing-projections/) or [DDD, Event Sourcing, and CQRS Tutorial: read models](http://cqrs.nu/tutorial/cs/03-read-models) for more information.
9 changes: 0 additions & 9 deletions docs/Query.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,3 @@
# Query

-------------------------------------------------------------------------
Sorry, this article isn't finished yet :(

We'll glad to see all your questions:
* [**GitHub Issues**](https://github.com/reimagined/resolve/issues)
* [**Twitter**](https://twitter.com/resolvejs)
* e-mail to **[email protected]**
-------------------------------------------------------------------------

Queries are used to get data from a read model and view model.
9 changes: 0 additions & 9 deletions docs/Read Model.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,5 @@
# Read Model

-------------------------------------------------------------------------
Sorry, this article isn't finished yet :(

We'll glad to see all your questions:
* [**GitHub Issues**](https://github.com/reimagined/resolve/issues)
* [**Twitter**](https://twitter.com/resolvejs)
* e-mail to **[email protected]**
-------------------------------------------------------------------------

The Read Model represents a system state or its part. It is built using Projection functions. All events from the beginning of time are applied to a read model to build its current state.

![image](https://user-images.githubusercontent.com/14352827/37778246-7de6ed1e-2dfa-11e8-8857-b1519e598f14.png)
Expand Down
Loading

0 comments on commit cbca047

Please sign in to comment.