A modern, fast, and elegant academic homepage built with Next.js and Fumadocs. This website showcases research interests, publications, and documentation with a clean and professional design.
- Framework: Next.js 16 with App Router
- UI Components: shadcn/ui (Radix UI + Tailwind CSS)
- Styling: Tailwind CSS 4
- Documentation: Fumadocs
- Content: MDX with rehype-katex and remark plugins
- Icons: Lucide React + React Icons
- Theme: next-themes
- Runtime: Bun (optional, can use Node.js)
Publications are stored in lib/db/publications.json in CSL-JSON format. Two CLI tools are provided for managing them.
bun manage-pubs list # Numbered list of all publications
bun manage-pubs add # Opens $EDITOR with a JSON template → validates → appends
bun manage-pubs edit 5 # Opens $EDITOR with entry #5 → validates → replaces
bun manage-pubs remove 5 # Confirm → removes entry #5
bun manage-pubs validate # Zod schema validation on all entries- Indexes are 1-based (as shown by
list). - Every mutation auto-creates
lib/db/publications.bak.jsonas a safety net. - Editor falls back through
$EDITOR→$VISUAL→vim→nano→vi. - Entry fields are validated against a Zod schema at
lib/db/publications.schema.ts.
bun convert-bibtex to-bibtex # JSON → BibTeX (writes lib/db/publications.bib)
bun convert-bibtex from-bibtex file.bib # BibTeX → JSON (prints to stdout)
bun convert-bibtex from-bibtex file.bib --merge # BibTeX → JSON (appends new entries)- Uses citation-js for parsing and formatting.
--mergededuplicates by DOI and title before appending.- BibTeX citation keys are auto-generated from author + year + title.
Zheng Ma (马征) Email: zhengma@sjtu.edu.cn