#+title: ferano.io #+options: toc:nil Static portfolio site. No framework — just Clojure generating HTML. * Stack - *Clojure + Hiccup* — generates all HTML in ~src/ferano_io/main.clj~ - *EDN* — all site data (projects, games, experiments, links) lives in ~resources/data.edn~ - *Tailwind CSS* — compiled from ~resources/input.css~ to ~build/static/output.css~ - *Org-mode* — blog posts written in ~org/~, compiled to HTML fragments by Emacs via ~build-org.el~ * Build #+begin_src sh make watch # tailwind + static assets + clj build (local dev) make publish # full build + rsync to VPS #+end_src Individual targets: | ~make build~ | ~clj -M:build~ — generates ~build/index.html~ and ~build/blog/*.html~ | | ~make org~ | runs Emacs headless to compile ~org/*.org~ → ~org/output/*.html~ | | ~make tailwind~ | compiles Tailwind CSS | | ~make static~ | rsyncs ~resources/static/~ → ~build/static/~ | * Dev (nREPL) #+begin_src sh clj -M:dev #+end_src Starts a CIDER-compatible nREPL. Sets ~-Ddev=true~ so the page loads Tailwind from CDN instead of the compiled file. * Blog Write ~org/YYYY-MM-DD-slug.org~ files. ~make org~ (or ~make build~, which calls it) converts them to body-only HTML fragments, then ~build-website~ wraps each one in the site template and writes it to ~build/blog/~. * Publish #+begin_src sh make publish #+end_src Rsyncs ~build/~ to ~joe-vps:/home/josephferano/websites/ferano.io/~.