Synaplan
开源 AI 软件平台,面向企业:自托管 AI 代理,符合 GDPR 的聊天机器人小部件,RAG 知识库,WhatsApp 与 Outlook AI,MCP,多模型路由。支持 Docker、Kubernetes 或在 Germ 托管。
AI 翻译
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Job board for hackers
翻译准备中
取自仓库 README
正在加载完整 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.查看完整 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.