- C# 68.2%
- TypeScript 22%
- CSS 7.5%
- Shell 1%
- Dockerfile 0.5%
- Other 0.8%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .config | ||
| .forgejo/workflows | ||
| client | ||
| deploy | ||
| docs/adr | ||
| src/FamilyGoals.Web | ||
| tests | ||
| .dockerignore | ||
| .gitignore | ||
| CONTEXT.md | ||
| Directory.Build.props | ||
| Dockerfile | ||
| Dockerfile.runtime | ||
| FamilyGoals.slnx | ||
| global.json | ||
| README.md | ||
우리집 도전판
세 가족 구성원이 주간 목표를 세우고, 일별 실천을 스탬프로 기록하며, 부모의 교차 승인 뒤 포인트를 적립·사용하는 가족용 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 chartdeploy/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 백업 역할에 허용한다.