Podex is a small starter for server-rendered web applications built with PowerShell, Pode, and htmx. The backend serves Pode views and JSON endpoints; the browser uses htmx and Mustache for the CRUD example.
It includes:
- a SQLite-backed CRUD page with search, paging, create, edit, and delete actions;
- file-based API handlers under
api/; - Tailwind CSS, light and dark themes, and reusable Pode layouts and partials;
- OpenAPI output at
/docs/openapiand Swagger UI at/docs/swagger; - local-only database and server controls when
Podex.Debugis enabled; - Pester, PSScriptAnalyzer, ESLint, Prettier, knip, and a single
smoke:qccommand.
- PowerShell 7
- Bun
- PSSQLite 1.x (runtime)
- Pode 2.x (runtime)
The build installs Pode and the development PowerShell modules. PSSQLite remains a manual prerequisite:
Install-Module -Name PSSQLite -MinimumVersion 1.1.0 -MaximumVersion 1.99.99 -Scope CurrentUsergit clone https://github.com/NomadicDaddy/podex.git
Set-Location podex
bun run buildThe CRUD example expects data/podex.db. To create it from the checked-in schema:
New-Item -ItemType Directory -Path data -Force | Out-Null
$sql = Get-Content -Raw api/debug/init.sql
Invoke-SqliteQuery -DataSource data/podex.db -Query $sqlUse bun run dev for a foreground server, or bun run start to run it in the background.
The app listens at http://localhost:8433 by default.
bun run dev
bun run start
bun run stopbun run smoke:qc runs the PowerShell analyzer, ESLint, Pester, license checks, release
packaging, formatting, and knip. It reports all failed gates before exiting.
bun run release rebuilds the browser assets and stages the files listed in
release-manifest.json under dist/podex-<version>/. Pode and PSSQLite stay external;
node_modules is not included.
Run bun run smoke:qc before opening a pull request. Keep dependency changes in
package.json and bun.lock, and regenerate the license documents with
bun run licenses:generate when the dependency graph changes.
Podex is available under the MIT License. Third-party terms are listed in THIRD_PARTY_LICENSES.md, with full notices in THIRD_PARTY_NOTICES.md.