Lalabase
Tickets, Doku, Zeiterfassung und Kundengespräche an einem Ort, durchsuchbar per KI. Für Softwarefirmen mit Kundenprojekten. Open Source: auf deinem eigenen Server oder in unserer Cloud in Deutschland.
Translation pending
Tech jobs from Hacker News 'Who is hiring?' threads — verified opportunities posted by founders and hiring managers, no middlemen.
BusinessJavaScript · CSSGitHub @victorantosOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Job board for hackers
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Jobs for hackers. Every listing from Hacker News' monthly "Ask HN: Who is hiring?" thread, turned into a fast, searchable job board — one page per job, three months live at a time.
Running since December 2014 — now in its twelfth year, and on its third engine: Angular, then VuePress, now plain.Read the full README ↗Jobs for hackers. Every listing from Hacker News' monthly "Ask HN: Who is hiring?" thread, turned into a fast, searchable job board — one page per job, three months live at a time.
Running since December 2014 — now in its twelfth year, and on its third engine: Angular, then VuePress, now plain.
angjobs.com · Browse jobs · RSS · Post a job · About
AngJobs runs on plain, a Git-native CMS: this repo is the whole website. Every job is a Markdown file in content/jobs/, every setting is JSON, and node build.js turns the lot into a static site. There is no database and no CMS server to patch — one runtime dependency (marked), and the published pages work with JavaScript switched off.
It is a static site with a backend, though — two small services do the things a folder of files can't:
| Service | What it does |
|---|---|
api.victorantos.com | Receives job applications. Every job page carries an Apply form (the api-form plugin, wired through services.backend in site.config.json) that POSTs the applicant's name, email, and message, and emails it to the poster. It degrades to a plain HTML form without JavaScript. |
plain-oauth-angjobs.…workers.dev | A Cloudflare Worker handling Sign in with GitHub for the admin. Anyone with write access to this repo can open /admin/, sign in, and write a job with live preview — each save is a commit, no access token to paste. |
Everything else is generated at build time: the job pages, the month archives, a client-side search index, sitemap.xml, robots.txt, per-collection RSS, an llms.txt summary for agents, and a read-only JSON API under /api/.
Listings are files, so submitting a job is a pull request. No account beyond GitHub, no form to babysit.
Open the job template on GitHub → — the button on that page opens GitHub's editor with the frontmatter pre-filled.
Name the file <month>-<year>-<company>-<role>.md, lowercase with hyphens — e.g. september-2026-acme-senior-backend-engineer.md. The filename is the URL: that becomes angjobs.com/jobs/september-2026-acme-senior-backend-engineer/.
Fill in the frontmatter and body:
---
title: "Acme : Senior Backend Engineer : Remote (EU)"
date: 2026-09-01
description: One line about the role, used for search results and link previews.
author: your-hn-username
section: september-2026
tags:
- september-2026
---
Acme | Senior Backend Engineer | Remote (EU) | €90k–€120k
Describe the role, the stack, and how to apply.
[[form:apply]]
[[form:apply]] is what renders the Apply form on the page — keep it as the last line.
Choose "Propose changes" to open the PR. Keep the frontmatter keys above — the build validates them, so a malformed listing fails the build with a clear message instead of half-deploying.
Review — I read every PR. Once approved you get a payment link by email; after payment I merge it and the job is live within minutes.
Nothing merges itself. Opening a pull request never publishes a job. Every PR needs an explicit approving review from the repo owner (@victorantos) before it can reach main — enforced by .github/CODEOWNERS, with auto-merge disabled repo-wide. A PR from a fork also runs no workflows and touches no secrets. Treat an open PR as a submission, not a publication.
Spotted a typo or a dead listing? Same flow — edit the file, open a PR.
The monthly bulk comes from HN's "Who is hiring?" thread, pulled in by a scheduled importer that writes one Markdown file per top-level post — title, date, HN username, and a link back to the original comment.
Only the last three months of Hacker News jobs are kept. That is the whole archive policy: as a new month is imported the oldest one rotates out, so the board holds roughly 750 listings and never grows into a graveyard of expired roles. Right now that is June, July and August 2026.
Rotating out is not deleting a URL, though. When a month drops off, its job URLs are retargeted in data/redirects.json rather than left to rot, so nothing that was ever indexed starts returning a 404.
That file is the reason the VuePress → plain move cost no search traffic: it carries 1,123 redirects, every legacy .html URL flattened to a single hop.
content/jobs/ one Markdown file per job — filename is the URL
content/pages/ home, about, post-a-job
data/ navigation.json, redirects.json, promos.json, footer.json
themes/angjobs/ the theme (plain's "gazette" starter, forked into a job board)
plugins/ search, api-form (the Apply form), goatcounter
site.config.json collections, fields, plugin options, services
build.js + lib/ the plain engine — content in, dist/ out
npm install
npm run dev # → http://localhost:4000, admin at /admin/
| Command | What it does |
|---|---|
npm run build | Build the site into dist/ |
npm run dev | Build, serve on :4000, rebuild on change |
npm test | Run the test suite |
Both npm test and npm run build must pass before anything is committed — see CLAUDE.md, which is also what lets Claude Code and other agents edit this repo safely.
Push to main and .github/workflows/deploy-vps.yml builds the site and ships dist/ to a VPS behind Cloudflare. The badge at the top of this file is that workflow.
AngJobs has been free and open source for its whole twelve years — no tracking beyond a page counter, no paywall on any listing, and the entire board sitting right here as Markdown you can read, fork, or scrape.
The goal for this year is 100 GitHub stars. If the board has ever pointed you at a job, or you just like the idea of a job site that is a Git repo, give it a star — it is the whole marketing budget.
MIT. The job listings themselves are posts from Hacker News, reproduced with attribution and a link back to the original comment.