Projektstruktur

Das Verzeichnis app/, text.config.ts und die text-CLI.

Ordner in app/ definieren Routen, und spezielle Dateien definieren die UI für jede Route.

Ordner

OrdnerZweck
appRouten, Layouts und Route-Handler
libGemeinsam genutzte Module ohne Routing
publicStatische Ressourcen

Routing-Dateien

DateiZweck
layout.tsxGemeinsame UI für ein Segment
page.tsxÜber eine Route erreichbare Ansicht
loading.tsxFallback für Suspense
error.tsxError Boundary
not-found.tsxURLs ohne passende Route
route.tsAPI-Endpunkt
app/├── layout.tsx            → shared shell├── page.tsx              → /├── sessions/│   ├── page.tsx          → /sessions│   └── [id]/page.tsx     → /sessions/:id└── api/health/route.ts   → GET /api/health

Dynamische Routen

OrdnerURLparams
[id]/sessions/42{ id: "42" }
[...slug]/docs/a/b{ slug: ["a", "b"] }

text.config.ts

text.config.tsts
import { defineConfig } from "@textjs/app";export default defineConfig({  title: "Acme",  viewport: { width: 120, height: 36, theme: "geistDark" },  hints: [{ keys: "↑ ↓", label: "count" }],});
OptionStandardwertBeschreibung
title""Titel der Seite und des FocusPad
viewportan Konsole anpassen, sonst 120×36responsive (Standardwert true), Fallback width × height, theme
hints[]Zwei oder drei Tasten, die auf dem FocusPad der Seite angezeigt werden
actionpress <first hint>Aktion nach dem Fokussieren, z. B. "type a prompt"
devIndicatorstrueDev-Overlay in der Konsole ([▼])
focusHinttrue„Klicke auf die Seite, um die Tastatur zu verwenden“ über der letzten Zeile der Konsole, solange die Seite keinen Fokus hat
rewrites[]Rewrites und Proxys
ansi{ cols: 80, rows: 24 }Frame-Größe für curl und Terminal-Clients, oder false, um ihnen HTML auszuliefern

CLI

BefehlBeschreibung
text devEntwicklungsserver mit Fast Refresh
text buildProduktionsbuild
text startBuild und Route-Handler bereitstellen
text runDie App in einem Terminal rendern (Terminal)
text mcpDie App für Coding-Agenten bereitstellen (MCP)
Diese Seite auf GitHub bearbeiten