OpenChart
Claude·Codex와 함께하는 무료 데스크톱 차트 도구. 알림 설정·차트 움직임 분석·데이터 제공자 선택
KasbBook 스마트 비즈니스 재무 관리자로 수입·지출·저축을 손쉽게 관리합니다
📊 KasbBook – Smart Business Finance Manager Manage your income, expenses & savings easily. Daily, monthly & yearly financial reports in Telegram. ⭐️ Open Source: github.com/Emadhabibnia1385/KasbBook
금융Python · ShellGitHub @Emadhabibnia1385온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기KasbBook is an open-source project and Telegram bot for managing income, expenses and financial reports for small businesses.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Bookkeeping for a small business, wherever that business already talks.
Type فروش 250ک, say whether it is income or expense, and it is recorded. The
same account works from Telegram, Bale and Rubika, and over an HTTP API. Money
is exact, the calendar is Jalali, and every transaction has a balanced journal
entry behind it.
English · فارسی
Install · Quick entry · Architecture · API · Development
A self-hosted bookkeeping bot for shopkeepers, freelancers and small teams. Nothing to install on a phone, nothing to memorise: one line of text or a few buttons, in the messenger people already have open.
It is also an API-first application. The bot is one client of the same services the HTTP API exposes, which is why a permission cannot be enforced in one place and forgotten in the other.
This is a beta. It runs in production for its author and its tests are thorough, but it has not been run by many people on many books yet. Take backups —
scripts/backup.shdoes it for you — and read docs/roadmap.md for what is deliberately not built.
One command on a fresh Debian or Ubuntu box:
curl -fsSL https://raw.githubusercontent.com/Emadhabibnia1385/KasbBook/main/scripts/install.sh | sudo bash
It checks the Python version, clones the code, starts PostgreSQL and Redis in containers, generates the credentials it can generate, asks only for a bot token, creates the schema, installs both services and then checks they actually came up. Running it twice is safe.
| Update | sudo /opt/kasbbook/scripts/update.sh |
| Back up | sudo /opt/kasbbook/scripts/backup.sh |
| Restore | sudo /opt/kasbbook/scripts/restore.sh <file> |
| Remove | sudo /opt/kasbbook/scripts/uninstall.sh |
The update script takes a backup, runs the tests, migrates, restarts, and rolls itself back if the new version does not come up clean. See docs/operations.md.
A typed line and one tap, instead of a walk through menus.
فروش 250ک → "فروش", 250,000, today
اجاره 1.2م بابت مرداد → "اجاره", 1,200,000, note "بابت مرداد"
دیروز خرید 125000 → "خرید", 125,000, dated yesterday
The category leads and the amount splits the line, so whatever follows it is
the note; a date may sit before the category. Digits in either script, ک for
thousand and م for million whether glued to the number or standing beside it,
Jalali dates with any separator. One tap then says income or expense, because
the one thing a category cannot settle is the direction.
Anything ambiguous is asked about rather than guessed — and the failure worth guarding against is the silent kind, where a dropped thousand-fold multiplier books 250,000 as 250. Every form the line may take has a test pinning what it means. The screens behind it are laid out in docs/conversation-design.md.
| Books | personal, business, team, organization — one account, many books |
| Ledger | every transaction mirrored by a balanced double-entry journal |
| Multi-currency | rate captured at the moment of the transaction, never re-applied later |
| Reports | by month, year, week or category, in Jalali; CSV export |
| Budgets | a ceiling per category or per direction, with what is left |
| Debts | who owes whom, settled into a real transaction |
| Loans | instalments, what is paid, what is next |
| Recurring | rent and salary defined once, booked when due |
| Payroll | periods, member shares, bonuses and deductions, payslips, staged payment |
| Treasury | funds fed by rules, taken before profit is shared |
| Reminders | a daily digest at an hour you choose, in your own timezone |
| Receipts | a photo or a PDF, stored by reference on the messenger, never re-uploaded |
| Search | across categories and descriptions, with the total of every match |
| Accounts | email, phone, password, sessions — and deletion that keeps the ledger provable |
| Sharing | invite colleagues by email or phone, with roles and per-action permissions |
| API | the same services the bot uses, with rotating tokens and API keys |
Telegram Bale Rubika
│ │ │
└─────── adapters ─────┘ translate payloads, nothing else
│
┌─────────────┴─────────────┐
│ conversation │ screens + routing, messenger-agnostic
└─────────────┬─────────────┘
│
HTTP API ──────────────► application services ◄── every rule lives here, once
│
domain models · ledger
│
PostgreSQL · Redis · Alembic
Two clients, one set of rules. An adapter never touches the database — a test walks the import graph and fails the build if one tries. See docs/architecture.md.
curl -X POST http://127.0.0.1:8210/api/v1/auth/login \
-H 'Content-Type: application/json' \
-d '{"identifier":"[email protected]","password":"..."}'
Interactive documentation at /docs — the reference deployment is at
https://kasbbook.nyxon.tech/docs. Short-lived access tokens, rotating refresh tokens with theft
detection, API keys for programs, and rate limiting on the routes that need it.
Money crosses the boundary as a string, never a JSON number. JSON has one
numeric type and it is a float; 12500000.15 does not survive that round trip,
and a bookkeeping API that loses rials is not a bookkeeping API.
See docs/api.md.
git clone https://github.com/Emadhabibnia1385/KasbBook.git
cd KasbBook && python3 -m venv venv
./venv/bin/pip install -r requirements-dev.txt
./venv/bin/python -m pytest tests -q
The suite runs on SQLite with no network and no token: a checkout and the dev
requirements are the whole setup. The migration tests additionally rehearse
against a real PostgreSQL when KASBBOOK_TEST_POSTGRES_URL is set, which is
what CI does, because that is where the interesting failures live.
See docs/development.md.
| Getting started | install, first run, first book |
| Architecture | the layers and why they are where they are |
| Configuration | every environment variable |
| Data model | accounts, identities, books, permissions |
| Double-entry | how the ledger stays balanced |
| Payroll & treasury | periods, shares, funds, payslips |
| Conversation design | the bot's vocabulary, its keyboards, what a tap costs |
| Providers | Telegram, Bale, Rubika, and adding one |
| The API | endpoints, auth, conventions |
| Security | tokens, hashing, what is stored and what is not |
| Operations | deploy, back up, restore, roll back |
The same pages are published as a site — searchable, and in Persian as well:
| 🇬🇧 English | https://emadhabibnia1385.github.io/KasbBook/ |
| 🇮🇷 فارسی | https://emadhabibnia1385.github.io/KasbBook/fa/ |
MIT. See LICENSE.
| Development | tests, migrations, conventions |
| Troubleshooting | real failures and what caused them |
| Roadmap | what is deliberately not built yet |