{"data":{"slug":"vas3k-taxhacker","name":"TaxHacker","tagline":"Self-hosted AI accounting app. LLM analyzer for receipts, invoices, transactions with custom prompts and categories","github_url":"https://github.com/vas3k/TaxHacker","owner":"vas3k","repo":"TaxHacker","owner_avatar_url":"https://avatars.githubusercontent.com/u/176344?v=4","primary_language":"TypeScript","stars":6537,"forks":1074,"topics":["accounting","ai-analysis","currency-exchange","expenses","gemini","invoices","llm","ocr-recognition","ollama","openai","self-hosted","taxes"],"archived":false,"github_pushed_at":"2026-07-13T15:39:41+00:00","maintenance_label":"Very active","url":"https://www.graphcanon.com/tools/vas3k-taxhacker","markdown_url":"https://www.graphcanon.com/tools/vas3k-taxhacker.md","api_url":"https://www.graphcanon.com/api/graphcanon/tools/vas3k-taxhacker","graph_url":"https://www.graphcanon.com/api/graphcanon/graph?tool=vas3k-taxhacker","description":"Self-hosted AI accounting app. LLM analyzer for receipts, invoices, transactions with custom prompts and categories","homepage_url":"https://taxhacker.app","license":"MIT","open_issues":38,"watchers":53,"ai_summary":null,"readme_excerpt":"## 🛳 Deployment and Self-hosting\n\nTaxHacker can be easily self-hosted on your own infrastructure for complete control over your data and application environment. We provide a [Docker image](./Dockerfile) and [Docker Compose](./docker-compose.yml) setup that makes deployment simple:\n\n```bash\ncurl -O https://raw.githubusercontent.com/vas3k/TaxHacker/main/docker-compose.yml\n\ndocker compose up\n```\n\nThe Docker Compose setup includes:\n\n- TaxHacker application container\n- PostgreSQL 17+ database (or connect to your existing database)\n- Automatic database migrations on startup\n- Volume mounts for persistent data storage\n- Production-ready configuration\n- `no-new-privileges` security option on all containers\n\nNew Docker images are automatically built and published with every release. You can use specific version tags (e.g., `v1.0.0`) or `latest` for the most recent version.\n\nFor advanced setups, you can customize the Docker Compose configuration to fit your infrastructure. The default configuration uses the pre-built image from GitHub Container Registry, but you can also build locally using the provided [Dockerfile](./Dockerfile).\n\nExample custom configuration:\n\n```yaml\nservices:\n  app:\n    image: ghcr.io/vas3k/taxhacker:latest\n    ports:\n      - \"7331:7331\"\n    environment:\n      - SELF_HOSTED_MODE=true\n      - UPLOAD_PATH=/app/data/uploads\n      - DATABASE_URL=postgresql://postgres:postgres@localhost:5432/taxhacker\n    volumes:\n      - ./data:/app/data\n    restart: unless-stopped\n```\n\n---\n\n## 📄 License\n\nTaxHacker is licensed under the [MIT License](LICENSE).","github_created_at":"2025-03-10T13:25:27+00:00","created_at":"2026-07-15T11:03:33.750349+00:00","updated_at":"2026-07-15T11:03:36.933365+00:00","categories":[{"slug":"inference-serving","name":"Inference & Serving","url":"https://www.graphcanon.com/categories/inference-serving","markdown_url":"https://www.graphcanon.com/categories/inference-serving.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/inference-serving"},{"slug":"llm-frameworks","name":"LLM Frameworks","url":"https://www.graphcanon.com/categories/llm-frameworks","markdown_url":"https://www.graphcanon.com/categories/llm-frameworks.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/llm-frameworks"},{"slug":"speech-audio","name":"Speech & Audio","url":"https://www.graphcanon.com/categories/speech-audio","markdown_url":"https://www.graphcanon.com/categories/speech-audio.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/speech-audio"}],"tags":[{"slug":"accounting","name":"accounting"},{"slug":"ai-analysis","name":"ai-analysis"},{"slug":"currency-exchange","name":"currency-exchange"},{"slug":"expenses","name":"expenses"},{"slug":"gemini","name":"gemini"},{"slug":"invoices","name":"invoices"},{"slug":"llm","name":"llm"},{"slug":"ocr-recognition","name":"ocr-recognition"}],"trust":{"provenance":{"is_fork":false,"github_id":946010740,"owner_type":"User","methodology":"github_public_v1","parent_repo":null,"near_duplicate_slugs":[]},"computed_at":"2026-07-15T11:03:34.778Z","maintenance":{"label":"Very active","score":96,"methodology":"github_public_v1","releases_90d":2,"days_since_push":1,"last_release_at":"2026-07-07T17:06:17Z"},"security_summary":{"status":"no_lockfile","scanner":null,"low_count":0,"high_count":0,"last_scan_at":"2026-07-15T11:03:35.168Z","medium_count":0,"scan_profile":"none","critical_count":0}},"capability_facts":{"mcp":{"source":"repo_scan","observed_at":"2026-07-15T11:03:34.531Z","server_manifest":false},"scan":{"source":"repo_scan","observed_at":"2026-07-15T11:03:34.531Z"},"deploy":{"source":"dockerfile:Dockerfile","self_host":true,"observed_at":"2026-07-15T11:03:34.531Z","managed_saas":false},"has_cli":{"value":true,"source":"package.json:bin|scripts","observed_at":"2026-07-15T11:03:34.531Z"},"languages":{"value":["typescript","javascript"],"source":"github.language+package.json","observed_at":"2026-07-15T11:03:34.531Z"},"has_docker":{"value":true,"source":"dockerfile:Dockerfile","observed_at":"2026-07-15T11:03:34.531Z"},"license_spdx":{"value":"MIT","source":"github.license","observed_at":"2026-07-15T11:03:34.531Z"}}}}