No description
  • C# 68.2%
  • TypeScript 22%
  • CSS 7.5%
  • Shell 1%
  • Dockerfile 0.5%
  • Other 0.8%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
정수용 ced5a3b080
All checks were successful
build-test-package / verify (push) Successful in 3m33s
build-test-package / container-package-check (push) Successful in 3m43s
test: expect explicit stamp intent
2026-09-01 21:37:17 +09:00
.config feat: build family goals service 2026-08-27 14:12:32 +09:00
.forgejo/workflows ci: harden container delivery boundary 2026-08-27 15:04:48 +09:00
client test: expect explicit stamp intent 2026-09-01 21:37:17 +09:00
deploy Reduce production health and database logs 2026-08-31 22:52:43 +09:00
docs/adr fix: make family interactions forgiving 2026-09-01 21:28:10 +09:00
src/FamilyGoals.Web fix: make family interactions forgiving 2026-09-01 21:28:10 +09:00
tests fix: make family interactions forgiving 2026-09-01 21:28:10 +09:00
.dockerignore fix: include publish output in runtime image 2026-08-27 14:37:02 +09:00
.gitignore feat: build family goals service 2026-08-27 14:12:32 +09:00
CONTEXT.md docs: define family goals domain and architecture 2026-08-27 12:53:13 +09:00
Directory.Build.props feat: build family goals service 2026-08-27 14:12:32 +09:00
Dockerfile fix: include PostgreSQL GSS runtime library 2026-08-27 15:47:25 +09:00
Dockerfile.runtime fix: make production browser checks deterministic 2026-08-27 15:57:40 +09:00
FamilyGoals.slnx feat: build family goals service 2026-08-27 14:12:32 +09:00
global.json feat: build family goals service 2026-08-27 14:12:32 +09:00
README.md fix: make production backup restorable 2026-08-27 15:22:53 +09:00

우리집 도전판

세 가족 구성원이 주간 목표를 세우고, 일별 실천을 스탬프로 기록하며, 부모의 교차 승인 뒤 포인트를 적립·사용하는 가족용 PWA다. Android 휴대폰과 iPad의 홈 화면 설치를 지원한다.

제품 용어와 확정 규칙은 CONTEXT.md, 주요 기술 선택은 docs/adr에 기록한다.

구성

  • src/FamilyGoals.Web: ASP.NET Core API, 정적 PWA 호스팅, EF Core 도메인 로직
  • client: React·TypeScript UI와 Android/iPad Playwright 여정
  • tests: 단위 테스트와 실제 PostgreSQL 기반 통합 테스트
  • deploy/helm/family-goals: 웹, migration, 주간 작업, 백업·복원 검증 Helm chart
  • deploy/backup: OCI Object Storage용 PostgreSQL 백업·복원 검증 이미지

로컬 실행

.NET 10 SDK, Node.js 24, Docker가 필요하다.

dotnet tool restore
dotnet restore FamilyGoals.slnx
npm ci --ignore-scripts --prefix client
npm run build --prefix client
dotnet run --project src/FamilyGoals.Web/FamilyGoals.Web.csproj

로컬 기본 PostgreSQL 연결은 src/FamilyGoals.Web/appsettings.json에 있으며, 실제 환경에서는 ConnectionStrings__FamilyGoals와 Bootstrap__Code를 환경 변수 또는 Secret으로 주입한다.

검증

dotnet build FamilyGoals.slnx --configuration Release --no-restore
dotnet test tests/FamilyGoals.UnitTests/FamilyGoals.UnitTests.csproj --configuration Release --no-build
dotnet test tests/FamilyGoals.IntegrationTests/FamilyGoals.IntegrationTests.csproj --configuration Release --no-build
npm test --prefix client
npm run test:e2e --prefix client
helm lint deploy/helm/family-goals

통합 테스트는 Testcontainers로 격리된 PostgreSQL을 시작한다. 브라우저 테스트는 Chromium(Android)과 WebKit(iPad)을 모두 실행한다.

운영 경계

운영 배포는 hanmadang-infra 저장소가 관리한다. 이미지는 커밋 SHA로 고정하고 Argo CD PreSync migration을 통과한 뒤 배포한다. 평문 연결 문자열, bootstrap 코드, 접근 키, 복구 코드, PIN은 이 저장소에 넣지 않는다.

백업은 전용 private/versioned OCI bucket에 매일 생성하며, 월 1회 임시 데이터베이스 복원 검증을 수행한다. 운영 시작 전에는 readiness·TLS·외부 blackbox·메트릭·로그·알림과 실제 백업 복원을 확인해야 한다.

운영 DB 역할을 만든 뒤에는 database owner 또는 관리자로 deploy/postgres/backup-permissions.sql을 적용한다. 이 스크립트는 family_goals 데이터 테이블과 public의 EF migration 이력 테이블만 read-only 백업 역할에 허용한다.