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.
- 2 minutes installation.
- Free and open source.
- Flexible and clear API.
With reSolve you can more efficiently create applications of any complexity level. A single approach is used for simple 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
The 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 application. You can start working on your new reSolve application in just 2 minutes!
Use one of these tools to start a new reSolve aplication:
-
npx create-resolve-app my-awesome-app cd my-awesome-app npm run dev
-
yarn create resolve-app my-awesome-app cd my-awesome-app yarn run dev
-
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). Start learning reSolve with the First Application From Scratch tutorial. Use the documentation, tutorials and examples to learn reSolve more deeply.
You can get a sample app using the create-resolve-app
tool with the -e
flag followed by an example name. Use the create-resolve-app -h
command to list the available examples.
The following tools are used to get a sample reSolve application:
-
npx create-resolve-app todo-example -e todo
-
yarn create resolve-app todo-example -e todo
-
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).
The create-resolve-app
can is capable of creating the following apps:
-
This example demonstrates how to add an authorization to an application using the resolve-auth package.
-
This example demonstrates a Hacker News application similar to YCombinator Hacker News. The app's creation process is detailed in the Hacker News Tutorial.
-
An empty app that can be used as a template for any reSolve application (created by default).
-
This example demonstrates how to work with the view-models. The app's creation process is detailed in the ToDo List App Tutorial.
-
This example demonstrates how to work with view-models in the all events subscribtion case. Learn more about this case in the View Model article.
-
This example demonstrates how to update the application state on external events unrelated to user actions.
-
This example demonstrates how to add the 'styled-components' library to an application.
You can develop and run reSolve applications on Linux, Mac and Windows operating systems. It is also possible to integrate reSolve with the React Native, but this approach is currently experimental.
The minimum supported NodeJS version is 6.0.0.
reSolve supports npx, yarn, and npm package managers.
-
The System Metaphor 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 directory:
-
The Architecture 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
The Packages article provides a description of all reSolve packages. The API description and detailed information is available in the package
README
files: -
The API References article describes the environment variables, configs, and other options.
-
The Contrubutors Guide describes the development workflow for any contributors: basic rules and commits checking principles.
Feel free to contact us if you have any questions!
✉️ We are glad to see your e-mails sent to [email protected].
💬 Follow us on Twitter. We post interesting arcticles, announcements, post polls about reSolve development and talk about the modern web technologies!
💻 We also have a Facebook page, join us!
📃 You can find our articles on Medium
❓ You are welcome to post any questions or suggestions in GitHub Issues
🔧 Feel yourself capable of improving reSolve? Become one of our contributors! Look through our Contrubutors Guide and make a great Pull Request.
⭐️ Remember to star our GitHub repository if you like reSolve!
reSolve is developed by