[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-73562":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":23,"hasPages":23,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":38,"readmeContent":39,"aiSummary":40,"trendingCount":16,"starSnapshotCount":16,"syncStatus":41,"lastSyncTime":42,"discoverSource":43},73562,"TaxHacker","vas3k\u002FTaxHacker","vas3k","Self-hosted AI accounting app. LLM analyzer for receipts, invoices, transactions with custom prompts and categories","https:\u002F\u002Ftaxhacker.app",null,"TypeScript",6082,987,63,21,0,22,60,471,66,39.98,"MIT License",false,"main",[26,27,28,29,30,31,32,33,34,35,36,37],"accounting","ai-analysis","currency-exchange","expenses","gemini","invoices","llm","ocr-recognition","ollama","openai","self-hosted","taxes","2026-06-12 02:03:15","\u003Cdiv align=\"center\">\u003Ca name=\"readme-top\">\u003C\u002Fa>\n\n\u003Cimg src=\"public\u002Flogo\u002F512.png\" alt=\"\" width=\"320\">\n\n\u003Cbr>\n\n# TaxHacker: Self-Hosted AI Accounting\n\n[![GitHub Stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fvas3k\u002FTaxHacker?color=ffcb47&labelColor=black&style=flat-square)](https:\u002F\u002Fgithub.com\u002Fvas3k\u002FTaxHacker\u002Fstargazers)\n[![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-ffcb47?labelColor=black&style=flat-square)](https:\u002F\u002Fgithub.com\u002Fvas3k\u002FTaxHacker\u002Fblob\u002Fmain\u002FLICENSE)\n[![Support Us](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F-Donate-f04f88?logo=githubsponsors&logoColor=white&style=flat-square)](https:\u002F\u002Fvas3k.com\u002Fdonate\u002F)\n\n\u003C\u002Fdiv>\n\n> [!NOTE]  \n> ☝️ I'm currently looking for a job! Particularly interested in companies in Berlin or remote positions in Germany. Here's [my CV](https:\u002F\u002Fraw.githubusercontent.com\u002Fvas3k\u002Fvas3k\u002Fmaster\u002Fcv.pdf) and [Linkedin profile](https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fvas3k\u002F). Thank you 🙏\n\nTaxHacker is a self-hosted accounting app designed for freelancers, indie-hackers, and small businesses who want to save time and automate expense and income tracking using the power of modern AI.\n\nUpload photos of receipts, invoices, or PDFs, and TaxHacker will automatically recognize and extract all the important data you need for accounting: product names, amounts, items, dates, merchants, taxes, and save it into a structured Excel-like database. You can even create custom fields with your own AI prompts to extract any specific information you need.\n\nThe app features automatic currency conversion (including crypto!) based on historical exchange rates from the transaction date. With built-in filtering, multi-project support, import\u002Fexport capabilities, and custom categories, TaxHacker simplifies reporting and makes tax filing a bit easier.\n\n> 🎥 [Watch demo video](https:\u002F\u002Ftaxhacker.app\u002Flanding\u002Fvideo.mp4)\n\n![Dashboard](public\u002Flanding\u002Fmain-page.webp)\n\n> \\[!IMPORTANT]\n>\n> This project is still in early development. Use at your own risk! **Star us** to get notified about new features and bugfixes ⭐️\n\n## ✨ Features\n\n### `1` Analyze photos and invoices with AI\n\n![Currency Conversion](public\u002Flanding\u002Fai-scanner-big.webp)\n\nSnap a photo of any receipt or upload an invoice PDF, and TaxHacker will automatically recognize, extract, categorize, and store all the information in a structured database.\n\n- **Upload and organize your docs**: Store multiple documents in \"unsorted\" until you're ready to process them manually or with AI assistance\n- **AI data extraction**: Use AI to automatically pull key information like dates, amounts, vendors, and line items\n- **Auto-categorization**: Transactions are automatically sorted into relevant categories based on their content\n- **Item splitting**: Extract individual items from invoices and split them into separate transactions when needed\n- **Structured storage**: Everything gets saved in an organized database for easy filtering and retrieval\n- **Choose your LLM**: You can use OpenAI, Google Gemini, or Mistral or even your local LLM (in the self-hosted version). Only you're responsible for the quality and privacy of your data.\n\nTaxHacker works with a wide variety of documents, including store receipts, restaurant bills, invoices, bank statements, letters, even handwritten receipts. It handles any language and any currency with ease.\n\n### `2` Multi-currency support with automatic conversion (even crypto!)\n\n![Currency Conversion](public\u002Flanding\u002Fmulti-currency.webp)\n\nTaxHacker automatically detects currencies in your documents and converts them to your base currency using historical exchange rates.\n\n- **Foreight currency detection**: Automatically identify the currency used in any document\n- **Historical rates**: Get conversion rates from the actual transaction date\n- **All-world coverage**: Support for 170+ world currencies and 14 popular cryptocurrencies (BTC, ETH, LTC, DOT, and more)\n- **Flexible input**: Manual entry is always available when you need more control\n\n### `3` Use your own LLM: Ollama, LM Studio, vLLM, LocalAI etc\n\nIt's compatible with your local LLM OpenAI-compatible API endpoint. Just make sure that your local model is good in OCR tasks, results are not guaranteed :)\n\n![Local LLMs](public\u002Flanding\u002Flocal-llms.webp)\n\n### `4` Organize your transactions using fully customizable categories, projects and fields\n\n![Transactions Table](public\u002Flanding\u002Ftransactions-big.webp)\n\nAdapt TaxHacker to your unique needs with unlimited customization options. Create custom fields, projects, and categories that better suit your specific needs, idustry standards or country.\n\n- **Custom categories and projecst**: Create your own categories and projects to group your transactions in any convenient way\n- **Custom fields**: You can create unlimited number of custom fields to extraxt more information from your invoices (it's like creating extra columns in Excel)\n- **Full-text search**: Search through the actual content of recognized documents\n- **Advanced filtering**: Find exactly what you need with search and filter options\n- **AI-powered extraction**: Write your own prompts to extract any custom information from documents\n- **Bulk operations**: Process multiple documents or transactions at once\n\n### `5` Customize any LLM prompt. Even system ones\n\n![Custom Categories](public\u002Flanding\u002Fcustom-llm.webp)\n\nTake full control of how TaxHacker's AI processes your documents. Write custom AI prompts for fields, categories, and projects, or modify the built-in ones to match your specific needs.\n\n- **Customizable system prompts**: Modify the general prompt template in settings to suit your business\n- **Field or project-specific prompts**: Create custom extraction rules for your industry-specific documents\n- **Full control**: Adjust field extraction priorities and naming conventions to match your workflow\n- **Industry optimization**: Fine-tune the AI to understand your specific type of business documents\n- **Full transparency**: Every aspect of the AI extraction process is under your control and can be changed right in settings\n\nTaxHacker is 100% adaptable and tunable to your unique requirements — whether you need to extract emails, addresses, project codes, or any other custom information from your documents.\n\n### `6` Flexible data filtering and export\n\n![Data Export](public\u002Flanding\u002Fexport.webp)\n\nOnce your documents are processed, easily view, filter, and export your complete transaction history exactly how you need it.\n\n- **Advanced filtering**: Filter by date ranges, categories, projects, amounts, and any custom fields\n- **Flexible exports**: Export filtered transactions to CSV with all attached documents included\n- **Tax-ready reports**: Generate comprehensive reports for your accountant or tax advisor\n- **Data portability**: Download complete data archives to migrate to other services—your data stays yours\n\n### `7` Self-hosted mode for data privacy\n\n![Self-hosting](docs\u002Fscreenshots\u002Fexported_archive.png)\n\nKeep complete control over your financial data with local storage and self-hosting options. TaxHacker respects your privacy and gives you full ownership of your information.\n\n- **Home server ready**: Host on your own infrastructure for maximum privacy and control\n- **Docker native**: Simple setup with provided Docker containers and compose files\n- **Data ownership**: Your financial documents never leaves your control\n- **No vendor lock-in**: Export everything and migrate whenever you want\n- **Transparent operations**: Full access to source code and complete operational transparency\n\n## 🛳 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](.\u002FDockerfile) and [Docker Compose](.\u002Fdocker-compose.yml) setup that makes deployment simple:\n\n```bash\ncurl -O https:\u002F\u002Fraw.githubusercontent.com\u002Fvas3k\u002FTaxHacker\u002Fmain\u002Fdocker-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\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](.\u002FDockerfile).\n\nExample custom configuration:\n\n```yaml\nservices:\n  app:\n    image: ghcr.io\u002Fvas3k\u002Ftaxhacker:latest\n    ports:\n      - \"7331:7331\"\n    environment:\n      - SELF_HOSTED_MODE=true\n      - UPLOAD_PATH=\u002Fapp\u002Fdata\u002Fuploads\n      - DATABASE_URL=postgresql:\u002F\u002Fpostgres:postgres@localhost:5432\u002Ftaxhacker\n    volumes:\n      - .\u002Fdata:\u002Fapp\u002Fdata\n    restart: unless-stopped\n```\n\n### Environment Variables\n\nConfigure TaxHacker for your specific needs with these environment variables:\n\n| Variable | Required | Description | Example |\n|----------|----------|-------------|---------|\n| `UPLOAD_PATH` | Yes | Local directory for file uploads and storage | `.\u002Fdata\u002Fuploads` |\n| `DATABASE_URL` | Yes | PostgreSQL connection string | `postgresql:\u002F\u002Fuser@localhost:5432\u002Ftaxhacker` |\n| `PORT` | No | Port to run the application on | `7331` (default) |\n| `BASE_URL` | No | Base URL for the application | `http:\u002F\u002Flocalhost:7331` |\n| `SELF_HOSTED_MODE` | No | Set to \"true\" for self-hosting: enables auto-login, custom API keys, and additional features | `true` |\n| `DISABLE_SIGNUP` | No | Disable new user registration on your instance | `false` |\n| `BETTER_AUTH_SECRET` | Yes | Secret key for authentication (minimum 16 characters) | `your-secure-random-key` |\n\n\n## ⌨️ Local Development\n\nWe use:\n\n- **Next.js 15+** for the frontend and API\n- **Prisma** for database models and migrations\n- **PostgreSQL** as the database (PostgreSQL 17+ recommended)\n- **Ghostscript and GraphicsMagick** for PDF processing (install on macOS via `brew install gs graphicsmagick`)\n\nSet up your local development environment:\n\n```bash\n# Clone the repository\ngit clone https:\u002F\u002Fgithub.com\u002Fvas3k\u002FTaxHacker.git\ncd TaxHacker\n\n# Install dependencies\nnpm install\n\n# Set up environment variables\ncp .env.example .env\n\n# Edit .env with your configuration\n# Make sure to set DATABASE_URL to your PostgreSQL connection string\n# Example: postgresql:\u002F\u002Fuser@localhost:5432\u002Ftaxhacker\n\n# Initialize the database\nnpx prisma generate && npx prisma migrate dev\n\n# Start the development server\nnpm run dev\n```\n\nVisit `http:\u002F\u002Flocalhost:7331` to see your local TaxHacker instance in action.\n\nFor a production build, instead of `npm run dev` use the following commands:\n\n```bash\n# Build the application\nnpm run build\n\n# Start the production server\nnpm run start\n```\n\n## 🤝 Contributing\n\nNo AI-slop PRs. Please open a new Issue and discuss the details with maintainers before sending new changes.\n\n\n\n## ❤️ Support the Project\n\nIf TaxHacker has helped you save time or manage your finances better, consider supporting its development! Your donations help us maintain the project, add new features, and keep it free and open source. Every contribution helps ensure we can keep improving and maintaining this tool for the community: \u003Chttps:\u002F\u002Fvas3k.com\u002Fdonate\u002F>\n\n[![Thank the TaxHacker devs](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F❤️-donate%20to%20Taxhacker%20devs-f08080?labelColor=black&style=for-the-badge)](https:\u002F\u002Fvas3k.com\u002Fdonate\u002F)\n\n## 📄 License\n\nTaxHacker is licensed under the [MIT License](LICENSE).\n","TaxHacker 是一个自托管的AI会计应用，专为自由职业者、独立开发者和小型企业设计，旨在通过现代AI技术节省时间和自动化收支跟踪。其核心功能包括利用AI分析收据、发票和交易记录，自动提取并分类关键数据如产品名称、金额、日期、商家及税费，并存储于结构化数据库中。此外，该应用还支持自定义字段与提示、多币种（含加密货币）自动换算、多项目管理以及导入导出等功能，极大简化了报告生成与税务申报流程。适用于需要高效处理财务文档并希望在本地环境中运行软件的个人或团队。",2,"2026-06-11 03:46:11","high_star"]