Skip to content

Repository files navigation

A Collection of Security Papers on Top-Tier Conferences

中文文档 / Chinese README

TLDR

A curated collection of academic papers in cybersecurity (and adjacent fields), sorted by venue and year, deployed via GitHub Pages.

Visit the website at sec.c01dkit.com

Pull requests and issues are warmly welcomed.

Included publications

Top-tier security ("the Big Four"):

  • IEEE S&P (Oakland)
  • USENIX Security Symposium (USENIX Sec)
  • ACM CCS
  • NDSS

Software-engineering venues with security-relevant content:

  • ICSE
  • ISSTA
  • FSE
  • ASE

System venues:

  • ASPLOS
  • SOSP
  • OSDI

Website features

The site is an Astro static site, prerendered per language (/zh/ and /en/) and deployed at sec.c01dkit.com. From the top navigation bar you can reach:

  • Home — a scroll-revealed landing page: hero with live paper/venue/year stats, a coverage matrix (10 venues × 12 years, shaded by yearly accepted-paper count), and one feature block per core page (search, trends, abstracts, submission timeline, awards).
  • Search — full title search across all included papers, filter by venue and year, click a row to copy the title, click the paperclip to open the paper, click the star to favorite. A "Favorites Only" toggle filters to your starred entries. The first 30 rows are prerendered at build time, so the page stays readable and filterable even if the CDN is unreachable.
  • Trends — yearly accepted-paper trend charts grouped by category (top-tier, software engineering, system).
  • Abstract — pick a venue and year to read accepted papers with their abstracts, with the user's preferred keywords highlighted in the accent color.
  • Submission Timeline — full submission/notification/camera-ready timeline for each Big-Four venue, kept in sync with the official CFPs.
  • Awards — best-paper / distinguished-paper awards across years, grouped by year or by award type.
  • About — changelog, list of supporters, and a "Support & Feedback" section (donation links, GitHub issues, feedback form).
  • More Sites — curated links to related resources (best-paper-awards aggregators, CCF deadlines, Connected Papers, WisPaper, CS Papers, etc.).
  • Settings — theming and personal preferences (see below).

Personalization (Settings page)

All preferences are persisted in your browser's IndexedDB only — nothing is uploaded.

  • Light / dark mode toggle, accent color picker (4 curated colors).
  • Language toggle: English / 中文.
  • Remember-preference switches for language, dark mode, and accent color.
  • Preferred keywords for highlighting in Search and Abstract pages.
  • Paper favorites stored locally; surfaced in the Search page.

Repository layout

analyzers/                Python crawl/parse/LLM analysis modules
cache/                    pickled crawl cache (SHA-256 keyed; see cache.zip)
official_cache/           official CSV/BIB files from venues
src/assets/data/          generated JSON consumed by the frontend
  data.json               full paper list (no abstracts, for size)
  data-quick-view.json    100 latest papers per publication
  data-statistics.json    aggregated counts by publication / year / category
  meta_json/<Pub>-<Yr>.json   per-conference details with abstracts
src/pages/                Astro pages ([lang]/*.astro prerendered per language)
src/lib/                  pure-function modules (papers, highlight, coverage, settings-schema, ...)
src/scripts/              browser-side controllers, incl. settings-store.js (IndexedDB + localStorage)
src/i18n/                 zh.json / en.json + index.js (t() throws on a missing key)
data.yml                  master config (venues, years, XPaths, official files)
main.py                   orchestrator entry point

How to contribute?

Paper data is processed via uv. Clone the repo, edit data.yml, run uv run main.py --analyze locally to verify, and open a pull request. All contributors will be credited in the repository and on the website's About page.

Updating paper details

uv sync                     # set up the Python environment
# ...edit data.yml...
uv run main.py --analyze    # crawl/parse and regenerate JSON in src/assets/data/

To speed up local crawling, unzip cache.zip into the repo root so the cached HTML/JSON is reused.

Updating key information

  • Since v0.3.6, the status keyword in data.yml marks each conference's processing state for maintainers: notchecked (default) / inprogress / done / advanced (LLM-analyzed). It is no longer surfaced on the site itself as of v0.4.0.
  • Awards and the submission timeline are hand-maintained JSON, not generated by --analyze: src/assets/data/awards.json and src/assets/data/submission-timeline.json are the two files under src/assets/data/ that are not git-ignored (see .gitignore) — edit them directly. The changelog and supporter/sponsor list live in src/data/changelog.js; the "More Sites" links live in src/data/sites.js. Edit those directly to publish news.

LLM-assisted topic classification

uv run main.py --llm-analyze reads paper abstracts and tags topics via an OpenAI-compatible API. Configure it via a local .env:

OPENAI_API_KEY=...
MODEL=...
BASE_URL=...
PRIVATE_ZIP_PASSWD=...   # password for cache.zip

Results are cached as JSONL to avoid re-querying.

bib files without cite keys

Some venues (e.g., recent IEEE Xplore exports for Oakland) ship .bib files where each entry's cite key is empty (@INPROCEEDINGS {,). bibtexparser cannot parse those, so run:

uv run analyzers/bib_analyzer.py official_cache/<file>.bib

This rewrites empty cite keys with random UUIDs in place. Cite keys are not used downstream — only title, author, abstract, and url are consumed.

Frontend development

npm install
npm run dev              # Astro dev server
npm run build            # production build → dist/
npm run preview          # preview the build
npm run check            # astro check
npm test                 # vitest run
npm run deploy           # publish dist/ to GitHub Pages (--cname sec.c01dkit.com)

The site is Astro with hand-written CSS — no UI framework, no Tailwind. Charts are Chart.js.

Full publish cycle

uv run main.py --analyze --upload
npm run deploy           # update package.json's --cname if you fork this
git add .
git commit -m "update $DATE"
git push origin main

About

A collection of security papers on top-tier publications

Resources

Stars

Watchers

Forks

Used by

Contributors

Languages