@luuthuong/quickdev
v0.2.0
Published
Terminal UI for running and watching multiple dev/build sessions across projects at once.
Readme
quickdev
A terminal UI for managing multiple project work sessions. Configure several projects, run their dev and build commands, and switch between projects to watch each one's live logs — all from one screen.
Built with OpenTUI + React on Bun.
Install
bun installRun
bun dev # watch mode (auto-reloads on source changes)
bun start # plain runLayout
quickdev · project session manager 2 running
┌ Projects ──────────────────┐┌ Logs — reactapp · dev pid 27544 :5173 ────┐
│ ▸ reactapp ● dev ││ dev │ VITE ready in 312 ms │
│ dev :5173 pid 27544 ││ dev │ ➜ Local: http://localhost:5173/ │
│ nestapi ○ idle ││ build│ ... │
│ angularapp ✓ done ││ │
└────────────────────────────┘└──────────────────────────────────────────┘
↑↓ switch d dev b build s stop r restart x clear PgUp/PgDn scroll q quit- Left — the configured projects with a live status badge
(
● running,○ idle,✓ done,✗ error). Each running session gets a detail line with its PID and, once detected, the port it's bound to. - Right — the selected project's merged log stream, with the same PID/port
info in the panel title. Lines are prefixed with the session they came from
(
dev,build, or•for quickdev messages).
Port detection is best-effort: quickdev discovers the full descendant process
tree of a session (since e.g. bun run dev spawns vite/nest/ng as a child,
which may itself spawn the process that actually binds the port) and cross-
references it against the system's listening TCP sockets every couple of
seconds. It can take a second or two after start for the port to appear.
Keys
| Key | Action |
| -------------- | -------------------------------------------------- |
| ↑ ↓ / j k | Switch selected project |
| d | Start dev (ignored if dev is already running) |
| b | Start build (ignored if a build is running) |
| s | Stop the project's running session(s) |
| r | Restart dev (stops the running one, then starts) |
| x | Clear the selected project's logs |
| PgUp PgDn | Scroll the log view |
| Home End | Jump to top / bottom of the log |
| q / Ctrl+C | Quit (stops all running sessions first) |
Dev and build can run at the same time for a project; their output is interleaved into that project's log with a per-source prefix.
Configuration
On first run, quickdev scans the sibling projects/ folder, reads
each app's package.json, and writes a quickdev.json at the repo root:
{
"projects": [
{
"id": "reactapp",
"name": "reactapp",
"cwd": "projects/reactapp",
"commands": { "dev": "bun run dev", "build": "bun run build" }
}
]
}Edit quickdev.json to add your own projects, point cwd anywhere on disk
(relative to the repo root or absolute), or change the dev / build commands.
Delete the file to regenerate it from projects/.
Command inference picks the first matching script for each action:
- dev —
dev→start:dev→develop→serve→start - build —
build
Development
bun run typecheck # tsc --noEmit
bun test # runs src/app.test.tsxNotes
- Log output has ANSI colors and cursor/progress control codes stripped so it renders cleanly; up to 2000 lines are kept per project.
- Stopping a session kills the whole child process tree (via
taskkill /Ton Windows), so dev servers spawned bybun run devand the ports they hold are released. On quit, all running sessions are stopped first.
