|
| 1 | +--- |
| 2 | +description: >- |
| 3 | + Matestack Ui Core - Boost your productivity & easily create component based |
| 4 | + web UIs in pure Ruby. Reactivity based on Vue.js included if desired. No Opal |
| 5 | + involved. |
| 6 | +--- |
| 7 | + |
1 | 8 | # Welcome
|
2 | 9 |
|
3 |
| -Welcome to the docs of the Ruby gem `matestack-ui-core`! |
| 10 | +### **What is Matestack?** |
| 11 | + |
| 12 | +Matestack enables Rails developers to craft maintainable web UIs in pure Ruby, skipping ERB and HTML. UI code becomes a native and fun part of your Rails app. Thanks to reactive core components built on top of Vue.js, reactivity can be optionally added without writing JavaScript, just using a simple Ruby DSL. |
| 13 | + |
| 14 | +If necessary, extend with pure JavaScript. **No Opal involved.** |
| 15 | + |
| 16 | +{% hint style="success" %} |
| 17 | +**Share feedback, get support and get involved!** Join our growing [community](community/discord.md), get to know the [core team](about/team.md) and learn how to [contribute ](community/contribute.md)in order to make Matestack better every day! |
| 18 | +{% endhint %} |
| 19 | + |
| 20 | +### Why Matestack? |
| 21 | + |
| 22 | +Matestack was created because modern web app development became more and more complex due to the rise of JavaScript frontend frameworks and the SPA frontend/REST API/JSON backend architecture. This sophisticated approach might be suitable for big teams and applications but way to complex for most of small to medium sized teams and application scopes. |
| 23 | + |
| 24 | +In contrast, Matestack helps Rails developers creating modern, reactive web apps while focusing on **simplicity**, **developer happiness** and **productivity**: |
| 25 | + |
| 26 | +* [x] Use Ruby’s amazing language features while creating your UI |
| 27 | +* [x] Skip using templating engine syntax and write pure Ruby instead |
| 28 | +* [x] Reduce the amount of required JavaScript in order to build reactive web UIs |
| 29 | +* [x] Create a single application, managing the full stack from database to a reactive UI in pure Ruby |
| 30 | +* [x] **Drastically reduce the complexity of building reactive web applications** |
| 31 | + |
| 32 | +### What makes Matestack different? |
| 33 | + |
| 34 | +[Hotwire](https://hotwire.dev) and [Stimulus Reflex](https://docs.stimulusreflex.com) are awesome gems. They reduce the amount of required JavaScript when implementing reactive web UIs. They allow us to use more Rails and less JavaScript. **Great!** |
| 35 | + |
| 36 | +Matestack, developed since 2018, goes even one step further: **Use more Ruby and less of everything else** \(JavaScript, ERB/HAML/SLIM, CSS\). |
| 37 | + |
| 38 | +{% hint style="info" %} |
| 39 | +**Why?** Because Ruby is just beautiful! More Ruby = More developer happiness = Higher productivity |
| 40 | +{% endhint %} |
| 41 | + |
| 42 | +Additionally, most of Matestack does not require Action Cable or Redis, but can optionally use the power of these tools. |
| 43 | + |
| 44 | +### Ecosystem |
| 45 | + |
| 46 | +Matestack currently offers two Ruby gems**:** |
| 47 | + |
| 48 | +* `matestack-ui-core` ships all you need to build reactive UIs in pure Ruby. You have to take care of styling and additional UI components yourself. |
| 49 | +* `matestack-ui-bootstrap`ships all you need to build beautiful, reactive UIs in pure Ruby and smart CRUD components based on Bootstrap v5. Don't think about styling anymore and just create admin or application UIs faster than ever before! **\(specs and docs in progress currently\)** |
| 50 | + |
| 51 | +### Live Demo |
| 52 | + |
| 53 | +Based on `matestack-ui-core` and `matestack-ui-bootstrap` this reactive dummy app was created in pure Ruby without writing any JavaScript, ERB/HAML/SLIM and CSS: \([check it out](https://ui.matestack.io) \| [source code](https://github.com/matestack/matestack-ui-bootstrap/tree/main/spec/dummy)\) |
| 54 | + |
| 55 | + |
| 56 | + |
| 57 | +### Compatibility |
| 58 | + |
| 59 | +#### Ruby/Rails |
| 60 | + |
| 61 | +`matestack-ui-core` and `matestack-ui-bootstrap` are automatically tested against: |
| 62 | + |
| 63 | +* Rails 6.1.1 + Ruby 3.0.0 |
| 64 | +* Rails 6.1.1 + Ruby 2.7.2 |
| 65 | +* Rails 6.0.3.4 + Ruby 2.6.6 |
| 66 | +* Rails 5.2.4.4 + Ruby 2.6.6 |
| 67 | + |
| 68 | +{% hint style="danger" %} |
| 69 | +Rails versions below 5.2 are not supported. |
| 70 | +{% endhint %} |
| 71 | + |
| 72 | +#### Vue.js |
| 73 | + |
| 74 | +`matestack-ui-core` currently uses Vue.js 2.6.12 and Vuex 3.6.2 for its reactivity features. Custom reactive components are currently bound to these versions as well. |
| 75 | + |
| 76 | +{% hint style="info" %} |
| 77 | +Vue 3 / Vuex 4 update is planned for Q2 2021. |
| 78 | +{% endhint %} |
| 79 | + |
| 80 | +### Getting Started |
4 | 81 |
|
5 |
| -Matestack enables you to craft maintainable web UIs in pure Ruby, skipping ERB and HTML. UI code becomes a native and fun part of your Rails app. Thanks to reactive core components, reactivity can be optionally added on top without writing JavaScript, just using a simple Ruby DSL. |
| 82 | +Before you dive into some code, you should read about the basic architecture concepts and different ways to build with Matestack: |
6 | 83 |
|
7 |
| -You end up writing 50% less code while increasing productivity, maintainability and developer happiness. Work with pure Ruby. If necessary, extend with pure JavaScript. No Opal involved. |
| 84 | +{% page-ref page="getting-started/concepts-rails-integration.md" %} |
8 | 85 |
|
9 |
| -The docs cover following main topics: |
| 86 | +After that, it might be a good idea to boost your knowledge with our quick start guide: |
10 | 87 |
|
11 |
| -[**Installation**](start/100-installation.md) |
| 88 | +{% page-ref page="getting-started/quick-start.md" %} |
12 | 89 |
|
13 |
| -Learn how to properly set up and update matestack-ui-core with your existing Rails application. |
| 90 | +### Deep Dive |
14 | 91 |
|
15 |
| -[**UI components in pure Ruby**](ui_components/) |
| 92 | +Craft your UI based on your components written in pure Ruby. Utilizing Ruby's amazing language features, you're able to create a cleaner and more maintainable UI implementation: |
16 | 93 |
|
17 |
| -Craft your UI based on your components written in pure Ruby. Utilizing Ruby's amazing language features, you're able to create a cleaner and more maintainable UI implementation. |
| 94 | +Learn more about UI components implemented in pure Ruby: |
18 | 95 |
|
19 |
| -[**Reactive components in pure Ruby**](reactive_components/) |
| 96 | +{% page-ref page="ui-components/component-overview.md" %} |
20 | 97 |
|
21 |
| -_Optional feature_ |
| 98 | +What about going even one step further and implement **reactive** UIs in pure Ruby? Matestack's reactive core components can be used with a simple Ruby DSL enabling you to create reactive UIs without touching JavaScript! |
22 | 99 |
|
23 |
| -What about going even one step further and implement **REACTIVE** UIs in pure Ruby? Matestack's reactive core components can be used with a simple Ruby DSL enabling you to create reactive UIs without touching JavaScript! |
| 100 | +Learn more about the optional reactivity system built on top of Vue.js and how you can use reactive core components in pure Ruby: |
24 | 101 |
|
25 |
| -[**Reactive apps in pure Ruby**](reactive_apps/) |
| 102 | +{% page-ref page="reactivity/reactivity-overview.md" %} |
26 | 103 |
|
27 |
| -_Optional feature_ |
| 104 | +The last step in order to leverage the full Matestack power: Create app \(~Rails layout\) and page \(Rails ~view\) classes and implement dynamic page transitions without any JavaScript implementation required optionally enriched with some CSS animations. |
28 | 105 |
|
29 |
| -The last step in order to leverage the full Matestack power: Create app \(~Rails layout\) and page \(Rails ~view\) classes and implement dynamic page transitions without any JavaScript implementation required. |
| 106 | +Learn more about SPA-like Apps implemented in pure Ruby: |
30 | 107 |
|
31 |
| -In order to get started quickly, you might want to start with the [getting-started-guide](start/150-getting_started.md) |
| 108 | +{% page-ref page="spa-like-apps/spa-overview.md" %} |
32 | 109 |
|
0 commit comments