Skip to content

jae-labs/pages

lui.z Logo

Website CI License GitHub issues GitHub stars GitHub forks Astro 6 Cloudflare Pages Buy Me A Coffee

lui.z the true human agent.

Trained over 3.7 decades on production incidents, questionable dashboards, network cables, CI pipelines, cloud bills, human emotions, and the occasional moral judgment.

This repository powers justanother.engineer: a cyberpunk-styled personal site that treats Luiz F. C. Martins like a highly opinionated SRE/DevOps model you can deploy into teams, platforms, incidents, and awkward architecture meetings.

Under the joke: career history, public recommendations, operating style, sponsorship options, contact paths, and enough blinking yellow to void at least one design warranty.

Stack

  • Astro 6 static site
  • Tailwind CSS 4 with CSS-first theme tokens
  • TypeScript
  • Lucide Astro icons
  • Cloudflare Pages
  • Cloudflare Pages Functions for the public lui.z clone chat API
  • Cloudflare KV for chat rate limiting
  • Cloudflare Workers/CDN for public media
  • OCI Object Storage for large media files
  • GitHub Actions CI/CD with Doppler-synced secrets

Local Development

Requires Node.js 22.12.0 or newer.

  1. Install dependencies.

    npm ci
  2. Install local Git hooks.

    npm run prepare
  3. Start the development server.

    npm run dev
  4. Open the local URL printed by Astro, usually http://localhost:4321.

  5. Edit content or components.

    • Portfolio data: src/config/portfolio/
    • Page sections: src/components/landing/
    • Chat API logic: src/server/chat/
    • Cloudflare Pages Functions: functions/
    • Global layout, SEO, analytics: src/layouts/Layout.astro
    • Theme tokens and global effects: src/styles/global.css
    • Static passthrough assets: public/
    • Astro-optimized image assets: src/assets/
  6. Run the full local gate before pushing.

    npm run check
  7. Preview the production build if the change affects layout, assets, SEO, or deployment behavior.

    npm run preview

Common commands:

Command Purpose
npm ci Install locked dependencies
npm run prepare Install Lefthook Git hooks
npm run dev Start local dev server
npm run lint Run ESLint
npm run typecheck Run Astro diagnostics
npm run test:run Run unit tests once
npm run build Build static output into dist/
npm run check Run lint, typecheck, tests, and build
npm run preview Preview the production build locally

Project Structure

src/pages/index.astro          page composition
src/components/landing/        landing page sections
src/components/branding/       custom brand mark
src/components/icons/          local social icons
src/config/portfolio.ts        portfolio content exports
src/config/portfolio/          structured content by domain
src/server/chat/               chat prompt, public facts, NIM client, rate limit logic
src/types/portfolio.ts         shared content types
src/layouts/Layout.astro       SEO, metadata, analytics, global scripts
src/styles/global.css          Tailwind theme tokens and global effects
functions/api/chat.ts          Cloudflare Pages Function for the chat endpoint
public/                        static passthrough assets
.github/workflows/ci.yml       Cloudflare Pages build and deploy

Content Model

Most editable portfolio content lives in src/config/portfolio/, split by domain. src/config/portfolio.ts is the public export surface for components. Components should render that data, not duplicate it. Images that need Astro optimization belong in src/assets/; files that must be served unchanged belong in public/.

Deployment

CI runs on pushes and pull requests targeting main. It builds the static site with production canonical settings, uploads dist/, and deploys through Wrangler to the Cloudflare Pages project jae-pages.

  • Production: https://justanother.engineer
  • Preview: Cloudflare Pages preview deployment posted automatically as a PR comment
  • Canonical build env: SITE_URL=https://justanother.engineer, SITE_BASE=/

Cloudflare Pages, DNS, and the media.justanother.engineer Worker are managed outside this repo in the conCIerge Terraform Cloudflare root. Secrets for the production and review GitHub environments are synced from Doppler project pages.

The chat endpoint uses the Doppler-synced GitHub environment secret NVIDIA_NIM_TOKEN. CI validates that secret, writes it to the matching Cloudflare Pages runtime environment with wrangler pages secret put, then deploys. The endpoint also requires a Cloudflare KV binding named RATE_LIMIT_KV; that namespace and Pages binding are owned by the conCIerge Terraform Cloudflare root.

Chatbot

The floating lui.z clone chat is intentionally constrained. It must state that it is not the biological lui.z, only a limited artificial clone, and it answers from public-site facts derived from the portfolio content, FAQ, reviews, deployment history, benchmarks, and the page's satirical human-agent framing. The server-side API calls NVIDIA NIM model openai/gpt-oss-120b and never exposes NVIDIA_NIM_TOKEN to client JavaScript.

This repo does not persist chat messages. The chat endpoint sends each message to NVIDIA NIM for inference and stores only a short-lived hashed client identity in Cloudflare KV for rate limiting. Visitors are warned not to submit secrets, private data, credentials, employer-confidential information, or personal information.

Media

Large public media should not be committed to this repo. Upload it to the OCI Object Storage media bucket managed by the conCIerge Terraform OCI root, then serve it through https://media.justanother.engineer. The current promo video default is https://media.justanother.engineer/lui-z-promo.mp4.

License

MIT.

About

justanother.engineer website.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors