2620227 6c2bb888b4 feat: 프로필 사진 업로드·프로필 페이지 + 모달/이름 개선
- 프로필 페이지 /u/:sabun 신설 (본인=비공개 포함, 타인=공개만).
  헤더 "내 프로필", 카드·모달·댓글 작성자 클릭 시 프로필로 이동.
- 프로필 사진 업로드: users.avatar(bytea) 저장, GET /avatar/:sabun
  (업로드본 없으면 identicon SVG 폴백), POST /profile/avatar(express.raw).
  브라우저 canvas 크롭(256px webp) — 서버 이미지 라이브러리/멀터 불필요.
  identicon 6개 렌더 지점을 avatar() 헬퍼로 통일.
- 상세 모달 폭 640→760px, 소유자 액션(비공개 전환·삭제)을 우측 그룹으로
  묶어 한 줄 정렬.
- 표시 이름을 한국식 성+이름(family_name+given_name)으로 교정.
- .project-env.example ADMIN_ROLE→ADMIN_GROUP 정리.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 15:45:47 +09:00
2026-06-22 16:16:40 +09:00
2026-06-22 16:16:40 +09:00
2026-06-22 16:16:40 +09:00

AI DEV — 사내 개발 포털

직원이 한 곳에서 사내 개발 사이트로 이동하고, 만든 프로젝트를 공유·코멘트하는 포털. GitHub 감성 UI. Keycloak SSO(사번 로그인). Node(Express+EJS) + Postgres.

브랜드명 AI DEVPORTAL_BRAND 환경변수로 바꿀 수 있습니다.

기능

  • Keycloak OIDC 로그인 (realm bokdev, client portal, 사번 = preferred_username)
  • 개발 사이트 모음 — 개발 핵심(Coder/Gitea/Kubero/Harbor) + AI·데이터(LiteLLM/Chat/OpenEverest/MinIO). 목록은 src/sites.js.
  • 프로젝트 공유 — repo/앱 URL·설명·태그
  • 코멘트 / 스타

로컬 실행

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 installnode 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-6oxappdb, schema portal, role portal_app.
  • Issuer: https://keycloak.bokdev.in/realms/bokdev

자세한 작업 규약은 CLAUDE.md.

Description
AI DEV portal (Express+EJS+Postgres, Keycloak SSO)
Readme 698 KiB
Languages
JavaScript 43.7%
HTML 27.9%
CSS 15.4%
EJS 12.8%
Dockerfile 0.2%