You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: README.md
+54-25
Original file line number
Diff line number
Diff line change
@@ -6,8 +6,8 @@
6
6
</div>
7
7
8
8
<divalign="center">
9
-
<h1>Serverless real-time data sharing infrastructure for frontend developers</h1>
10
-
Build multiplayer games, chat apps or anything in between without worrying about the serverside, backend logic or even the network! Works with React out of the box!
9
+
<h1>Serverless Multiplayer Infrastructure for JavaScript Game Developers</h1>
10
+
Build multiplayer gameswithout worrying about server-side logic, backend infrastructure, or networking. Movex takes care of it all—works with React out of the box!
11
11
</div>
12
12
13
13
<br/>
@@ -29,32 +29,37 @@
29
29
30
30
## 🧐 Why Movex
31
31
32
-
__Movex let's you cut the development effort in half and ship faster by abstracting the backend logic and server-side away! 🎉__
33
-
34
-
With it's unique approach and set of features Movex gives you the freedom to focus only on the front-end while still maintaining all of the control over the App Logic, UI/UX and Authority over Data.
35
-
36
-
In addition it comes pre-packed with:
37
-
- the ability to keep parts of the shared state private to specific users. [See Secret State](https://www.movex.dev/docs/features/secret_state)
38
-
- ensures the minimun amount of data is sent over the wire with each update. [See Deterministic Action Propagation](https://www.movex.dev/docs/features/functional)
39
-
- keeps bad actors away by keeping the Data Reconciliation Logic out of the client reach. [See Authoritative Server](https://www.movex.dev/docs/features/server_authoritative)
40
-
41
-
42
-
## 🚀 Examples
32
+
__Movex cuts your development effort in half and helps you ship faster by abstracting away backend logic and server-side complexity! 🎉__
33
+
34
+
With its unique approach and robust set of features, Movex gives you the freedom to focus solely on the front-end while still maintaining full control over the Game Logic, UI/UX, and Data Authority.
35
+
36
+
## ⭐️ Features:
37
+
-__Serverless:__
38
+
Movex manages the network logic, state-sharing protocols, server deployment and maintenance, along with various other essential functionalities. [Learn more](https://www.movex.dev/docs/features/serverless).
39
+
-__Authoritative Server:__
40
+
By keeping the data reconciliation logic on the server side, Movex keeps bad actors away, ensuring the integrity of your application. [Learn more](https://www.movex.dev/docs/features/server_authoritative).
41
+
-__Real-time synchronization:__
42
+
By utilizing the Observable Pattern to monitor state changes in registered resources Movex promptly notifes the UI layer. [See more](https://www.movex.dev/docs/features/realtime)
43
+
-__Private State:__
44
+
Movex allows parts of the shared state to remain private to specific users, ensuring that sensitive information is kept secure. [See more](https://www.movex.dev/docs/features/private_state)
45
+
-__Efficient Data Flow:__
46
+
Movex ensures that only the minimum required data is transmitted with each update, optimizing performance. (See: [Deterministic Action Propagation](https://www.movex.dev/docs/features/functional#determinstic-action-propagation))
At the client level, Movex adheres to the [Flux Pattern](https://medium.com/weekly-webtips/flux-pattern-architecture-in-react-35d0b55313f6) to react to UI changes. Additionally, it employs the ["Deterministic Action Propagation Method"](https://www.movex.dev/docs/features/functional#determinstic-action-propagation) to synchronize any state changes with the Global (Master) State which lives on the server. Consequently, this process instantly updates all other peers on the network, ensuring real-time data synchronization. [Learn More](https://www.movex.dev/docs/how).
62
+
Movex follows the [Flux Pattern](https://medium.com/weekly-webtips/flux-pattern-architecture-in-react-35d0b55313f6) locally to respond to UI changes. It then employs the [Deterministic Propagation Method](https://www.movex.dev/docs/features/functional#determinstic-action-propagation) to synchronize state changes with the Global State(aka Master State) and all peers in the network. [Learn More](https://www.movex.dev/docs/how).
58
63
59
64
<divalign="center">
60
65
<picturewidth="600">
@@ -65,7 +70,31 @@ At the client level, Movex adheres to the [Flux Pattern](https://medium.com/week
65
70
66
71
## 👩💻 Getting Started
67
72
68
-
Visit the [Docs](https://www.movex.dev/docs/overview/get_started) to get started with Movex.
73
+
#### 1. Install It
74
+
75
+
```bash
76
+
yarn add movex; yarn add --dev movex-service
77
+
```
78
+
79
+
#### 2. Create the Movex Config File
80
+
81
+
```ts
82
+
exportdefault {
83
+
resources: {},
84
+
};
85
+
```
86
+
87
+
#### 3. Start Movex in Dev Mode
88
+
89
+
```bash
90
+
npx movex dev
91
+
```
92
+
93
+
#### 4. Next Steps
94
+
To continue with the next steps see [Get Started Docs](https://www.movex.dev/docs/overview/get_started).
95
+
96
+
## Documentation
97
+
Visit the [Docs](https://www.movex.dev/docs/overview/introduction) to get started with Movex.
Copy file name to clipboardexpand all lines: apps/movex-docs/modules/home/homeVars.ts
+20-9
Original file line number
Diff line number
Diff line change
@@ -12,7 +12,7 @@ export const features = [
12
12
{
13
13
name: 'Serverless',
14
14
description:
15
-
'“Movex manages the network logic, state-sharing protocols, server deployment and maintenance, along with various other essential functionalities.',
15
+
'Movex manages the network logic, state-sharing protocols, server deployment and maintenance, along with various other essential functionalities.',
16
16
icon: BoltIcon,
17
17
link: {
18
18
label: 'Learn More',
@@ -45,24 +45,35 @@ export const features = [
45
45
{
46
46
name: 'Authoritative Server',
47
47
description:
48
-
"To safeguard app logic from potential bad actors, it is processed on the server while remaining abstracted from the developer.",
48
+
'To safeguard app logic from potential bad actors, it is processed on the server while remaining abstracted from the developer.',
49
49
icon: FlagIcon,
50
50
link: {
51
51
label: 'Learn More',
52
52
url: '/docs/features/server_authoritative',
53
53
},
54
54
color: 'orange-500',
55
55
},
56
+
// {
57
+
// name: 'Typesafe Functional Programming',
58
+
// description:
59
+
// "Movex is entirely built in TypeScript. If you’re familiar with Redux or the React.useReducer() hook, you’ll feel right at home. If not, getting started with Movex is quick and easy!",
60
+
// icon: ShieldCheckIcon,
61
+
// link: {
62
+
// label: 'Learn More',
63
+
// url: '/docs/features/functional',
64
+
// },
65
+
// color: 'red-500',
66
+
// },
56
67
{
57
-
name: 'Typesafe Functional Programming',
68
+
name: 'Efficient Data Flow',
58
69
description:
59
-
"Movex is entirely built in TypeScript. If you’re familiar with Redux or the React.useReducer() hook, you’ll feel right at home. If not, getting started with Movex is quick and easy!",
70
+
'Movex ensures that only the minimum required data is transmitted with each update, optimizing performance.',
q: 'What does "No Server Code" or "No Server Hassle" really mean?',
83
-
a: "This means you, the developer, don’t need to write, build, distribute, or maintain any server code. Your focus is solely on client-side/local code, as if you were developing for a single player or user, while Movex seamlessly manages the server component for you.",
94
+
a: 'This means you, the developer, don’t need to write, build, distribute, or maintain any server code. Your focus is solely on client-side/local code, as if you were developing for a single player or user, while Movex seamlessly manages the server component for you.',
84
95
link: {
85
96
label: 'See more here',
86
97
url: '/docs/features/server_authoritative',
87
98
},
88
99
},
89
100
{
90
101
q: 'How can there be "Server Authoritative" without a server?',
91
-
a: "Spot on, detective! There is indeed a server running, but it’s fully abstracted by Movex and movex-service, so you can focus on development without any hassle.",
102
+
a: 'Spot on, detective! There is indeed a server running, but it’s fully abstracted by Movex and movex-service, so you can focus on development without any hassle.',
92
103
link: {
93
104
label: 'See more here',
94
105
url: '/docs/features/server_authoritative',
@@ -100,7 +111,7 @@ export const faqs = [
100
111
// },
101
112
{
102
113
q: 'What can I build with Movex?',
103
-
a: "Movex employs Deterministic Action Propagation to seamlessly transmit Actions (small bits of data) between clients and servers. This approach is particularly effective for games or applications with infrequent state changes, such as turn-based games (e.g., Age of Empires). However, it may not suffice for fast-paced shooter games or applications requiring extensive user input transmitted over the network. Future enhancements are in the works to address these needs as well!",
114
+
a: 'Movex employs Deterministic Action Propagation to seamlessly transmit Actions (small bits of data) between clients and servers. This approach is particularly effective for games or applications with infrequent state changes, such as turn-based games (e.g., Age of Empires). However, it may not suffice for fast-paced shooter games or applications requiring extensive user input transmitted over the network. Future enhancements are in the works to address these needs as well!',
104
115
link: {
105
116
label: 'Read more about Deterministic Propagation',
In this short tutorial we're going to build a Counter App that will sync in real-time with another client out of the box.
79
79
@@ -139,7 +139,7 @@ export default {
139
139
};
140
140
```
141
141
142
-
### 5. Let's add the Counter Component
142
+
### 6. Let's add the Counter Component
143
143
144
144
For this tutorial, we'll keep the UI very basic since it's not the main point.
145
145
@@ -176,7 +176,7 @@ On line 11 we're binding to the counter resource by rid. This means that now we
176
176
177
177
In the following lines we're rendering a very simple UI, which displays the Counter State at _line 20_ and adding two Buttons which will be responsible for triggering the "Increment" and "Decrement" actions.
@@ -249,7 +249,7 @@ import Image from 'next/image';
249
249
height={500}
250
250
/>
251
251
252
-
### 5. Let's add the Actions
252
+
### 8. Let's add the Actions
253
253
254
254
At this point we can see the state of the Counter Resource but cannot do much with it.
255
255
@@ -311,7 +311,7 @@ And you should be able to see this:
311
311
height={500}
312
312
/>
313
313
314
-
### 6. Now bring in multi-players
314
+
### 9. Now bring in multi-players
315
315
316
316
Open the URL in another browser tab or 2, or even 9 and start clicking the buttons. The changes will be synced in realtime, without any server-side coding.
317
317
@@ -327,6 +327,6 @@ Open the URL in another browser tab or 2, or even 9 and start clicking the butto
327
327
328
328
The world is your oyster now – go make multiplayer gameees! :D
329
329
330
-
### 7. Homework
330
+
### 10. Homework
331
331
332
332
If you want an extra step, implement the "incrementBy" Action and functionality.
"push-all-libs--locally": "cd dist/libs/movex && yalc push && cd -; cd dist/libs/movex-server && yalc push && cd -; cd dist/libs/movex-core-util && yalc push && cd -; cd dist/libs/movex-react && yalc push && cd -; cd dist/libs/movex-service && yalc push && cd -; cd dist/libs/movex-store && yalc push && cd -; cd dist/libs/movex-master && yalc push && cd -;",
29
29
"push-lib-locally--movex": "cd dist/libs/movex && yalc push && cd -",
30
30
"push-lib-locally--movex-react": "cd dist/libs/movex-react && yalc push && cd -",
0 commit comments