https://github.com/kisaesdevlab/vibe-tax-research-chat
https://github.com/kisaesdevlab/vibe-tax-research-chat
Last synced: 13 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/kisaesdevlab/vibe-tax-research-chat
- Owner: KisaesDevLab
- License: other
- Created: 2026-04-28T01:54:34.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2026-05-05T21:45:45.000Z (about 2 months ago)
- Last Synced: 2026-05-05T23:28:12.358Z (about 2 months ago)
- Language: TypeScript
- Size: 576 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Vibe Tax Research Chat
> Self-hosted, single-tenant AI chat appliance for U.S. CPAs. The firm owns its Anthropic API
> key, the chat history stays on the firm's hardware, and every turn shows actual token cost,
> verified primary-source citations, and SSTS / Circular 230 disclosures.
**Status:** scaffolding pass. See `BUILD_PLAN.md` for the v1.0.0 spec and `QUESTIONS.md` for the
applied defaults during the build.
**License:** BSL 1.1 with 4-year change to Apache 2.0. See `LICENSE`.
## Quick start (dev)
```bash
# 1. Tooling: Node 24, pnpm 9, Docker.
node --version # >= 24.0.0
pnpm --version # >= 9.0.0
docker --version
# 2. Clone + install.
pnpm install
# 3. Generate secrets and copy env.
cp .env.example .env
# fill MASTER_KEY (openssl rand -hex 32)
# fill JWT_SECRET, JWT_REFRESH_SECRET (openssl rand -hex 64 each)
# set SEED_ADMIN_EMAIL / SEED_ADMIN_PASSWORD
# 4. Start Postgres + Redis.
docker compose up -d postgres redis
# 5. Migrate + seed the DB.
pnpm db:migrate
pnpm db:seed
# 6. Start api and web in dev mode.
pnpm dev
# api → http://localhost:4000
# web → http://localhost:5173
```
Log in with the seeded admin credentials, then go to **Admin → Settings** to add your Anthropic
API key and pick a default model.
## Production install (single-box appliance)
```bash
git clone https://github.com/KisaesDevLab/Vibe-Tax-Research-Chat
cd Vibe-Tax-Research-Chat
cp .env.example .env # set secrets
docker compose -f docker-compose.prod.yml up -d
# Open http:///setup for the first-run wizard.
```
Full install guide: `docs/install.md`.
## Architecture (one-page)
| Layer | Choice |
| ------------- | -------------------------------------------------------------------------------- |
| Frontend | React 18 + TypeScript + Vite + Tailwind + TanStack Query + Zustand |
| Backend | Node 24 + Express + TypeScript + Pino |
| ORM / DB | Drizzle ORM + PostgreSQL 16 |
| Cache / queue | Redis 7 + BullMQ |
| AI | `@anthropic-ai/sdk` with `code-execution-2025-08-25` + `skills-2025-10-02` betas |
| Streaming | Server-Sent Events from Express → React |
| Editor | Monaco (skill authoring + diff viewing) |
| Distribution | Docker Compose appliance |
See `BUILD_PLAN.md §3` for the full architecture, `BUILD_PLAN.md §4` for the data model,
and `CLAUDE.md` for the running architecture log.
## Documentation
- `docs/install.md` — production install on Ubuntu 24.04 (NUC / mini-PC)
- `docs/admin-guide.md` — API key rotation, user lifecycle, backup/restore
- `docs/cost-model.md` — token costs → dollar costs (Opus 4.7 tokenizer caveat)
- `docs/skills-routing.md` — how the dispatcher chooses skills per turn
- `docs/web-resources.md` — domain allowlist + audit trail
## Repo conventions
- Conventional commits (commitlint enforced).
- TypeScript strict everywhere.
- pnpm workspaces; never run `npm` or `yarn` here.
- `pnpm test` runs Vitest across all packages.
- Append to `CLAUDE.md` whenever you change architecture; append to `QUESTIONS.md` whenever
you punt on a decision.
## Author
Kurt Kohrumel, CPA — Kisaes LLC.