Skip to content

Commit 1367fc6

Browse files
authored
Merge branch 'main' into dependabot/npm_and_yarn/expo-5682086582
2 parents bdac9e0 + cf539c2 commit 1367fc6

24 files changed

Lines changed: 78 additions & 2964 deletions
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
name: Dependabot auto-merge
2+
3+
on: pull_request
4+
5+
permissions:
6+
contents: write
7+
pull-requests: write
8+
9+
jobs:
10+
auto-merge:
11+
if: github.event.pull_request.user.login == 'dependabot[bot]'
12+
runs-on: ubuntu-latest
13+
steps:
14+
- name: Fetch Dependabot metadata
15+
id: meta
16+
uses: dependabot/fetch-metadata@d7267f607e9d3fb96fc2fbe83e0af444713e90b7 # v2.3.0
17+
with:
18+
github-token: ${{ secrets.GITHUB_TOKEN }}
19+
20+
- name: Enable auto-merge for minor/patch updates
21+
if: |
22+
steps.meta.outputs.update-type == 'version-update:semver-patch' ||
23+
steps.meta.outputs.update-type == 'version-update:semver-minor'
24+
run: gh pr merge --auto --squash "$PR_URL"
25+
env:
26+
PR_URL: ${{ github.event.pull_request.html_url }}
27+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
28+
29+
- name: Label major updates for manual review
30+
if: steps.meta.outputs.update-type == 'version-update:semver-major'
31+
run: gh pr edit "$PR_URL" --add-label "dependencies,manual-review"
32+
env:
33+
PR_URL: ${{ github.event.pull_request.html_url }}
34+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
node_modules/
22
.expo/
33
dist/
4+
coverage/
45
*.jks
56
*.p8
67
*.p12

README.ko.md

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,8 @@ cd my-app && npm install && npx expo start
6969
├── docs/
7070
│ ├── EXPO_SETUP.md # Expo 계정 + EAS 설정
7171
│ ├── APP_STORE_SETUP.md # Apple Developer + App Store Connect
72-
│ └── PLAY_STORE_SETUP.md # Google Play Console 설정
72+
│ ├── PLAY_STORE_SETUP.md # Google Play Console 설정
73+
│ └── PRIVACY_MANIFEST.md # iOS PrivacyInfo.xcprivacy + Android 포토 피커 권한
7374
├── scripts/
7475
│ └── bump-version.js # app.json + package.json 버전 업
7576
├── eas-hooks/
@@ -108,6 +109,7 @@ cd my-app && npm install && npx expo start
108109
| CodeQL (`codeql.yml`) | 보안 취약점 정적 분석 (push/PR + 주간) |
109110
| Maintenance (`maintenance.yml`) | 주간 CI 헬스 체크 — 실패 시 이슈 자동 생성 |
110111
| Stale (`stale.yml`) | 비활성 이슈/PR 30일 후 라벨링, 7일 후 자동 종료 |
112+
| CHANGELOG (`update-changelog.yml`) | 머지된 PR 항목을 `CHANGELOG.md`에 자동으로 추가 |
111113

112114
### CD Android (Actions 탭에서 수동 실행)
113115

@@ -231,6 +233,20 @@ Google 로그인이 `expo-auth-session` + `expo-secure-store` 조합으로 **이
231233

232234
Expo는 TypeScript를 기본 지원합니다 -- 추가 설정 불필요.
233235

