A quiet home for small developer tools.
This is the source for https://libnudget.github.io.
libnudget is a company of Palmshed, the home of open-source AI tools, agents, and SDKs. Where Palmshed builds the ambitious things, libnudget keeps the small ones neat. The same way of working runs through both: build carefully, ship honestly, and stay easy to leave behind.
- Next.js (App Router) with static export (no server)
- Tailwind CSS
- TypeScript
- Deployed to GitHub Pages via GitHub Actions
- Node.js 20 or newer
- npm
npm install
npm run devOpen http://localhost:3000.
The site is configured for a fully static export (output: "export" in
next.config.ts). Build and inspect the output locally:
npm run buildThe static site is written to out/ and can be served from any static file
server:
npx serve outThe following are intentionally not used, because they require a server:
- Route Handlers
- API routes
- Middleware
- Server Actions
- ISR / dynamic rendering
All content lives in typed data files under src/lib/, and interactivity
(search and filters) runs entirely on the client.
Deployment is automatic via GitHub Actions (.github/workflows/deploy.yml).
On every push to main, the site is built and the static output is pushed to
the gh-pages branch, which GitHub Pages serves.
- Create the repository and name it
libnudget.github.io. - In Settings → Pages → Build and deployment, set Source to
Deploy from a branch and choose the
gh-pagesbranch. - Push to
main. TheDeploy to GitHub Pagesworkflow builds the site and publishes it to https://libnudget.github.io.
After that, every push to main updates the site with no manual steps.
The workflow uses the official GitHub Actions:
actions/checkout@v4actions/setup-node@v4
src/
app/ # App Router: layout, pages, sitemap, manifest, 404
app/about/ # About page
app/projects/ # Static project pages (/projects/[slug])
components/ # UI sections (one per site section)
lib/ # Data: projects, categories, activity, copy
public/ # Static assets served as-is
.github/
workflows/ # Pages deployment workflow
profile/ # Organization profile (repo README preview)
Every tool gets a page at /projects/<slug>/ with an overview, installation
instructions, repository and license details, and related tools. Add a new
tool by adding an entry to src/lib/projects.ts; the page is generated
statically at build time.
See CONTRIBUTING.md. Reporting a security issue? See SECURITY.md.