Oracle3
Oracle3: 예측시장 거래 엔진·MCP 서버
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기가족이 함께 쓰는 가계부 웹앱. 달력 홈, 예산 알림, 반복 지출, 분석, 외부 에이전트용 API 토큰 (Next.js 16 · Spring Boot 4)
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
가족이 함께 수입과 지출을 기록하고, 월 예산을 관리하는 가계부 웹앱이다. 직접 쓰려고 만들었고 홈서버에서 운영한다. • 서비스: https://accountbook.fosworld.co.kr • 프론트엔드와 백엔드를 한 저장소에 둔다(ADR-M01). 도구 버전은 .tool-versions 가 정한다(Node 22, pnpm 10, Java 21). • gradle-wrapper.jar 는 추적하지 않는다. 없으면 CLAUDE.md 의 명령으로 만든다. • 프론트엔드 환경 변수는 frontend/README.md 에 있다. • 프론트엔드와 백엔드의 AUTH_SECRET 은 같은 값이어야 한다. 소셜 로그인 결과를 이 값으로 서명해 백엔드에 넘긴다. 커밋 전에 바뀐 쪽의 검증을 로컬에서 통과시킨다.README 전문 보기 ↗
가족이 함께 수입과 지출을 기록하고, 월 예산을 관리하는 가계부 웹앱이다. 직접 쓰려고 만들었고 홈서버에서 운영한다.
| 기능 | 내용 |
|---|---|
| 로그인 | Google, Naver 소셜 로그인 |
| 가족 | 가족 생성, 초대 링크 발급과 수락, 기본 가족 선택 |
| 달력 홈 | 날짜 칸마다 구성원별 지출을 보여 주고, 날짜를 골라 바로 등록·수정·삭제 |
| 거래 내역 | 지출과 수입의 등록·수정·삭제, 카테고리와 기간 필터 |
| 반복 지출 | 매월 정한 날에 지출을 자동으로 만든다 |
| 카테고리 | 가족별 카테고리, 색상과 아이콘, 예산 제외 설정 |
| 예산 | 월 예산과 진행률, 50·80·100% 도달 알림 |
| 할부 | 할부를 기록하고 회차와 남은 금액을 본다. 예산에는 넣지 않는다 |
| 분석 | 월별 지출 추이, 카테고리별 비중과 전월 대비 변동 |
| 알림 센터 | 예산 알림과 반복 지출 생성 알림, 읽음 처리 |
| 외부 연동 토큰 | AI 에이전트 같은 외부 도구가 가계부 API 를 부를 수 있게 사용자별 토큰을 발급하고 폐기한다 |
flowchart LR
U[브라우저] --> F[frontend<br/>Next.js 16]
F -- Server Action / ky --> B[backend<br/>Spring Boot 4]
A[외부 에이전트] -- fab_ 토큰 --> B
B --> D[(MySQL 8.4)]
| 디렉터리 | 내용 | 기술 |
|---|---|---|
frontend/ | 웹 화면과 Server Action | Next.js 16, React 19, TypeScript, Tailwind CSS v4, shadcn/ui, NextAuth v5 |
backend/ | REST API (/api/v1) | Java 21, Spring Boot 4, Spring Data JPA, QueryDSL, Flyway, MySQL 8.4 |
docs/ | 저장소 전체 결정 (ADR-M) |
도구 버전은 .tool-versions 가 정한다(Node 24, pnpm 10, Java 21).
# 1. MySQL (호스트 포트 13306)
docker compose -f backend/docker/compose.yml up -d
# 2. 백엔드 (http://localhost:8080)
cd backend && ./gradlew bootRun --args='--spring.profiles.active=local'
# 3. 프론트엔드 (http://localhost:3000)
cd frontend && pnpm install && pnpm dev
gradle-wrapper.jar 는 추적하지 않는다. 없으면 CLAUDE.md 의 명령으로 만든다.frontend/README.md 에 있다.AUTH_SECRET 은 같은 값이어야 한다. 소셜 로그인 결과를 이 값으로 서명해 백엔드에 넘긴다.커밋 전에 바뀐 쪽의 검증을 로컬에서 통과시킨다.
cd frontend && pnpm lint && pnpm test
cd backend && ./gradlew qualityCheck test
| 워크플로 | 하는 일 |
|---|---|
frontend-ci.yml, backend-ci.yml | PR 과 main push 마다 타입 검사, lint, 테스트 |
docs-ci.yml | 문서가 바뀐 PR 에서 ADR 링크 검사 |
claude-code-review.yml | PR 자동 코드 리뷰. 재실행은 /review 댓글 |
frontend-image.yml, backend-image.yml | main 에 머지되면 이미지를 ghcr.io/jon890/fos-accountbook-{frontend,backend} 로 올린다 |
홈서버는 올라간 이미지를 받아 실행한다. DB 스키마는 백엔드가 시작할 때 Flyway 가 적용한다.
type(scope): 설명 형식이고, 커밋은 한국어로 쓴다.| 문서 | 내용 |
|---|---|
| docs/adr/INDEX.md | 저장소 전체 결정 (ADR-M) |
| frontend/docs/ | 프론트엔드 요구사항, 흐름, 구조, 결정 (ADR-F) |
| backend/docs/ | 백엔드 요구사항, 흐름, 스키마, 결정 (ADR-B) |