Design your backend before you write code.
GoVisualize is an open-source desktop app for mapping API endpoints, domain models, and business logic in one visual workspace. Describe what you want in plain language, and the built-in AI assistant proposes structured design changes you can review and apply to your project.
Built with Electron, Svelte 5, Tailwind CSS 4, and DaisyUI.
- Define HTTP routes with method, path, version, and access level (
public/protected) - Organize endpoints into categories; search and filter the list
- Rich Markdown descriptions (summary, request body, behavior, responses, security)
- Visual canvas with drag-and-drop entity cards
- Fields with types and descriptions
- Relationships: has one, has many, belongs to, reference
- Smart edge routing to reduce overlapping connection lines
- Flow canvas for triggers, actions, persistence, integrations, decisions, and failure handlers
- Branch steps with conditions (
success,failure,timeout,retry, …) - Markdown step descriptions (view / edit modes)
- Auto-layout arranges flows left-to-right by branch depth
- Supports Claude (Anthropic) and DeepSeek
- Live model list fetched from each provider’s API (with offline fallback)
- Per-model thinking controls — adaptive/manual budget (Claude) or thinking on/off with effort (DeepSeek)
- Generates endpoints, models, fields, relations, logic steps, and branches from natural language
- Cursor-style tool cards for proposed design actions
- Auto-apply or manual review before changes land on the canvas
- Partial apply: valid actions go through; invalid ones are skipped with warnings
- Chat sessions are scoped per project
- Save and open portable
.jsondesign files - Unsaved-changes protection when switching projects
- First-run onboarding for API keys, model/reasoning, and preferences (reopen anytime from AI setup or settings)
- Node.js 20+ (LTS recommended)
- npm 10+
git clone https://github.com/YOUR_ORG/govisualize.git
cd govisualize
npm install
npm run devThis starts the Vite dev server and Electron window. Use New Design Project or Open JSON Project on the welcome screen.
On first launch, the setup wizard walks you through:
- Choosing a default provider (Claude or DeepSeek)
- Entering your API key (Anthropic · DeepSeek)
- Selecting model and reasoning level (live list from the provider API)
- Auto-apply preference
Keys are stored locally in your OS user data folder and encrypted with Electron safeStorage when the platform supports it.
You can reopen setup later via AI setup on the welcome screen, or Run setup wizard again in AI Settings (gear icon in the chat panel).
Install dependencies, then use the Makefile to produce installers. Artifacts are written to ./release/.
make install
make check # TypeScript + Svelte checks
make build # Renderer + main process only
make package # Package for the current host OS| Target | Output |
|---|---|
make release-mac-x64 |
macOS Intel — DMG + ZIP |
make release-mac-arm64 |
macOS Apple Silicon — DMG + ZIP |
make release-mac |
Both macOS architectures |
make release-win-x64 |
Windows x64 — NSIS + portable |
make release-win-arm64 |
Windows arm64 — NSIS + portable |
make release-linux-x64 |
Linux x64 — AppImage + deb |
make release-linux-arm64 |
Linux arm64 — AppImage + deb |
make release-all |
Every target above |
macOS builds must run on macOS. Windows and Linux targets can be built cross-platform with
electron-builder.
Code signing: Installers are unsigned by default. macOS users may see Gatekeeper prompts until you sign and notarize the app for distribution.
Projects save as JSON with format: "backend-design-spec". The file includes endpoints, domain models, relations, logic steps/branches, and an AI-readable summary.
{
"format": "backend-design-spec",
"formatVersion": 1,
"meta": {
"name": "My API",
"summary": "…"
},
"api": {
"categories": ["Auth"],
"endpoints": [
{
"method": "POST",
"path": "/auth/login",
"version": "v1",
"access": "protected",
"route": "POST /auth/login (v1, protected)"
}
]
},
"domain": {
"models": [
{
"name": "User",
"fields": [{ "name": "email", "type": "string" }],
"layout": { "x": 80, "y": 80 }
}
],
"relations": []
},
"logic": {
"steps": [
{ "kind": "trigger", "name": "POST /auth/login", "layout": { "x": 80, "y": 80 } }
],
"branches": []
}
}Legacy files using format: "goviz-design" are still supported.
| Layer | Choice |
|---|---|
| Desktop shell | Electron 36 |
| UI | Svelte 5, Tailwind CSS 4, DaisyUI 5 |
| Graphs | @xyflow/svelte |
| Markdown | marked |
| Fonts | Inter (bundled via @fontsource/inter) |
| Icons | Lucide via @iconify/svelte |
├── electron/ # Main process, IPC, AI gateway, settings persistence
├── shared/ # Types, AI tools/actions, project format, layout helpers
├── src/
│ ├── lib/
│ │ ├── components/ # Svelte UI (designers, graphs, AI panel, onboarding)
│ │ ├── stores/ # Design + AI state
│ │ └── ai/ # Action executor (applies AI changes to canvas)
│ └── App.svelte
├── public/ # App icons
└── Makefile # Release build shortcuts
Contributions are welcome — issues, docs, and pull requests.
- Fork the repository
- Create a feature branch (
git checkout -b feat/my-feature) - Run
npm run checkbefore opening a PR - Keep changes focused; match existing code style
If you plan a larger change, open an issue first so we can align on approach.
- API keys never leave your machine except when sent to your chosen AI provider over HTTPS
- Renderer runs with
contextIsolationenabled andnodeIntegrationdisabled - Project files are plain JSON on disk — do not embed secrets in design specs
Report security concerns privately via GitHub Security Advisories or by opening a labeled issue.
MIT — see LICENSE.
Inter font is bundled under the SIL Open Font License via @fontsource/inter.
Inspired by the idea of designing backends visually before implementation — endpoints, data, and runtime behavior in one place.
