# AI DEV — 사내 개발 포털 직원이 한 곳에서 **사내 개발 사이트로 이동**하고, **만든 프로젝트를 공유·코멘트**하는 포털. GitHub 감성 UI. Keycloak SSO(사번 로그인). Node(Express+EJS) + Postgres. > 브랜드명 `AI DEV` 는 `PORTAL_BRAND` 환경변수로 바꿀 수 있습니다. ## 기능 - **Keycloak OIDC 로그인** (realm `bokdev`, client `portal`, 사번 = preferred_username) - **개발 사이트 모음** — 개발 핵심(Coder/Gitea/Kubero/Harbor) + AI·데이터(LiteLLM/Chat/OpenEverest/MinIO). 목록은 `src/sites.js`. - **프로젝트 공유** — repo/앱 URL·설명·태그 - **코멘트 / 스타** ## 로컬 실행 ```bash cp .project-env.example .project-env # 값 채우기 (OIDC_CLIENT_SECRET 등) set -a; . ./.project-env; set +a npm install npm run db:init # schema.sql 적용 (최초 1회) npm run dev # http://localhost:3000 ``` - 로컬에서 OIDC 콜백을 받으려면 Keycloak `portal` client redirect 에 `http://localhost:3000/auth/callback` 이 등록돼 있어야 합니다(이미 등록됨). ## 배포 (Kubero) - NodeJS buildpack (`npm install` → `node index.js`). Dockerfile 불필요. - Kubero Env: `BASE_URL=https://portal.bokdev.in`, `DATABASE_URL`, `OIDC_*`, `SESSION_SECRET`, `PORTAL_BRAND`. - 도메인: `portal.bokdev.in` (게이트웨이/라우트 별도 구성 필요) 또는 `.apps.bokdev.in`. - 배포 도메인이 정해지면 Keycloak `portal` client redirect 에 `https://<도메인>/auth/callback` 추가. ## 연결 정보 - **DB**: OpenEverest `postgresql-6ox` 의 `appdb`, schema `portal`, role `portal_app`. - **Issuer**: `https://keycloak.bokdev.in/realms/bokdev` 자세한 작업 규약은 `CLAUDE.md`.