Skip to content

Commit db616ff

Browse files
committed
Add evolu server
1 parent 4697f24 commit db616ff

File tree

12 files changed

+152
-11
lines changed

12 files changed

+152
-11
lines changed

client/package.json

+5-1
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,28 @@
33
"version": "0.0.0",
44
"private": true,
55
"scripts": {
6-
"dev": "conc -c 'auto' 'pnpm:start:*'",
6+
"start": "conc -c 'auto' 'pnpm:start:*'",
77
"build": "conc -c 'auto' -g 'pnpm:build:*'",
8+
89
"web": "open http://localhost:6206",
910
"tauri": "tauri dev",
1011
"android": "react-native run-android --no-packager",
1112
"ios": "react-native run-ios --no-packager",
1213
"macos": "react-native run-macos --no-packager --scheme EXO",
1314
"visionos": "react-native run-visionos --no-packager",
1415
"windows": "react-native run-windows --no-packager",
16+
1517
"build:web": "vite build",
1618
"build:tauri": "CI=true tauri build",
1719
"_build:android": "react-native bundle --entry-file index.js --platform android --dev true --bundle-output dist/main.android.jsbundle --assets-dest dist/res",
1820
"_build:ios": "react-native bundle --entry-file index.js --platform ios --dev true --bundle-output dist/main.ios.jsbundle --assets-dest dist",
1921
"_build:macos": "react-native bundle --entry-file index.js --platform macos --dev true --bundle-output dist/main.macos.jsbundle --assets-dest dist",
2022
"_build:visionos": "react-native bundle --entry-file index.js --platform ios --dev true --bundle-output dist/main.visionos.jsbundle --assets-dest dist",
2123
"_build:windows": "react-native bundle --entry-file index.js --platform windows --dev true --bundle-output dist/main.windows.bundle --assets-dest dist",
24+
2225
"start:vite": "vite dev --port 6206",
2326
"start:metro": "react-native rnx-start --reset-cache",
27+
2428
"generate:pods": "pod install --project-directory=ios && pod install --project-directory=macos && pod install --project-directory=visionos",
2529
"generate:icons": "react-native-svg-app-icon generate && tauri icon ../design/assets/img/logo.png",
2630
"generate:splash": "react-native generate-bootsplash ../design/assets/svg/logo.svg",

client/src/app/data/index.tsx

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
import * as _ from '@evolu/react-native';
22
import * as S from '@effect/schema/Schema';
33
import * as $ from './schema';
4+
import config from 'config';
45

56
export * from './schema';
67

78
export const createDatabase = () => _.createEvolu($.Database, {
89
indexes: $.indexes,
910
syncUrl: __DEV__
10-
? 'http://localhost:4000'
11-
: 'https://evolu.world',
11+
? 'http://localhost:6306'
12+
: config.SYNC_HOST,
1213
initialData: (evolu) => {
1314
// Initial profile for new account
1415
evolu.create('profile', {

config.yaml

+3
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,6 @@ PACKAGE_IOS: com.exo.ios
2424
PACKAGE_MACOS: com.exo.macos
2525
PACKAGE_ANDROID: com.exo.android
2626
PACKAGE_WINDOWS: com.exo.windows
27+
28+
# Backend
29+
SYNC_HOST: 'https://evolu.world'

package.json

+17-7
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,36 @@
22
"private": true,
33
"license": "MIT",
44
"scripts": {
5-
"start": "conc -c 'gray' 'pnpm:*:dev'",
5+
"start": "conc -c 'gray' 'pnpm:*:start'",
66
"build": "conc -c 'gray,auto' -g 'pnpm:*:build'",
7+
78
"config:build": "pnpm -F ./toolkit/config build",
89
"bundler:build": "pnpm -F ./toolkit/bundler build",
9-
"translate:dev": "conc -P 'pnpm:translate:extract {1}' 'pnpm:translate:compile {1}' -- --watch",
10+
11+
"translate:start": "conc -P 'pnpm:translate:extract {1}' 'pnpm:translate:compile {1}' -- --watch",
1012
"translate:build": "pnpm translate:extract && pnpm translate:compile",
1113
"translate:extract": "lingui extract --clean --config ./toolkit/config/lingui.ts",
1214
"translate:compile": "lingui compile --config ./toolkit/config/lingui.ts",
15+
1316
"library:build": "pnpm -F ./library build",
1417
"library:publish": "pnpm -F ./library publish",
18+
1519
"design:build": "pnpm -F ./design build",
1620
"design:publish": "pnpm -F ./design publish",
17-
"client:dev": "pnpm -F ./client run dev",
21+
22+
"client:start": "pnpm -F ./client run start",
1823
"client:build": "pnpm -F ./client run build",
19-
"storybook:dev": "conc 'pnpm:storybook:web' 'pnpm:storybook:native'",
24+
25+
"storybook:start": "conc 'pnpm:storybook:web' 'pnpm:storybook:native'",
2026
"storybook:build": "pnpm -F ./toolkit/storybook/web run build",
21-
"storybook:native": "pnpm -F ./toolkit/storybook/native run dev",
22-
"storybook:web": "pnpm -F ./toolkit/storybook/web run dev",
23-
"docs:dev": "pnpm -F ./toolkit/vocs dev",
27+
"storybook:native": "pnpm -F ./toolkit/storybook/native run start",
28+
"storybook:web": "pnpm -F ./toolkit/storybook/web run start",
29+
30+
"docs:start": "pnpm -F ./toolkit/vocs start",
2431
"docs:build": "pnpm -F ./toolkit/vocs build",
32+
33+
"server:start": "pnpm -F ./server run start",
34+
2535
"generate": "pnpm config:build && pnpm translate:build && pnpm bundler:build && pnpm library:build && pnpm design:build",
2636
"postinstall": "pnpm generate"
2737
},

pnpm-lock.yaml

+53
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pnpm-workspace.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ packages:
44
- 'library/**'
55
- 'locales/**'
66
- 'toolkit/**'
7+
- 'server/**'
78
- '!**/test/**'

server/.dockerignore

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
/node_modules
2+
db.sqlite

server/.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
/node_modules
2+
db.sqlite

server/evolu.js

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import {createExpressApp} from '@evolu/server';
2+
import {Effect} from 'effect';
3+
4+
Effect.runPromise(createExpressApp).then(app => {
5+
const port = process.env.PORT || 6306;
6+
app.listen(port, () => {
7+
console.log(`Server is listening at http://localhost:${port}`);
8+
});
9+
});

server/fly.toml

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
app = "exo-server"
2+
kill_signal = "SIGINT"
3+
kill_timeout = 5
4+
5+
[build]
6+
builder = "heroku/buildpacks:20"
7+
8+
[env]
9+
PORT = "8080"
10+
11+
[experimental]
12+
allowed_public_ports = []
13+
auto_rollback = true
14+
15+
[[services]]
16+
http_checks = []
17+
internal_port = 8080
18+
processes = ["app"]
19+
protocol = "tcp"
20+
script_checks = []
21+
[services.concurrency]
22+
hard_limit = 25
23+
soft_limit = 20
24+
type = "connections"
25+
26+
[[services.ports]]
27+
force_https = true
28+
handlers = ["http"]
29+
port = 80
30+
31+
[[services.ports]]
32+
handlers = ["tls", "http"]
33+
port = 443
34+
35+
[[services.tcp_checks]]
36+
grace_period = "1s"
37+
interval = "15s"
38+
restart_limit = 0
39+
timeout = "2s"

server/package.json

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"name": "server",
3+
"version": "1.0.0",
4+
"private": true,
5+
"type": "module",
6+
"scripts": {
7+
"start": "node evolu.js",
8+
"reset": "rm -rf db.sqlite"
9+
},
10+
"dependencies": {
11+
"@evolu/server": "7.0.13",
12+
"effect": "3.5.3"
13+
},
14+
"engines": {
15+
"node": ">=18"
16+
}
17+
}

toolkit/vocs/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"version": "0.0.0",
55
"private": true,
66
"scripts": {
7-
"dev": "tsx utils/setup && vocs dev -p 6106",
7+
"start": "tsx utils/setup && vocs dev -p 6106",
88
"build": "tsx utils/setup && vocs build -c -o ../../output/docs",
99
"preview": "tsx utils/setup && vocs preview"
1010
},

0 commit comments

Comments
 (0)