Buckyverse
Static site generator for R. Buckminster Fuller's works. Converts LaTeX book sources (Codexis projects) into HTML with native MathML for math rendering.
Features
- Converts LaTeX to HTML using Pandoc
- Native MathML for math equations (no JavaScript required)
- Three-column reader layout (sidebar, content, TOC)
- Development server with file watching
- Search index generation
- Responsive design
Requirements
- Elixir 1.18+
- Pandoc 2.19+ (
brew install pandocorapt-get install pandoc)
Installation
# Clone the repository
git clone <repo-url>
cd buckyverse2
# Install dependencies
mix deps.get
# Build the static site
mix bucky.build
# Or start development server
mix bucky.watch
Usage
Build Static Site
mix bucky.build
This generates the static site in _site/ directory.
Development Server
mix bucky.watch
Starts a development server at http://localhost:4000 with automatic rebuilding on file changes.
Project Structure
buckyverse2/
├── lib/
│ └── buckyverse2/
│ ├── library.ex # Content loading
│ ├── library/
│ │ ├── book.ex # Book struct
│ │ └── chapter.ex # Chapter struct
│ ├── latex/
│ │ ├── parser.ex # LaTeX structure parser
│ │ ├── converter.ex # Pandoc integration
│ │ └── post_processor.ex
│ ├── templates/ # HTML templates
│ ├── build.ex # Static site builder
│ └── watch.ex # Dev server
├── priv/
│ ├── books/ # Codexis book projects
│ │ └── grunch-of-giants/ # Example book
│ └── static/
│ ├── css/style.css
│ └── js/app.js
├── _site/ # Build output
└── config/ # Configuration
Adding Books
Books should be Codexis projects with the following structure:
priv/books/your-book/
├── meta.yaml # Book metadata
├── manuscript.tex # Main LaTeX file
├── content/
│ └── chapters/
│ ├── 01-chapter-one.tex
│ └── 02-chapter-two.tex
└── assets/ # Images, etc.
Configuration
Edit config/config.exs:
config :buckyverse2,
books_path: "priv/books",
output_path: "_site",
dev_server_port: 4000,
site_title: "Buckyverse",
site_description: "R. Buckminster Fuller's works, digitized"
Deployment
The _site/ directory can be deployed to any static hosting:
- Netlify:
netlify deploy --prod --dir=_site - GitHub Pages: Push
_site/contents to gh-pages branch - Cloudflare Pages: Connect repo, set output directory to
_site
License
MIT