From 6c6218ef3662a806744c76409407600fa91ce1d6 Mon Sep 17 00:00:00 2001 From: Story Crater Bot <19826264+Riotpiaole@users.noreply.github.com> Date: Tue, 18 Aug 2026 18:33:49 -0700 Subject: [PATCH] (chore) init commit and add tasks --- .eslintrc.json | 23 + .gitignore | 8 + IMPLEMENTATION.md | 1348 ++++++ PLAN.md | 620 +++ app/cluster/chat/page.tsx | 217 + app/cluster/delivery/page.tsx | 219 + app/cluster/layout.tsx | 39 + app/cluster/page.tsx | 147 + app/cluster/terminal/page.tsx | 173 + app/globals.css | 11 + app/layout.tsx | 22 + app/page.tsx | 182 + components/AnimatedRoles.tsx | 62 + components/AvatarWithBlob.tsx | 87 + components/ExperienceTimeline.tsx | 150 + components/FeatureCard.tsx | 54 + components/Header.tsx | 65 + components/HeroBlobFlow.tsx | 80 + components/InteractiveTerminal.tsx | 148 + components/LiveIndicator.tsx | 35 + components/ProgressiveText.tsx | 43 + components/TypewriterText.tsx | 55 + components/cluster/Panel.tsx | 31 + components/cluster/Rail.tsx | 43 + components/cluster/Ribbon.tsx | 54 + components/cluster/SlotMeter.tsx | 44 + docs/PLAN-atlas.md | 327 ++ .../ADR-0001-atlas-cluster-visualization.md | 285 ++ infra/argocd-apps.yaml | 59 + infra/auth-infra/base/ingress-protected.yaml | 83 + infra/auth-infra/base/kustomization.yaml | 5 + infra/auth-infra/base/networkpolicy.yaml | 50 + infra/homarr/base/helmrelease.yaml | 24 + infra/homarr/base/ingress.yaml | 24 + infra/homarr/base/kustomization.yaml | 8 + infra/homarr/base/namespace.yaml | 7 + infra/homarr/base/secret.yaml | 8 + infra/kustomization.yaml | 6 + infra/portfolio/base/deployment.yaml | 49 + infra/portfolio/base/ingress.yaml | 24 + infra/portfolio/base/kustomization.yaml | 8 + infra/portfolio/base/namespace.yaml | 7 + infra/portfolio/base/service.yaml | 16 + lib/clusterMock.ts | 183 + lib/motion.ts | 65 + next-env.d.ts | 6 + next.config.js | 6 + package.json | 34 + pnpm-lock.yaml | 4247 +++++++++++++++++ postcss.config.mjs | 6 + tailwind.config.ts | 33 + tasks/00-decisions.md | 37 + tasks/01-phase0-unblock.md | 39 + tasks/02-phase1-atlas-core.md | 35 + tasks/03-phase2-topology.md | 29 + tasks/04-phase3-delivery.md | 31 + tasks/05-phase4-terminal.md | 30 + tasks/06-phase5-chat.md | 46 + tasks/README.md | 32 + tsconfig.json | 41 + tsconfig.tsbuildinfo | 1 + 61 files changed, 9851 insertions(+) create mode 100644 .eslintrc.json create mode 100644 .gitignore create mode 100644 IMPLEMENTATION.md create mode 100644 PLAN.md create mode 100644 app/cluster/chat/page.tsx create mode 100644 app/cluster/delivery/page.tsx create mode 100644 app/cluster/layout.tsx create mode 100644 app/cluster/page.tsx create mode 100644 app/cluster/terminal/page.tsx create mode 100644 app/globals.css create mode 100644 app/layout.tsx create mode 100644 app/page.tsx create mode 100644 components/AnimatedRoles.tsx create mode 100644 components/AvatarWithBlob.tsx create mode 100644 components/ExperienceTimeline.tsx create mode 100644 components/FeatureCard.tsx create mode 100644 components/Header.tsx create mode 100644 components/HeroBlobFlow.tsx create mode 100644 components/InteractiveTerminal.tsx create mode 100644 components/LiveIndicator.tsx create mode 100644 components/ProgressiveText.tsx create mode 100644 components/TypewriterText.tsx create mode 100644 components/cluster/Panel.tsx create mode 100644 components/cluster/Rail.tsx create mode 100644 components/cluster/Ribbon.tsx create mode 100644 components/cluster/SlotMeter.tsx create mode 100644 docs/PLAN-atlas.md create mode 100644 docs/adr/ADR-0001-atlas-cluster-visualization.md create mode 100644 infra/argocd-apps.yaml create mode 100644 infra/auth-infra/base/ingress-protected.yaml create mode 100644 infra/auth-infra/base/kustomization.yaml create mode 100644 infra/auth-infra/base/networkpolicy.yaml create mode 100644 infra/homarr/base/helmrelease.yaml create mode 100644 infra/homarr/base/ingress.yaml create mode 100644 infra/homarr/base/kustomization.yaml create mode 100644 infra/homarr/base/namespace.yaml create mode 100644 infra/homarr/base/secret.yaml create mode 100644 infra/kustomization.yaml create mode 100644 infra/portfolio/base/deployment.yaml create mode 100644 infra/portfolio/base/ingress.yaml create mode 100644 infra/portfolio/base/kustomization.yaml create mode 100644 infra/portfolio/base/namespace.yaml create mode 100644 infra/portfolio/base/service.yaml create mode 100644 lib/clusterMock.ts create mode 100644 lib/motion.ts create mode 100644 next-env.d.ts create mode 100644 next.config.js create mode 100644 package.json create mode 100644 pnpm-lock.yaml create mode 100644 postcss.config.mjs create mode 100644 tailwind.config.ts create mode 100644 tasks/00-decisions.md create mode 100644 tasks/01-phase0-unblock.md create mode 100644 tasks/02-phase1-atlas-core.md create mode 100644 tasks/03-phase2-topology.md create mode 100644 tasks/04-phase3-delivery.md create mode 100644 tasks/05-phase4-terminal.md create mode 100644 tasks/06-phase5-chat.md create mode 100644 tasks/README.md create mode 100644 tsconfig.json create mode 100644 tsconfig.tsbuildinfo diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..d065a06 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,23 @@ +{ + "parser": "@typescript-eslint/parser", + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/recommended" + ], + "plugins": ["@typescript-eslint"], + "env": { + "browser": true, + "es2021": true, + "node": true + }, + "parserOptions": { + "ecmaVersion": "latest", + "sourceType": "module", + "jsx": true + }, + "ignorePatterns": ["tsconfig.json", ".next", "node_modules"], + "rules": { + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/triple-slash-reference": "off" + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..425ab4f --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +node_modules/ +.next/ +*.log +.DS_Store +.env +.env.local +.env.*.local +.claude \ No newline at end of file diff --git a/IMPLEMENTATION.md b/IMPLEMENTATION.md new file mode 100644 index 0000000..2d89087 --- /dev/null +++ b/IMPLEMENTATION.md @@ -0,0 +1,1348 @@ +# Implementation: Homarr + Portfolio via Terraform + +## Phase 1: Portfolio Site (Local Dev) + +### 1.1 Initialize Next.js project + +```bash +cd ~/workplace/riotpiao +npm init -y +npm install next@15 react@19 react-dom@19 typescript tailwindcss postcss autoprefixer +npx tailwindcss init -p +npx tsc --init +``` + +**`tsconfig.json`:** +```json +{ + "compilerOptions": { + "target": "ES2020", + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "jsx": "react-jsx", + "module": "ESNext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "strict": true, + "skipLibCheck": true, + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + "baseUrl": ".", + "paths": { + "@/*": ["./*"] + } + }, + "include": ["**/*.ts", "**/*.tsx"], + "exclude": ["node_modules", ".next"] +} +``` + +**`next.config.js`:** +```javascript +/** @type {import('next').NextConfig} */ +const nextConfig = { + output: 'standalone', + reactStrictMode: true, +}; + +module.exports = nextConfig; +``` + +**`package.json` (key fields):** +```json +{ + "name": "riotpiao-portfolio", + "version": "1.0.0", + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "eslint ." + } +} +``` + +### 1.2 App Router structure + +**`app/layout.tsx`:** +```typescript +import "@/styles/globals.css"; +import Header from "@/components/Header"; +import Footer from "@/components/Footer"; + +export const metadata = { + title: "Rock Liang — Portfolio & Demos", + description: "Software engineer showcasing live demos and open-source projects.", + openGraph: { + title: "Rock Liang", + description: "Portfolio and interactive demo platform", + url: "https://portfolio.riotpiao.homelab.com", + images: [ + { + url: "https://portfolio.riotpiao.homelab.com/og-image.png", + width: 1200, + height: 630, + }, + ], + }, +}; + +export default function RootLayout({ children }: { children: React.ReactNode }) { + return ( + + +
+
{children}
+