vekâlet hukuk büro yönetimi
LAW FIRM MANAGEMENT SYSTEM

Solo lawyer,
small firm.
One panel, zero bloat.

A modern CRM/ERP demo for solo attorneys and small Turkish law firms. Clients, cases, events, invoicing, document storage — Rust + React + SQLite.

MIT · React 18 · Rust + Axum · SQLite · Self-hosted

modules

  • Clients TR national ID, tax number, contacts, and the case list bound to each client.
  • Cases Case type, court, file number, parties, status, and an event calendar.
  • Events Hearings, meetings, notifications — calendar + reminder flow.
  • Documents Local disk storage (`storage/<firm_id>/<id>_<name>`); Bearer token on download.
  • Invoicing Line items, VAT, payment tracking, PDF generation.
  • Auth Argon2 + sessions table — simple, no external IdP required.

architecture

  1. 1
    Frontend React 18 + Vite + TypeScript + Tailwind 4 + @tanstack/react-query — single-page app.
  2. 2
    Backend Rust 2021 + Axum 0.7 + sqlx + Tokio — single static binary, runs as a system service.
  3. 3
    Data SQLite (file-based, WAL). First run applies migrations and seeds demo data.
  4. 4
    Documents Local disk, multi-firm isolation — each firm sees only its own storage prefix.

design

  • Self-hosted For privacy and attorney–client confidentiality, runs on-prem or on your own VPS.
  • Single static binary Cargo release build → one file. No runtime deps, drop into systemd.
  • Multi-firm One backend, many firm_id rows — each firm sees only its own clients and documents.
  • Modern UI Tailwind 4 + radix/shadcn-style components — desktop ergonomic, keyboard-first.
  • Demo seed First run plants a sample firm, users, clients, cases, invoices — no empty state.
  • Audit log Auth sessions and critical tables track who-changed-what-when in a log table.

install (local)

Vekâlet is a full-stack local app — Rust backend, React frontend. Run both on your own VPS or machine.

1. Backend

cd backend
cp .env.example .env
cargo run
# http://localhost:4040

2. Frontend

cd frontend
bun install   # or pnpm / npm
bun run dev   # http://localhost:5173
© 2026 Lavescar · SvelteKit + Cloudflare Pages