Oracle3
Oracle3: 예측시장 거래 엔진·MCP 서버
제한 없이 비트코인·라이트닝 결제를 받으며, 비보관 BTCPay Server 관리 패널로 다중 매장·POS 단말·고급 분석을 지원합니다
Accept Bitcoin & Lightning payments without limits. Non-custodial BTCPay Server control panel with multi-store management, PoS terminals, and advanced analytics.
금융PHP · VueGitHub @webiumsk온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Multi-tenant control panel for BTCPay Server - manage stores, invoices, Lightning, and exports via a Vue SPA and Laravel (Greenfield API).
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
satflux.io - BTCPay control panel & business invoicing
Multi-tenant web app for merchants to run BTCPay Server stores and Pro business invoicing (companies, accounting documents, expenses) through a Vue SPA backed by Laravel and the Greenfield API.
Current app version: 2.0.0 (see package.json; /api/version reads the same value).README 전문 보기 ↗Website: satflux.io
Multi-tenant web app for merchants to run BTCPay Server stores and Pro business invoicing (companies, accounting documents, expenses) through a Vue SPA backed by Laravel and the Greenfield API.
Current app version: 2.0.0 (see package.json; /api/version reads the same value).
COMPLIANCE_SCREENING_ENABLED - see docs/OFAC_COMPLIANCE.md) for operators who accept fiat (e.g. Stripe to bank account) and need geo/list checksWhen VITE_INVOICING_LOCAL_FIRST=true and INVOICING_LOCAL_FIRST=true, core invoicing data lives in the browser (Evolu SQLite, E2EE). Optional relay sync via VITE_EVOLU_RELAY_URL. Server APIs remain for PDF render, e-mail, e-faktura, BTCPay bridges, and one-time import from server for legacy PostgreSQL data.
Rollout guide: docs/INVOICING_LOCAL_FIRST_ROLLOUT.md. Module overview: docs/BUSINESS_INVOICING.md.
| Layer | Stack |
|---|---|
| Backend | Laravel 12, PHP 8.3+, Sanctum (SPA cookie auth), PostgreSQL, Redis |
| HTTP client | Laravel HTTP / Greenfield-style integration with BTCPay |
| Frontend | Vue 3, TypeScript, Vite, Tailwind CSS, Pinia, Vue Router, vue-i18n (EN / SK / ES) |
| Local-first | Evolu (@evolu/vue, @evolu/web) for invoicing SQLite + E2EE relay sync |
| Hybrid UI | Inertia.js (@inertiajs/vue3) where used alongside the SPA |
| Realtime | Laravel Reverb (optional; see env / deployment) |
| Dev / prod | Docker Compose (docker-compose.yml) - nginx, php-fpm, postgres, redis |
package.json engines)Clone the repository
Environment file
cp .env.example .env
Configure .env - database, BTCPAY_BASE_URL, BTCPAY_API_KEY, webhooks, invoicing flags, etc. For local SPA auth over HTTP:
SANCTUM_STATEFUL_DOMAINS=localhost,localhost:8000,localhost:8080,127.0.0.1,127.0.0.1:8000,127.0.0.1:8080
SESSION_DOMAIN=
SESSION_SECURE_COOKIE=false
SESSION_SAME_SITE=lax
Local-first invoicing (optional): set VITE_INVOICING_LOCAL_FIRST=true, INVOICING_LOCAL_FIRST=true, and rebuild the frontend (npm run build).
Start containers
docker-compose up -d
PHP dependencies
docker-compose exec php composer install
Application key
docker-compose exec php php artisan key:generate
Migrations
docker-compose exec php php artisan migrate
Node dependencies
npm install
Frontend
npm run devnpm run buildAfter changing .env or config
docker-compose exec php php artisan optimize:clear
http://localhost:8080/apilocalhost:5432 (per compose mapping)localhost:6379 (per compose mapping)| Task | Command |
|---|---|
| Frontend dev server | npm run dev |
| Frontend production build | npm run build |
| ESLint (with fix) | npm run lint / npm run lint:fix |
| Frontend unit tests | npm run test |
| Semver bump | npm run version:patch / version:minor / version:major |
| PHPUnit | docker-compose exec php php artisan test |
| Single test | docker-compose exec php php artisan test --filter=TestName |
| PHP style (Pint) | docker-compose exec php vendor/bin/pint |
See docs/DEPLOYMENT.md for the standalone (Caddy + Docker Compose) guide. Typical expectations:
TrustProxies and correct forwarded headersAPP_URL, SESSION_DOMAIN, SESSION_SECURE_COOKIE=true, SANCTUM_STATEFUL_DOMAINS aligned with your real hostLNURL_AUTH_DOMAIN when LNURL-auth is enabledVITE_* flags at build time (./deploy.sh); runtime INVOICING_LOCAL_FIRST requires php artisan optimize:clear/api, withCredentials: true, CSRF via Sanctum) → Laravel API (routes/api.php, auth:sanctum) → controllers → services.stores ties a local UUID (used in URLs) to btcpay_store_id. btcpay_store_id must not be exposed to the frontend.app/Services/BtcPay and related config).More detail: docs/ARCHITECTURE.md.
wallet_type is not required yet.wallet_connections; BTCPay is updated by your automation/support flows as designed.wallet_type = cashu and settings (mint, Lightning address) are stored in BTCPay via the Cashu plugin. The UI exposes Cashu settlements under the store (?section=cashu): rows from the plugin's payments API (settlement state, retry where supported).wallet_type (Blink, Aqua/Boltz, Cashu).GET /api/stores/{store}/checklist or when wallet_type is first set) so older stores still get items.When LNURL_AUTH_ENABLED is configured, the app can offer Lightning-based login / linking flows (challenge, status polling, linking to an existing account). Email/password and seed-first auth remain available. See routes under /api/lnurl-auth/* and LnurlAuthController.
BTCPAY_WEBHOOK_SECRET is set.Reporting vulnerabilities: do not use public issues for undisclosed problems. See SECURITY.md for contact, scope, and (on GitHub) private vulnerability reporting.
Dependencies: .github/dependabot.yml configures Dependabot version updates; in the GitHub repo enable Dependabot alerts and Dependabot security updates under Settings → Code security and analysis.
The server-level BTCPAY_API_KEY should be limited to what provisioning and global jobs need (store lifecycle, admin assignments, webhooks, etc.). Per-merchant operations use merchant API keys stored encrypted and never sent to the browser.
docker-compose exec php php artisan test
npm run test
Feature tests often Http::fake() BTCPay Greenfield responses - see existing store / wallet / Cashu tests for patterns.
| Topic | Doc |
|---|---|
| Deployment | docs/DEPLOYMENT.md |
| Business invoicing | docs/BUSINESS_INVOICING.md |
| Local-first rollout | docs/INVOICING_LOCAL_FIRST_ROLLOUT.md |
| WooCommerce | docs/WOOCOMMERCE.md |
| Satoshi Tickets | docs/SATOSHI_TICKETS.md |
| Translations | docs/TRANSLATION.md |
MIT
Contributions are welcome: issues, pull requests, and translations. See docs/TRANSLATION.md and the locale files in resources/js/locales/ and lang/.