Oracle3
Oracle3: 예측시장 거래 엔진·MCP 서버
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
예산 계획 기능이 있는 가계부 앱
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
서버 없이 같은 브라우저에서 연결되는 예산 앱과 목표형 위시리스트. 설치되는 앱은 하나이고 그 안에 화면 묶음이 둘이다. • Orbit Budget (/) — 항목별 예산, 거래, 남은 자유비용 • Orbit Wish (/wish/) — 자유비용을 모아 위시를 이루는 목표 관리. 오르빗 허브·퀘스트 로그·우주 도감·관측소 4화면. 관측소 하위 화면은 레벨 보상·꾸미기·상점(상자 포함)·설정README 전문 보기 ↗
서버 없이 같은 브라우저에서 연결되는 예산 앱과 목표형 위시리스트.
설치되는 앱은 하나이고 그 안에 화면 묶음이 둘이다.
/) — 항목별 예산, 거래, 남은 자유비용/wish/) — 자유비용을 모아 위시를 이루는 목표 관리. 오르빗 허브·퀘스트 로그·우주 도감·관측소 4화면. 관측소 하위 화면은 레벨 보상·꾸미기·상점(상자 포함)·설정예비비에서 사용 토글(카테고리 없음), 남은 예비비 표시, 예비비 0인 달은 잠김계산식 (packages/budget-core/src/budget.ts)
남은 자유비용 = 총수입 + 지난달 이월 − 전체 카테고리 월 예산 − 예산 밖·초과 지출 − 예비비 − 예비비 초과분 − 이번 달 위시 순저금
남은 예비비 = 예비비 − 예비비에서 쓴 지출
지난달 이월 = 그 달 수입 + 그 달이 받은 이월 − 그 달 지출 − 그 달 위시 순저금
카테고리 예산 안에서 쓴 금액은 자유비용에서 다시 차감하지 않는다. 하루 몫의 미사용액은 다음 날, 주간 몫의 미사용액은 다음 주에 자유비용으로 돌려주고 초과분은 즉시 차감한다. 예정 거래도 같은 기준으로 즉시 반영한다. 주간 몫은 월 경계에서 자르고 합계가 월 예산을 넘지 않게 배분한다.
예비비에서 쓴 지출은 예비비 안에서는 자유비용에 영향 없음. 예비비를 넘긴 금액만 자유비용에서 차감.
달이 끝나면 안 쓴 돈 전부가 다음 달 자유비용으로 이월한다 — 자유비용 잔액 · 안 쓴 카테고리 예산 · 안 쓴 예비비. 초과 지출한 달은 마이너스로 이월한다. 이월액은 달이 바뀔 때 한 번 계산해 저장하며, 다음 달 이월은 지난달 한 달치만 읽어 만든다. 시작은 앱을 처음 연 달이고 그 이전 기록은 이월에 넣지 않는다. 지난달 거래를 뒤늦게 넣거나 고치면 반영되지만, 그보다 이전 달을 고치면 반영되지 않는다. 위시에 모아 둔 돈은 아직 묶인 돈이라 이월에서 제외한다. 화면에 이월 줄은 따로 없고 남은 자유비용 숫자에 들어간다.
총수입에는 예정 수입도 들어간다. 설정에서 끄면 실제로 들어온 수입만 센다 (예정 지출은 설정과 무관하게 늘 차감).
위시 구매 지출은 저금 단계에서 이미 자유비용이 줄었으므로 자유비용 계산에서 제외한다. 거래 내역과 선택한 카테고리 통계에는 그대로 남는다.
npm install
npm run dev # 두 앱을 같은 origin에서 실행
npm run dev:orbit # Orbit만 실행
npm run dev:wish # Wish만 실행
npm run build # Orbit, Wish 타입 검사 + 빌드
npm run verify # 계산 로직 검산
통합 개발 서버 경로: http://localhost:5173/apps/orbit/, http://localhost:5173/apps/wish/
프로덕션 결과물: dist/(Orbit, 도메인 루트) + dist/wish/(Wish)
빌드 순서 주의 — Wish가 먼저 dist/wish를 채우고, 그 다음 Orbit이 dist를 채우면서 wish/**까지 서비스 워커 프리캐시에 담는다. npm run build가 그 순서(clean → wish → orbit)다. 순서를 바꾸거나 하나만 돌리면 오프라인 캐시가 어긋난다.
Vercel 프로젝트 하나. 설정은 vercel.json에 고정되어 있어 대시보드 값과 무관하다.
| 항목 | 값 |
|---|---|
| Build Command | npm run build |
| Output Directory | dist |
| Root Directory | 저장소 루트 |
| 예산 | / |
| 위시 | /wish/ |
iOS는 홈 화면 앱마다 저장소 컨테이너를 나눈다. 같은 도메인이어도 아이콘을 두 개 만들면 위시가 예산 데이터를 읽지 못한다(기기에서 확인함). 브라우저 탭에서는 공유되지만 홈 화면 앱끼리는 아니다.
그래서 manifest와 서비스 워커는 apps/orbit 하나뿐이고 위시 결과물까지 그 워커가 캐시한다. 홈 화면 아이콘 하나 안에서 두 화면을 오간다.
id: '/'를 바꾸지 말 것. 바꾸면 이미 설치된 앱이 다른 앱으로 인식되어 업데이트되지 않고 아이콘이 하나 더 생긴다apps/wish의 서비스 워커는 자폭 전용이다. 이전 배포에서 /wish/ 스코프에 설치된 워커를 해지시킨다. 기기가 한 번씩 열어 정리되면 그 플러그인은 빼도 된다apps/wish/src/lib/budget.ts의 어댑터만 서버 조회로 바꾸면 된다/)·start_url·manifest id를 바꾸면 이미 설치된 홈 화면 앱이 다른 앱으로 인식된다계좌 연동, 클라우드 동기화·로그인, 차트 라이브러리(분석 막대는 CSS만), 다중 통화