236+
## 설계 의도 (Design Intent)
237+
238+
- **클라우드 빌드 우선.** EAS가 기기 외부에서 네이티브 바이너리를 컴파일하므로, 로컬 Xcode/Android Studio 없이도 CI/CD가 동작합니다.
239+
- **라우트 그룹 기반 인증.** `app/(app)/`이 보호 영역입니다 — 화면마다 "인증 확인" 코드를 흩뿌리지 않습니다.
240+
- **OS 키체인에 시크릿 저장.** 토큰은 `expo-secure-store`를 통해 iOS Keychain / Android Keystore로 들어가며, `AsyncStorage`에는 절대 저장되지 않습니다.
241+
- **모든 push에서 lint·test·audit.** 공급망 하드닝(`--ignore-scripts`, pinned gitleaks, CodeQL)이 기본 활성화 — 사후 작업이 아닙니다.
242+
243+
## 비목표 (Non-Goals)
244+
245+
- **TypeScript 기본.** 템플릿을 가볍게 유지하기 위해 JS로 시작합니다. 위 안내에 따라 선택적으로 전환할 수 있습니다.
246+
- **커스텀 네이티브 모듈.** `expo prebuild` + 네이티브 코드가 필요한 경우는 범위 밖입니다. bare workflow를 사용하세요.
247+
- **백엔드.** 클라이언트만 포함됩니다. 별도 API 레포와 조합하세요.
248+
- **상태 관리 라이브러리.** Redux/Zustand 등을 포함하지 않습니다 — 인증 컨텍스트가 유일한 전역 상태입니다.
249+
234250
## 기여
235251

236252
PR 환영합니다. [PR 템플릿](.github/PULL_REQUEST_TEMPLATE.md)을 사용해 주세요.

README.md

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,8 @@ Then scan the QR code with Expo Go (or press `a` for Android / `i` for iOS).
6969
├── docs/
7070
│ ├── EXPO_SETUP.md # Expo account + EAS setup
7171
│ ├── APP_STORE_SETUP.md # Apple Developer + App Store Connect
72-
│ └── PLAY_STORE_SETUP.md # Google Play Console setup
72+
│ ├── PLAY_STORE_SETUP.md # Google Play Console setup
73+
│ └── PRIVACY_MANIFEST.md # iOS PrivacyInfo.xcprivacy + Android photo picker permission
7374
├── scripts/
7475
│ └── bump-version.js # Bumps version in app.json + package.json
7576
├── eas-hooks/
@@ -108,6 +109,7 @@ Then scan the QR code with Expo Go (or press `a` for Android / `i` for iOS).
108109
| CodeQL (`codeql.yml`) | Static analysis for security vulnerabilities (push/PR + weekly) |
109110
| Maintenance (`maintenance.yml`) | Weekly CI health check — auto-creates issue on failure |
110111
| Stale (`stale.yml`) | Labels inactive issues/PRs after 30 days, auto-closes after 7 more |
112+
| CHANGELOG (`update-changelog.yml`) | Appends merged-PR entries to `CHANGELOG.md` automatically |
111113

112114
### CD Android (manual trigger via Actions tab)
113115

@@ -231,6 +233,20 @@ This template uses JavaScript to stay lightweight. To add TypeScript:
231233

232234
Expo supports TypeScript out of the box -- no extra configuration needed.
233235

236+
## Design Intent
237+
238+
- **Cloud-native builds.** EAS compiles native binaries off-device so CI/CD runs without local Xcode or Android Studio.
239+
- **Auth gating via route groups.** `app/(app)/` is the protected zone — there is no "auth check" scattered across screens.
240+
- **Secrets in the OS keychain.** Tokens go to iOS Keychain / Android Keystore through `expo-secure-store`, never `AsyncStorage`.
241+
- **Lint, test, audit on every push.** Supply-chain hardening (`--ignore-scripts`, pinned gitleaks, CodeQL) is on by default — not an afterthought.
242+
243+
## Non-Goals
244+
245+
- **TypeScript by default.** Stays JS to keep the template small; opt-in steps are documented above.
246+
- **Custom native modules.** Anything requiring `expo prebuild` + native code is out of scope. Use a bare workflow if you need it.
247+
- **Backend.** This is the client only. Pair with a separate API repo.
248+
- **State management library.** No Redux/Zustand/etc. — the auth context is the only global state shipped.
249+
234250
## Contributing
235251

236252
PRs welcome. Please use the [PR template](.github/PULL_REQUEST_TEMPLATE.md).

coverage/clover.xml

Lines changed: 0 additions & 112 deletions
This file was deleted.

coverage/coverage-final.json

Lines changed: 0 additions & 6 deletions
This file was deleted.

0 commit comments

Comments
 (0)