AI DEV portal 초기 커밋

Express+EJS+Postgres 사내 개발 포털.
- Keycloak OIDC(사번 로그인), GitHub 감성 UI
- 사이트 모음 + 프로젝트 공유/코멘트/스타
- DB: OpenEverest appdb portal schema (portal_app role)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
0310700
2026-06-22 16:16:40 +09:00
commit 9eb3fd1b4c
18 changed files with 1919 additions and 0 deletions

35
README.md Normal file
View File

@@ -0,0 +1,35 @@
# 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` (게이트웨이/라우트 별도 구성 필요) 또는 `<app>.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`.