いろいろ整理中なため ファイル数が極端に少ないです... いろいろ調整する前 https://github.com/narumincho/definy/tree/prev2023
-
Old Version WebAssemblyを使って数値の足し算, 引き算, 掛け算ができる
.github/workflows/pull_request.yaml: Pull Request したときに実行されるテストの処理が書かれている.vscode: VSCode 向けの設定assets: スタティックなファイルが置かれているdefiny-event: イベント・ドメインモデルの定義、署名検証、コンテンツハッシュ計算definy-core: 純粋な言語コア評価器、AST ソースコード生成、WebAssembly コンパイラ & 実行 VMdefiny-ui: ブラウザとサーバーでレンダリングする共通の UI コンポーネント、AST 式エディタdefiny-server: サーバーで動かすコード (Axum, SurrealDB, MCP サーバー, SSR & アセット配信, セルフホスト用ビルトインパーツ)definy-client: ブラウザで動かす Dioxus / Wasm エントリポイントdocs: ドキュメント (セルフホスト構想, クレート構成, パーツ型システム, Connect-RPC 仕様 など)
デフォルトでは DATABASE_URL を指定しない場合、インメモリの SurrealDB
(mem://) で動作します (サーバー再起動時にデータは保持されません)。
永続化のために SurrealDB サーバーを Docker で起動する場合:
docker run -d --name definy-dev-db -p 8000:8000 surrealdb/surrealdb:latest start --user root --pass rootcargo run -p definy-server※ クライアントの最新 Wasm をビルドする場合は dx build --package definy-client
を実行します(definy-server はディスク上の最新 Wasm/JS/CSS
を自動検出して配信するため、サーバーの再起動なしでブラウザのリロードだけで反映されます)。
Dioxus CLI (dx) を使用して、バックエンドサーバー (API / SurrealDB / SSR) と
Web クライアント (WASM)
を単一コマンドで同時に起動・ホットリロード開発できます。
事前準備 (初回のみ): https://dioxuslabs.com/learn/0.7/getting_started/#install-the-dioxus-cli
cargo install dioxus-cli起動コマンド:
dx serve --fullstack※ dx serve --fullstack を実行すると、バックエンドサーバー (Axum + SurrealDB +
MCP + SSR) とフロントエンド (Wasm) の双方が自動起動し、http://localhost:8080
でアクセスできます。コードを変更すると自動的に再ビルド・ホットリロードされます(default-members
設定により --package definy-client の指定は不要です)。
環境変数を指定して起動します:
DATABASE_URL: SurrealDB のエンドポイント(例:ws://localhost:8000またはwss://definy-xxx.aws-aps1.surreal.cloud)DATABASE_USER: ユーザー名(任意)DATABASE_PASS: パスワード(任意)DATABASE_NS: 名前空間(任意、デフォルト:definy)DATABASE_DB: データベース名(任意、デフォルト:definy)DATABASE_AUTH_LEVEL: 認証レベル(任意、Database(デフォルト),Namespace,Root)
Linux, Mac の場合
DATABASE_URL=wss://definy-xxx.aws-aps1.surreal.cloud \
DATABASE_USER=flyio \
DATABASE_PASS=password \
cargo run -p definy-serverPowerShell の場合
& {
$env:DATABASE_URL = "wss://definy-xxx.aws-aps1.surreal.cloud";
$env:DATABASE_USER = "flyio";
$env:DATABASE_PASS = "password";
cargo run -p definy-server
}# ワークスペース全体の単体テスト実行
cargo test --workspace
# 静的解析・Clippy チェック (警告 0 件ルール)
cargo clippy --workspace --all-targets -- -D warnings
# コードフォーマット
cargo fmt
dx fmt