Home
Softono
v

vas3k

Professional software vendor delivering innovative solutions on the Softono platform. Specialized in both open-source and proprietary software development.

Total Products
2

Software by vas3k

vas3k.club
Open Source

vas3k.club

<div align="center"> <br> <img src="frontend/static/images/logo/logo-256.png" alt=""> <h1>vas3k.club</h1> </div> Welcome to the [vas3k.club](https://vas3k.club) codebase. We're building our own little IT-lifestyle community. We've opensourced the code so that every member could contribute or implement a feature that they want. [vas3k.club](https://vas3k.club) is a platform with private and paid memberships that has emerged around the [vas3k.blog](https://vas3k.blog) blog and satellite chat rooms. It's not a typical IT community with tutorials and framework reviews, but rather more of a lifestyle one. We are trying to build a peaceful and useful ecosystem, which the Internet has lost a long ago. Therefore, we carefully select and filter new members and do not seek wild growth. Our values: honesty, fair share, respect for other members, rationality, friendliness and usefulness. We have a zero-tolerance policy on anonymity, insults and toxicity. But we always try to stay in touch with reality, so we're also not tolerant of witch hunting and call-out culture. We're a bullshitless community! ## ๐Ÿ›  Tech stack ๐Ÿ‘จโ€๐Ÿ’ป **TL;DR: Django, Postgres, Redis, Vue.js, Webpack** We try to keep our stack as simple and stupid as possible. Because we're not very smart either. The trickiest part of our stack is how we develop the frontend and backend as a single service. We don't use SPA, as many people do, but only make parts of the page dynamic by inserting Vue.js components directly into Django templates. This may seem weird, but it actually makes it very easy for one person to develop and maintain the entire site. You don't really need to understand how the magic of webpack <-> django communication works under the hood to develop new components. Just run `django runserver` and `npm run watch` at the same time and enjoy your coding. Feel free to propose "state of the art" refactorings for UI or backend code if you know how to do it better. We're open for best practices from both worlds. ## ๐Ÿ”ฎ Installing and running locally 1. Install [Docker](https://www.docker.com/get-started) 2. Clone the repo ```sh $ git clone https://github.com/vas3k/vas3k.club.git $ cd vas3k.club ``` 3. Run ```sh $ docker compose up ``` This will start the application in development mode on [http://127.0.0.1:8000/](http://127.0.0.1:8000/), as well as other necessary services: postgres database, queue with workers, redis and webpack. The first time you start it up, you'll probably need a test account to get right in. Go to [/godmode/dev_login/](http://127.0.0.1:8000/godmode/dev_login/) and it will create an admin account for you (and log you in automatically). To create new test user hit the [/godmode/random_login/](http://127.0.0.1:8000/godmode/random_login/) endpoint. Auto-reloading for backend and frontend is performed automatically on every code change. If everything is broken and not working (it happens), you can always rebuild the world from scratch using `docker compose up --build`. ## ๐Ÿง‘โ€๐Ÿ’ป Advanced setup for devs For more information on how to test the telegram bot, run project without docker and other useful notes, read [docs/setup.md](docs/setup.md). ## โ˜„๏ธ Testing We use standard Django testing framework for backend and Jest for frontend. No magic, really. See [docs/test.md](docs/test.md) for more insights. ## ๐Ÿšข Deployment No k8s, no AWS, we ship dockers directly via ssh and it's beautiful! The entire production configuration is described in the [docker-compose.production.yml](docker-compose.production.yml) file. Then, [Github Actions](.github/workflows/deploy.yml) have to take all the dirty work. They build, test and deploy changes to production on every merge to master (only official maintainers can do it). Explore the whole [.github](.github) folder for more insights. We're open for proposals on how to improve our deployments without overcomplicating it with modern devops bullshit. ## ๐Ÿ›ค Forking and tweaking Forks are welcome. We're small and our engine is not universal like Wordpress, but with sufficient programming skills (and using grep), you can launch your own Club website in a couple of weeks. Three huge requests for everyone: - Please give kudos the original authors. "Works on vas3k.club engine" in the footer of your site will be enough. - Please share new features you implement with us, so other folks can also benefit from them, and your own codebase minimally diverges from the original one (so you can sync updates and security fixes) . Use our [feature-flags](club/features.py). - Do not use our "issues" and chats as a support desk for your own fork. > โ™ฅ๏ธ [Feature-flags](club/features.py) are great. Use them to tweak your fork. Create new flags to upstream your new features or disable existing ones. ## ๐Ÿ™‹โ€โ™‚๏ธ How to report a bug or propose a feature? - ๐Ÿ†•Open [a new issue](https://github.com/vas3k/vas3k.club/issues/new) using one of the existing templates. - ๐Ÿ”ฆ Please, **use the search function** to make sure you aren't creating a duplicate. - ๐Ÿ–ผ Provide ALL the details, screenshots, logs, etc. Bug reports without steps to reproduce will be closed. ## ๐Ÿ˜ Contributions Important information for everyone willing to contribute to this project. - AI-generated PRs are NOT welcome. - Low-effort PRs are NOT welcome. - No cowboy PRs without prior discussion AND approval from maintainers. - 1 PR = 1 feature. No PRs with bulk changes. - Any PR longer than 10 lines of code must include a detailed text explanation of all changes. **A good way to contribute bug fixes:** search the Issues to make sure the bug hasn't been reported yet. Open a new Issue with a detailed description and steps to reproduce. Open a PR with the fix (if you can), then the contributors will either merge your PR or you'll carry on the discussion in the comments. **For new features:** open a new Issue describing the new feature you're interested in. Wait for the contributors to get back to you and give you the green light for implementation. If the contributors don't reply, it means the feature isn't of interest at the moment. ONLY after that should you open a PR for that feature. The main point of interaction is the [Issues page](https://github.com/vas3k/vas3k.club/issues) and our [Dev-chat in telegram](https://t.me/vas3k_club_dev). DO NOT DISCUSS FORKS THERE. If you want to contribute but don't know where to start โ€” come to the chat and just ask! > The official development language at the moment is Russian, because 100% of our users speak it. We don't want to introduce unnecessary barriers for them. But we are used to writing commits and comments in English and we won't mind communicating with you in it. ## ๐Ÿ” Security and vulnerabilities If you think you've found a critical vulnerability that should not be exposed to the public yet, you can always email me directly on Telegram [@vas3k](https://t.me/vas3k) or by email: [[email protected]](mailto:[email protected]). Please do not test vulnerabilities in public. If you start spamming the website with "test-test-test" posts or comments, our moderators will ban you even if you had good intentions. ## ๐Ÿ‘ฉโ€๐Ÿ’ผ License [MIT](LICENSE) You can use the code for your own private or commercial purposes with an author attribution (by including the original license file and mentioning vas3k.club somewhere on your website ๐ŸŽฉ). Feel free to contact us via email [[email protected]](mailto:[email protected]). โค๏ธ

Community & Forums Social Networks & Fediverse
926 Github Stars
TaxHacker
Open Source

TaxHacker

<div align="center"><a name="readme-top"></a> <img src="public/logo/512.png" alt="" width="320"> <br> # TaxHacker: Self-Hosted AI Accounting [![GitHub Stars](https://img.shields.io/github/stars/vas3k/TaxHacker?color=ffcb47&labelColor=black&style=flat-square)](https://github.com/vas3k/TaxHacker/stargazers) [![License](https://img.shields.io/badge/license-MIT-ffcb47?labelColor=black&style=flat-square)](https://github.com/vas3k/TaxHacker/blob/main/LICENSE) [![Support Us](https://img.shields.io/badge/-Donate-f04f88?logo=githubsponsors&logoColor=white&style=flat-square)](https://vas3k.com/donate/) </div> > [!NOTE] > โ˜๏ธ I'm currently looking for a job! Particularly interested in companies in Berlin or remote positions in Germany. Here's [my CV](https://raw.githubusercontent.com/vas3k/vas3k/master/cv.pdf) and [Linkedin profile](https://www.linkedin.com/in/vas3k/). Thank you ๐Ÿ™ TaxHacker 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. Upload 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. The app features automatic currency conversion (including crypto!) based on historical exchange rates from the transaction date. With built-in filtering, multi-project support, import/export capabilities, and custom categories, TaxHacker simplifies reporting and makes tax filing a bit easier. > ๐ŸŽฅ [Watch demo video](https://taxhacker.app/landing/video.mp4) ![Dashboard](public/landing/main-page.webp) > \[!IMPORTANT] > > This project is still in early development. Use at your own risk! **Star us** to get notified about new features and bugfixes โญ๏ธ ## โœจ Features ### `1` Analyze photos and invoices with AI ![Currency Conversion](public/landing/ai-scanner-big.webp) Snap 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. - **Upload and organize your docs**: Store multiple documents in "unsorted" until you're ready to process them manually or with AI assistance - **AI data extraction**: Use AI to automatically pull key information like dates, amounts, vendors, and line items - **Auto-categorization**: Transactions are automatically sorted into relevant categories based on their content - **Item splitting**: Extract individual items from invoices and split them into separate transactions when needed - **Structured storage**: Everything gets saved in an organized database for easy filtering and retrieval - **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. TaxHacker 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. ### `2` Multi-currency support with automatic conversion (even crypto!) ![Currency Conversion](public/landing/multi-currency.webp) TaxHacker automatically detects currencies in your documents and converts them to your base currency using historical exchange rates. - **Foreight currency detection**: Automatically identify the currency used in any document - **Historical rates**: Get conversion rates from the actual transaction date - **All-world coverage**: Support for 170+ world currencies and 14 popular cryptocurrencies (BTC, ETH, LTC, DOT, and more) - **Flexible input**: Manual entry is always available when you need more control ### `3` Use your own LLM: Ollama, LM Studio, vLLM, LocalAI etc It'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 :) ![Local LLMs](public/landing/local-llms.webp) ### `4` Organize your transactions using fully customizable categories, projects and fields ![Transactions Table](public/landing/transactions-big.webp) Adapt 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. - **Custom categories and projecst**: Create your own categories and projects to group your transactions in any convenient way - **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) - **Full-text search**: Search through the actual content of recognized documents - **Advanced filtering**: Find exactly what you need with search and filter options - **AI-powered extraction**: Write your own prompts to extract any custom information from documents - **Bulk operations**: Process multiple documents or transactions at once ### `5` Customize any LLM prompt. Even system ones ![Custom Categories](public/landing/custom-llm.webp) Take 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. - **Customizable system prompts**: Modify the general prompt template in settings to suit your business - **Field or project-specific prompts**: Create custom extraction rules for your industry-specific documents - **Full control**: Adjust field extraction priorities and naming conventions to match your workflow - **Industry optimization**: Fine-tune the AI to understand your specific type of business documents - **Full transparency**: Every aspect of the AI extraction process is under your control and can be changed right in settings TaxHacker 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. ### `6` Flexible data filtering and export ![Data Export](public/landing/export.webp) Once your documents are processed, easily view, filter, and export your complete transaction history exactly how you need it. - **Advanced filtering**: Filter by date ranges, categories, projects, amounts, and any custom fields - **Flexible exports**: Export filtered transactions to CSV with all attached documents included - **Tax-ready reports**: Generate comprehensive reports for your accountant or tax advisor - **Data portability**: Download complete data archives to migrate to other servicesโ€”your data stays yours ### `7` Self-hosted mode for data privacy ![Self-hosting](docs/screenshots/exported_archive.png) Keep 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. - **Home server ready**: Host on your own infrastructure for maximum privacy and control - **Docker native**: Simple setup with provided Docker containers and compose files - **Data ownership**: Your financial documents never leaves your control - **No vendor lock-in**: Export everything and migrate whenever you want - **Transparent operations**: Full access to source code and complete operational transparency ## ๐Ÿ›ณ Deployment and Self-hosting TaxHacker 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: ```bash curl -O https://raw.githubusercontent.com/vas3k/TaxHacker/main/docker-compose.yml docker compose up ``` The Docker Compose setup includes: - TaxHacker application container - PostgreSQL 17+ database (or connect to your existing database) - Automatic database migrations on startup - Volume mounts for persistent data storage - Production-ready configuration New 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. For 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). Example custom configuration: ```yaml services: app: image: ghcr.io/vas3k/taxhacker:latest ports: - "7331:7331" environment: - SELF_HOSTED_MODE=true - UPLOAD_PATH=/app/data/uploads - DATABASE_URL=postgresql://postgres:postgres@localhost:5432/taxhacker volumes: - ./data:/app/data restart: unless-stopped ``` ### Environment Variables Configure TaxHacker for your specific needs with these environment variables: | Variable | Required | Description | Example | |----------|----------|-------------|---------| | `UPLOAD_PATH` | Yes | Local directory for file uploads and storage | `./data/uploads` | | `DATABASE_URL` | Yes | PostgreSQL connection string | `postgresql://user@localhost:5432/taxhacker` | | `PORT` | No | Port to run the application on | `7331` (default) | | `BASE_URL` | No | Base URL for the application | `http://localhost:7331` | | `SELF_HOSTED_MODE` | No | Set to "true" for self-hosting: enables auto-login, custom API keys, and additional features | `true` | | `DISABLE_SIGNUP` | No | Disable new user registration on your instance | `false` | | `BETTER_AUTH_SECRET` | Yes | Secret key for authentication (minimum 16 characters) | `your-secure-random-key` | ## โŒจ๏ธ Local Development We use: - **Next.js 15+** for the frontend and API - **Prisma** for database models and migrations - **PostgreSQL** as the database (PostgreSQL 17+ recommended) - **Ghostscript and GraphicsMagick** for PDF processing (install on macOS via `brew install gs graphicsmagick`) Set up your local development environment: ```bash # Clone the repository git clone https://github.com/vas3k/TaxHacker.git cd TaxHacker # Install dependencies npm install # Set up environment variables cp .env.example .env # Edit .env with your configuration # Make sure to set DATABASE_URL to your PostgreSQL connection string # Example: postgresql://user@localhost:5432/taxhacker # Initialize the database npx prisma generate && npx prisma migrate dev # Start the development server npm run dev ``` Visit `http://localhost:7331` to see your local TaxHacker instance in action. For a production build, instead of `npm run dev` use the following commands: ```bash # Build the application npm run build # Start the production server npm run start ``` ## ๐Ÿค Contributing No AI-slop PRs. Please open a new Issue and discuss the details with maintainers before sending new changes. ## โค๏ธ Support the Project If 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: <https://vas3k.com/donate/> [![Thank the TaxHacker devs](https://img.shields.io/badge/โค๏ธ-donate%20to%20Taxhacker%20devs-f08080?labelColor=black&style=for-the-badge)](https://vas3k.com/donate/) ## ๐Ÿ“„ License TaxHacker is licensed under the [MIT License](LICENSE).

AI & Machine Learning Accounting
6.1K Github Stars