- TypeScript 77.4%
- Python 22%
- Dockerfile 0.3%
- CSS 0.1%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .github | ||
| .vscode | ||
| backend | ||
| frontend | ||
| .env | ||
| .env.example | ||
| .gitignore | ||
| CHANGELOG.md | ||
| docker-compose.yml | ||
| itch.io.txt | ||
| README.md | ||
| start-backend.sh | ||
| start-frontend.sh | ||
RenVis
A visual node-based editor for Ren'Py visual novels.
Build your story graph in the browser, generate .rpy files, and launch the game directly from the tool.
Requirements
| Tool | Version | Notes |
|---|---|---|
| Python | ≥ 3.12 | Backend runtime |
| uv | any | Python package manager (pip install uv or curl -Lsf https://astral.sh/uv/install.sh | sh) |
| Node.js | ≥ 18 | Frontend build |
| Ren'Py SDK | any recent | Required to run the generated game |
Quick Start
1. Backend
./start-backend.sh
Starts the API server at http://localhost:8000.
2. Frontend
./start-frontend.sh
Opens the editor at http://localhost:5173.
Workflow
Create a project
- Open http://localhost:5173 in your browser.
- Click New Project.
- Set Project Path — an empty folder where your Ren'Py game will live
(e.g./home/you/my-renpy-game). - Set Ren'Py Executable — the full path to the Ren'Py launcher
(e.g./home/you/renpy-8.3.3-sdk/renpy.shon Linux,
C:\renpy-8.3.3-sdk\renpy.exeon Windows). - Click Create.
Build the story
Use the graph editor to create nodes and connect them:
| Node type | Purpose |
|---|---|
| Label | Entry point / anchor (label start: etc.) |
| Dialogue | Character speech lines |
| Choice (menu) | Branching menu — drag from each handle to connect a branch |
| Condition | if/elif/else branching on variables |
| Scene | Background image change |
| Encounter | Show/hide character sprites |
| Jump | Jump to a label |
| Return | End the current label block |
Tip: Drag a connection to empty canvas space to open the quick-create popup and instantly add + connect a new node.
Generate .rpy files
Click Generate (toolbar).
The backend writes four files into <project-path>/game/:
game/
characters.rpy – define statements for all characters
variables.rpy – default variable declarations
options.rpy – game title, window size, etc.
script.rpy – the full story script
Run with Ren'Py
Option A — from within RenVis
Click Run (toolbar). RenVis calls
<renpy-exe> <project-path> and launches the game automatically.
(Requires Ren'Py Executable to be set in project settings.)
Option B — manually from the terminal
# Linux / macOS
/path/to/renpy.sh /path/to/my-renpy-game
# Windows (PowerShell)
& "C:\renpy-8.3.3-sdk\renpy.exe" "C:\path\to\my-renpy-game"
Project structure
RenVis/
├── backend/ Python/FastAPI – generates .rpy, stores project JSON
│ ├── main.py REST API routes
│ ├── generator.py .rpy code generation
│ └── models.py Pydantic data models
├── frontend/ React + TypeScript + Vite
│ └── src/
│ ├── components/story/ Graph editor, node panel, toolbar
│ ├── store/ Zustand state management
│ └── types.ts Shared type definitions
├── start-backend.sh
└── start-frontend.sh
Project data
Project state is stored as a single JSON file inside the project folder:
<project-path>/
renvis.json – full project data (nodes, characters, variables, …)
game/
script.rpy
characters.rpy
variables.rpy
options.rpy
images/
audio/
The ~/.renvis/config.json file keeps track of recently opened projects.