About ITFactory365
기술로 사람과 해결책을 잇습니다.
잇(IT) 이용자
문제를 해결하고 싶은 사람들
필요한 도구와 컬렉션을 둘러보고 실제 생활과 업무에 적용합니다.
크레딧 구매를 통해 좋은 도구를 만든 크리에이터의 활동을 지원합니다.
잇(IT) 크리에이터
해결책을 만드는 사람들
직접 경험한 문제를 해결하기 위해 도구를 만드는 사람들입니다.
도구 공유, 크리에이터 패스, 정산 기준을 안내받고 활동합니다.
잇(IT) 팩토리
사람과 해결책을 잇는 곳
좋은 도구가 필요한 사람에게 전달될 수 있도록 연결합니다.
ITFactory365는 실용적인 도구가 모이는 도구 마켓입니다.
나만의 명함관리 프로그램 소스코드 입니다. 수정하여 최적화 후 사용하세요.
일반 사용자용 안내는 README.md, 백엔드 초기 설정은 GAS_SETUP_GUIDE.md를 참고하세요.
이 문서는 소스 수정·빌드·배포 산출물 생성을 위한 개발자용 안내입니다.
.gitignore 설정상 이 파일은 GitHub에 올라가지 않으며 로컬 개발 환경에서만 유지됩니다.
[ frontend (HTML/CSS/JS) ]
│
│ fetch POST → Apps Script Web App URL
▼
[ backend/Code.gs ]
├── Google Spreadsheet (명함 DB)
├── Google Drive (명함 이미지)
└── Cloud Vision API (OCR)
dist/index.html을 탑재한 APK.google-card-manager/
├── README.md # 사용자용 (GitHub 공개)
├── GAS_SETUP_GUIDE.md # GAS 설정 가이드 (GitHub 공개)
├── DEV_README.md # 이 문서 (로컬 전용)
├── package.json
├── capacitor.config.json
├── scripts/
│ ├── build-single-html.js # 단일 HTML 번들
│ └── build-apk.ps1 # APK 빌드 (JDK 21 자동 탐지)
├── dist/ # 배포 산출물 (GitHub 공개)
│ ├── index.html
│ └── card-manager.apk
├── frontend/ # 프론트엔드 소스 (로컬)
│ ├── index.html
│ ├── style.css
│ ├── app.js
│ └── 에이투지체-4Regular.ttf
├── backend/ # GAS 소스 (로컬)
│ └── Code.gs
└── android/ # Capacitor Android 프로젝트 (로컬)
| 작업 | 필요 환경 |
|---|---|
| HTML 빌드 | Node.js 18+ |
| APK 빌드 | Node.js + JDK 21 + Android SDK |
| 로컬 프론트 테스트 | 브라우저, GAS 웹 앱 URL |
| 백엔드 수정·배포 | Google 계정, Apps Script |
winget install Microsoft.OpenJDK.21
# Android SDK: cmdline-tools 설치 후 platform-tools, platforms;android-35, build-tools;35.0.0
환경 변수 (예시):
$env:JAVA_HOME = "C:\Program Files\Microsoft\jdk-21.0.11.10-hotspot"
$env:ANDROID_HOME = "$env:LOCALAPPDATA\Android\Sdk"
android/local.properties (최초 1회):
sdk.dir=C:/Users/<사용자>/AppData/Local/Android/Sdk
npm install
Capacitor Android 프로젝트가 없다면 (최초 1회):
npx cap add android
이미 android/ 폴더가 있으면 생략합니다.
편집 대상:
frontend/index.html — UI 마크업frontend/style.css — 스타일, @font-facefrontend/app.js — API 연동, OCR UI, 검색 등로컬에서 빠르게 확인하려면 frontend/ 세 파일을 그대로 브라우저로 열어도 됩니다.
(단, Lucide CDN·폰트 파일 경로 때문에 배포와 동일한 환경을 보려면 dist/index.html 빌드 후 확인하는 것이 정확합니다.)
backend/Code.gs 내용을 스프레드시트 Apps Script 편집기에 붙여넣고 새 배포합니다.
프론트엔드는 GAS 웹 앱 URL만 알면 되므로, 백엔드만 바뀌는 경우 HTML/APK 재빌드는 필요 없을 수 있습니다.
단일 HTML
npm run build
결과: dist/index.html (CSS·폰트·Lucide·app.js 인라인, 약 1.3MB)
Android APK
npm run android:debug
내부 동작: npm run build → cap sync android → Gradle assembleDebug → dist/card-manager.apk 복사
| 산출물 | 경로 |
|---|---|
| HTML | dist/index.html |
| APK (복사본) | dist/card-manager.apk |
| APK (Gradle 원본) | android/app/build/outputs/apk/debug/app-debug.apk |
.gitignore는 dist/, README.md, GAS_SETUP_GUIDE.md만 추적합니다.
git add README.md GAS_SETUP_GUIDE.md dist/
git commit -m "배포 산출물 갱신"
git push origin main
| 명령 | 설명 |
|---|---|
npm run build | scripts/build-single-html.js 실행 → dist/index.html |
npm run cap:sync | HTML 빌드 + Capacitor Android 동기화 |
npm run cap:open | Android Studio에서 android/ 열기 |
npm run android:debug | HTML 동기화 후 debug APK 빌드 |
build-single-html.js)frontend/style.css 읽기 → 에이투지체-4Regular.ttf를 Base64 data: URI로 인라인frontend/index.html body 추출 (외부 <link>, <script src> 제거)node_modules/lucide/dist/umd/lucide.min.js 인라인frontend/app.js 인라인dist/index.html 출력webDir: dist (capacitor.config.json)appId: com.cardmanager.appINTERNET, CAMERA, READ_MEDIA_IMAGES 등 (android/app/src/main/AndroidManifest.xml)invalid source release: 21 오류)scripts/build-apk.ps1이 Microsoft OpenJDK 21 경로를 자동 탐지합니다.| 증상 | 확인 사항 |
|---|---|
JAVA_HOME is not set | JDK 21 설치 및 JAVA_HOME 설정 |
invalid source release: 21 | JDK 17 대신 JDK 21 사용 |
SDK location not found | android/local.properties에 sdk.dir 설정 |
| HTML에서 API 통신 실패 | GAS 웹 앱 URL, 배포 권한(모든 사용자), CORS |
| APK에서 카메라 안 됨 | 앱 권한(카메라·갤러리) 허용 |
| README 한글 깨짐 (git) | rebase 시 PowerShell Set-Content로 UTF-8 변환 금지. git checkout <commit> -- README.md 사용 |
전체 실행 순서와 파일은 컬렉션 획득 후 확인할 수 있습니다.
도구 1개를 어떤 순서로 쓰는지 안내합니다.
프롬프트·템플릿 파일 0개가 포함될 수 있습니다.
참고 링크 0개를 함께 정리합니다.
확인 항목 0개로 누락을 줄입니다.
제이케이
@itsjk365