Oracle3
Oracle3: 예측시장 거래 엔진·MCP 서버
모바일 우선 앱으로 동거인 간 비용을 관리, 지출 유형별 맞춤 분할·실시간 잔액·AI 보조 정산
App mobile-first per gestire le spese condivise tra conviventi: divisione personalizzabile per ogni tipologia di spesa, saldo sempre aggiornato, conguaglio guidato e un assistente IA che capisce le tu
금융TypeScript · JavaScriptGitHub @andreamontanaro온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기App per la gestione della divisione spese famigliare
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Mobile-first web app for transparently managing household expenses between two cohabiting partners. Every expense entered is shared by definition: 50/50 for rent, 60/40 for everything else (the partner with the higher income pays 60%). The app always shows the current balance and lets you settle it in one tap.README 전문 보기 ↗Mobile-first web app for transparently managing household expenses between two cohabiting partners. Every expense entered is shared by definition: 50/50 for rent, 60/40 for everything else (the partner with the higher income pays 60%). The app always shows the current balance and lets you settle it in one tap.
It also keeps a shopping list — what's missing at home, by product type, quantity and urgency — with a receipt check that reads a photo of a receipt, ticks off what was bought and highlights what's still missing. The list can be managed from the app, from the AI assistant, or straight from the Telegram group.
For a full guide to the architecture, domain models, and patterns used in the project, see the Developer Wiki (in Italian).
@google/genai) for the AI assistantnpm install
The database schema (tables, views, RPCs, RLS) is defined in docs/casa_nostra_schema.sql, which is the authoritative source of truth for the applied schema.
docs/casa_nostra_schema.sql. (On an existing project, apply only the migrations from docs/migrations/ that it doesn't have yet.)public.profiles, following the example in section 9 (BOOTSTRAP dei due profili) at the end of the SQL script.Create a .env.local file in the project root (ignored by Git) with the following variables. Each one is documented in detail in docs/wiki/06-configuration.md.
# Supabase — Project Settings → API
NEXT_PUBLIC_SUPABASE_URL=https://<your-project>.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=<your-project-anon-key>
# Google Gemini — AI assistant (route /api/assistant)
GEMINI_API_KEY=<your-google-ai-studio-api-key>
# Optional — default: gemini-flash-lite-latest
GEMINI_MODEL=gemini-flash-lite-latest
# Telegram — optional: group notifications and in-chat assistant
# Full walkthrough: docs/telegram-setup.md
TELEGRAM_BOT_TOKEN=<token-from-botfather>
TELEGRAM_CHAT_ID=<group-chat-id>
TELEGRAM_WEBHOOK_SECRET=<random-string>
TELEGRAM_BOT_USERNAME=<bot-username-without-@>
SUPABASE_SERVICE_ROLE_KEY=<your-project-service-role-key>
NEXT_PUBLIC_SITE_URL=https://<your-app>.vercel.app
| Variable | Required | Scope | Description |
|---|---|---|---|
NEXT_PUBLIC_SUPABASE_URL | Yes | Client + Server | API endpoint of the Supabase project |
NEXT_PUBLIC_SUPABASE_ANON_KEY | Yes | Client + Server | Supabase public "anon" key, enables RLS |
GEMINI_API_KEY | Yes | Server (secret) | Credential for calls to the Google Gemini API |
GEMINI_MODEL | No | Server | Gemini model to use (fallback: gemini-flash-lite-latest) |
TELEGRAM_BOT_TOKEN | For Telegram | Server (secret) | Bot token from @BotFather |
TELEGRAM_CHAT_ID | For Telegram | Server | Id of the group the bot posts to |
TELEGRAM_WEBHOOK_SECRET | For Telegram | Server (secret) | Shared secret verifying that updates really come from Telegram |
TELEGRAM_BOT_USERNAME | Recommended | Server | Bot username without @, used to detect mentions |
TELEGRAM_REPLY_MODE | No | Server | mention (default) or all — when the bot replies in the group |
SUPABASE_SERVICE_ROLE_KEY | For Telegram | Server (secret) | Lets the webhook read/write without a user session (bypasses RLS) |
NEXT_PUBLIC_SITE_URL | Recommended | Client + Server | Public app URL, used for links inside Telegram messages |
Leaving the Telegram variables unset simply keeps the integration off: the app behaves exactly as before.
npm run dev
Open http://localhost:3000. You'll be redirected to /login: sign in with one of the two accounts created in step 2.
npm run dev # development server (Turbopack)
npm run build # production build
npm run start # start the production build
npm run lint # lint the code (ESLint)
npm run telegram:setup -- chats # list chat ids that messaged the bot
npm run telegram:setup -- set https://<your-app>.vercel.app # register the bot webhook
npm run telegram:setup -- info # inspect webhook status
npm run telegram:setup -- delete # remove the webhook
On Windows, scripts/telegram-setup.ps1 walks through the whole Telegram setup in order — group id, secret, env vars to paste, deploy check, webhook registration — and reports which of the four failure causes it hit if the app isn't answering as it should:
.\scripts\telegram-setup.ps1 -AppUrl https://<your-app>
.\scripts\telegram-setup.ps1 -Info # webhook status and last error
.\scripts\telegram-setup.ps1 -RemoveWebhook
The reference deployment target is Vercel:
See the Next.js deployment documentation for further details.
docs/wiki/00-index.md — Developer Wiki (architecture, models, services, API, patterns) — in Italiandocs/casa_nostra_schema.sql — applied Supabase schemadocs/telegram-setup.md — Telegram bot setup (notifications, in-chat assistant, receipt checks)docs/migrations/ — incremental SQL migrations, in the order they were applieddocs/Casa_Nostra_Requisiti_MVP.docx — full functional requirements — in ItalianAGENTS.md — project conventions and development briefing — in Italian