mirror of
https://github.com/marcogll/TaxHacker_s23.git
synced 2026-01-13 13:25:18 +00:00
chore: update readme and landing texts
This commit is contained in:
169
README.md
169
README.md
@@ -2,110 +2,112 @@
|
|||||||
|
|
||||||
<img src="public/logo/512.png" alt="" width="320">
|
<img src="public/logo/512.png" alt="" width="320">
|
||||||
|
|
||||||
# TaxHacker
|
<br>
|
||||||
|
|
||||||
I'm a small self-hosted accountant app that can help you deal with invoices, receipts and taxes with power of GenAI.<br/><br/>
|
# TaxHacker — self-hosted AI accountant
|
||||||
|
|
||||||
[](https://github.com/vas3k/TaxHacker/stargazers)
|
[](https://github.com/vas3k/TaxHacker/stargazers)
|
||||||
[](https://github.com/vas3k/TaxHacker/blob/main/LICENSE)
|
[](https://github.com/vas3k/TaxHacker/blob/main/LICENSE)
|
||||||
[](https://github.com/vas3k/TaxHacker/issues)
|
[](https://github.com/vas3k/TaxHacker/issues)
|
||||||
[](https://vas3k.com/donate/)
|
[](https://vas3k.com/donate/)
|
||||||
|
|
||||||
**Share TaxHacker**
|
|
||||||
|
|
||||||
[](https://x.com/intent/tweet?text=Check%20out%20TaxHacker%20-%20an%20AI-powered%20assistant%20that%20helps%20you%20manage%20receipts%2C%20checks%2C%20and%20invoices%20with%20ease.&url=https%3A%2F%2Fgithub.com%2Fvas3k%2FTaxHacker)
|
|
||||||
[](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fgithub.com%2Fvas3k%2FTaxHacker)
|
|
||||||
[](https://www.reddit.com/submit?title=Check%20out%20TaxHacker%20-%20an%20AI-powered%20assistant%20that%20helps%20you%20manage%20receipts%2C%20checks%2C%20and%20invoices%20with%20ease.&url=https%3A%2F%2Fgithub.com%2Fvas3k%2FTaxHacker)
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
## 👋🏻 Getting Started
|
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.
|
||||||
|
|
||||||
TaxHacker is a self-hosted accounting app for freelancers, indie-hackers and small businesses who want to save time and automate expences and income tracking with power of GenAI. It can recognise uploaded photos, receipts or PDFs and extract important data (e.g. name, total amount, date, merchant, VAT) and save it as structured transactions to a table. You can also create your own custom fields to extract with your LLM prompts.
|
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.
|
||||||
|
|
||||||
It supports automatic currency conversion on a day of transaction. Even for crypto!
|
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.
|
||||||
|
|
||||||
Built-in system of filters, support for multiple projects, import-export of transactions for a certain time (along with attached files) and custom categories, allows you to simplify reporting and tax filing.
|
> 🎥 [Watch demo video](public/landing/video.mp4)
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
> \[!IMPORTANT]
|
> \[!IMPORTANT]
|
||||||
>
|
>
|
||||||
> This project is still at a very early stage. Use it at your own risk! **Star Us** to receive notifications about new bugfixes and features from GitHub ⭐️
|
> This project is still in early development. Use at your own risk! **Star us** to get notified about new features and bugfixes ⭐️
|
||||||
|
|
||||||
## ✨ Features
|
## ✨ Features
|
||||||
|
|
||||||
### `1` Upload photos or documents to analyze with LLM
|
### `1` Analyze photos and invoices with AI
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
https://github.com/user-attachments/assets/3326d0e3-0bf6-4c39-9e00-4bf0983d9b7a
|
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.
|
||||||
|
|
||||||
> 🎥 [Watch the video](https://github.com/user-attachments/assets/3326d0e3-0bf6-4c39-9e00-4bf0983d9b7a)
|
- **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
|
||||||
|
- **Customizable AI providers**: Choose from OpenAI, Google Gemini, or Mistral (local LLM support coming soon)
|
||||||
|
|
||||||
Take a photo on upload or a PDF and TaxHacker will automatically recognise, categorise and store transaction information.
|
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.
|
||||||
|
|
||||||
- Upload multiple documents and store in "unsorted" until you get the time to sort them out by hand or with an AI
|
### `2` Multi-currency support with automatic conversion (even crypto!)
|
||||||
- Use LLM to extract key information like date, amount, and vendor
|
|
||||||
- Automatically categorize transactions based on its content
|
|
||||||
- Store everything in a structured format for easy filtering and retrieval
|
|
||||||
- Organize your documents by a tax season
|
|
||||||
|
|
||||||
TaxHacker recognizes a wide variety of documents including store receipts, restaurant bills, invoices, bank checks, letters, even handwritten receipts.
|
|
||||||
|
|
||||||
### `2` Multi-currency support with automatic conversion (even for crypto)
|
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
TaxHacker automatically converts foreign currencies and even knows the historical exchange rates on the invoice date.
|
TaxHacker automatically detects currencies in your documents and converts them to your base currency using historical exchange rates.
|
||||||
|
|
||||||
- Automatically detect currency in your documents
|
- **Foreight currency detection**: Automatically identify the currency used in any document
|
||||||
- Convert it to your base currency
|
- **Historical rates**: Get conversion rates from the actual transaction date
|
||||||
- Historical exchange rate lookup for past transactions
|
- **All-world coverage**: Support for 170+ world currencies and 14 popular cryptocurrencies (BTC, ETH, LTC, DOT, and more)
|
||||||
- Support for over 170 world currencies and 14 popular cryptocurrencies (BTC, ETC, LTC, DOT, etc)!
|
- **Flexible input**: Manual entry is always available when you need more control
|
||||||
|
|
||||||
### `3` Create custom fields, projects, categories
|
### `3` Organize your transactions using fully customizable categories, projects and fields
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
Adapt TaxHacker to your specific tracking needs. You can create new fields, projects or categories to extract additional information from documents. For example, if you need to save emails, addresses, and any custom information into separate fields, you can do it. Custom fields will be available when exporting too.
|
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.
|
||||||
|
|
||||||
- Create unlimited custom fields for transaction tracking
|
- **Custom categories and projecst**: Create your own categories and projects to group your transactions in any convenient way
|
||||||
- Automatically extract custom field data using AI
|
- **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)
|
||||||
- Include custom fields in exports and reports
|
- **Full-text search**: Search through the actual content of recognized documents
|
||||||
- Create new categories or projects to organise your transactions and filter by them
|
- **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
|
||||||
|
|
||||||
### `4` `Customize any LLM prompt
|
### `4` Customize any LLM prompt. Even system ones
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
You can customize LLM Prompts for built-in fields, categories, and projects, as well as modify global templates in the application settings. This allows to customize the quality of recognizing specific things to your specific use-cases.
|
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.
|
||||||
|
|
||||||
- General prompt template is configurable is settings
|
- **Customizable system prompts**: Modify the general prompt template in settings to suit your business
|
||||||
- Create custom extraction rules for your specific needs
|
- **Field or project-specific prompts**: Create custom extraction rules for your industry-specific documents
|
||||||
- Adjust field extraction priorities and naming conventions
|
- **Full control**: Adjust field extraction priorities and naming conventions to match your workflow
|
||||||
- Fine-tune the AI for your industry-specific documents
|
- **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
|
||||||
|
|
||||||
The whole extraction process is under your contoll all the time!
|
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.
|
||||||
|
|
||||||
### `5` Flexible data filtering and export
|
### `5` Flexible data filtering and export
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
Once all documents have been uploaded and analyzed, you can view, filter and export your transaction history.
|
Once your documents are processed, easily view, filter, and export your complete transaction history exactly how you need it.
|
||||||
|
|
||||||
- Filter transactions by time, category, and other features
|
- **Advanced filtering**: Filter by date ranges, categories, projects, amounts, and any custom fields
|
||||||
- Use full-text search by recognized document content
|
- **Flexible exports**: Export filtered transactions to CSV with all attached documents included
|
||||||
- Export filtered transactions to CSV with attached documents
|
- **Tax-ready reports**: Generate comprehensive reports for your accountant or tax advisor
|
||||||
- Upload your entire income and expense history at the end of the year for your tax advisor to analyze
|
- **Data portability**: Download complete data archives to migrate to other services—your data stays yours
|
||||||
|
|
||||||
### `6` Local data storage and self-hosting
|
### `6` Self-hosted mode for data privacy
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## 🛳 Deploying or Self-hosting
|
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.
|
||||||
|
|
||||||
TaxHacker can be 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) files that makes setting up TaxHacker simple:
|
- **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
|
```bash
|
||||||
curl -O https://raw.githubusercontent.com/vas3k/TaxHacker/main/docker-compose.yml
|
curl -O https://raw.githubusercontent.com/vas3k/TaxHacker/main/docker-compose.yml
|
||||||
@@ -116,15 +118,16 @@ docker compose up
|
|||||||
The Docker Compose setup includes:
|
The Docker Compose setup includes:
|
||||||
|
|
||||||
- TaxHacker application container
|
- TaxHacker application container
|
||||||
- PostgreSQL 17 database container
|
- PostgreSQL 17 database (or connect to your existing database)
|
||||||
- Automatic database migrations
|
- Automatic database migrations on startup
|
||||||
- Volume mounts for persistent data storage
|
- Volume mounts for persistent data storage
|
||||||
|
- Production-ready configuration
|
||||||
|
|
||||||
New docker image is automatically built and published on every new release. You can use specific version tags (e.g. `v1.0.0`) or `latest` for the most recent version.
|
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 more advanced setups, you can adapt Docker Compose configuration to your own needs. The default configuration uses the pre-built image from GHCR, but you can still build locally using the provided [Dockerfile](./Dockerfile) if needed.
|
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).
|
||||||
|
|
||||||
For example:
|
Example custom configuration:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
services:
|
services:
|
||||||
@@ -143,35 +146,34 @@ services:
|
|||||||
|
|
||||||
### Environment Variables
|
### Environment Variables
|
||||||
|
|
||||||
Configure TaxHacker to suit your needs with these environment variables:
|
Configure TaxHacker for your specific needs with these environment variables:
|
||||||
|
|
||||||
| Variable | Required | Description | Example |
|
| Variable | Required | Description | Example |
|
||||||
|----------|----------|-------------|---------|
|
|----------|----------|-------------|---------|
|
||||||
| `UPLOAD_PATH` | Yes | Local directory for uploading files | `./data/uploads` |
|
| `UPLOAD_PATH` | Yes | Local directory for file uploads and storage | `./data/uploads` |
|
||||||
| `DATABASE_URL` | Yes | PostgreSQL connection string | `postgresql://user@localhost:5432/taxhacker` |
|
| `DATABASE_URL` | Yes | PostgreSQL connection string | `postgresql://user@localhost:5432/taxhacker` |
|
||||||
| `PORT` | No | Port to run the app on | `7331` (default) |
|
| `PORT` | No | Port to run the application on | `7331` (default) |
|
||||||
| `BASE_URL` | No | Base URL for the application | `http://localhost:7331` |
|
| `BASE_URL` | No | Base URL for the application | `http://localhost:7331` |
|
||||||
| `SELF_HOSTED_MODE` | No | Set it to "true" if you're self-hosting the app: it enables auto-login, custom API keys, and more | `true` |
|
| `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` |
|
| `DISABLE_SIGNUP` | No | Disable new user registration on your instance | `false` |
|
||||||
| `BETTER_AUTH_SECRET` | Yes | Secret key for authentication (min 16 characters) | `random-secret-key` |
|
| `BETTER_AUTH_SECRET` | Yes | Secret key for authentication (minimum 16 characters) | `your-secure-random-key` |
|
||||||
|
|
||||||
You can also specify LLM provider options in settings or with environment variables:
|
You can also configure LLM provider settings in the application or via environment variables:
|
||||||
|
|
||||||
- For OpenAI: `OPENAI_MODEL_NAME` and `OPENAI_API_KEY`
|
|
||||||
- For Google: `GOOGLE_MODEL_NAME` and `GOOGLE_API_KEY`
|
|
||||||
- For Mistral: `MISTRAL_MODEL_NAME` and `MISTRAL_API_KEY`
|
|
||||||
|
|
||||||
|
- **OpenAI**: `OPENAI_MODEL_NAME` and `OPENAI_API_KEY`
|
||||||
|
- **Google Gemini**: `GOOGLE_MODEL_NAME` and `GOOGLE_API_KEY`
|
||||||
|
- **Mistral**: `MISTRAL_MODEL_NAME` and `MISTRAL_API_KEY`
|
||||||
|
|
||||||
## ⌨️ Local Development
|
## ⌨️ Local Development
|
||||||
|
|
||||||
We use:
|
We use:
|
||||||
|
|
||||||
- Next.js version 15+ or later
|
- **Next.js 15+** for the frontend and API
|
||||||
- [Prisma](https://www.prisma.io/) for database models and migrations
|
- **Prisma** for database models and migrations
|
||||||
- PostgreSQL as a database (PostgreSQL 17+ recommended)
|
- **PostgreSQL** as the database (PostgreSQL 17+ recommended)
|
||||||
- Ghostscript and graphicsmagick libs for PDF files (can be installed on macOS via `brew install gs graphicsmagick`)
|
- **Ghostscript and GraphicsMagick** for PDF processing (install on macOS via `brew install gs graphicsmagick`)
|
||||||
|
|
||||||
Set up a local development environment with these steps:
|
Set up your local development environment:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Clone the repository
|
# Clone the repository
|
||||||
@@ -195,7 +197,7 @@ npx prisma generate && npx prisma migrate dev
|
|||||||
npm run dev
|
npm run dev
|
||||||
```
|
```
|
||||||
|
|
||||||
Visit `http://localhost:7331` to see your local instance of TaxHacker.
|
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:
|
For a production build, instead of `npm run dev` use the following commands:
|
||||||
|
|
||||||
@@ -209,23 +211,24 @@ npm run start
|
|||||||
|
|
||||||
## 🤝 Contributing
|
## 🤝 Contributing
|
||||||
|
|
||||||
Contributions to TaxHacker are welcome and appreciated! Here's how you can help:
|
We welcome contributions to TaxHacker! Here's how you can help make it even better:
|
||||||
|
|
||||||
- **Bug Reports**: File detailed issues when you encounter problems
|
- **🐛 Bug Reports**: File detailed issues when you encounter problems
|
||||||
- **Feature Requests**: Share your ideas for new features
|
- **💡 Feature Requests**: Share your ideas for new features and improvements
|
||||||
- **Code Contributions**: Submit pull requests to improve the application
|
- **🔧 Code Contributions**: Submit pull requests to improve the application
|
||||||
- **Documentation**: Help improve documentation
|
- **📚 Documentation**: Help improve documentation and guides
|
||||||
|
- **🎥 Content Creation**: Videos, tutorials, and reviews help us reach more users!
|
||||||
|
|
||||||
All work is done on GitHub through issues and pull requests.
|
All development happens on GitHub through issues and pull requests. We appreciate any help.
|
||||||
|
|
||||||
[](https://github.com/vas3k/TaxHacker/pulls)
|
[](https://github.com/vas3k/TaxHacker/pulls)
|
||||||
|
|
||||||
## ❤️ Donate
|
## ❤️ Support the Project
|
||||||
|
|
||||||
If TaxHacker has helped you - help us in return! You donations will support maintainance and development. If you find this project valuable for your personal or business use, consider making a donation.
|
If TaxHacker has helped you save time or manage your finances better, consider supporting its continued 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/)
|
[](https://vas3k.com/donate/)
|
||||||
|
|
||||||
## 📄 License
|
## 📄 License
|
||||||
|
|
||||||
TaxHacker is licensed under the MIT License - see the [LICENSE](https://github.com/vas3k/TaxHacker/blob/main/LICENSE) file for details.
|
TaxHacker is licensed under the [MIT License](LICENSE).
|
||||||
|
|||||||
@@ -210,7 +210,7 @@ export default function LandingPage() {
|
|||||||
|
|
||||||
{/* Invoice Generator */}
|
{/* Invoice Generator */}
|
||||||
<div className="flex flex-wrap items-center gap-12 mb-20 bg-gradient-to-br from-white via-purple-50/30 to-indigo-50/30 p-8 rounded-3xl shadow-xl ring-2 ring-gradient-to-r from-purple-200 to-indigo-200 hover:shadow-2xl transition-all duration-500 group">
|
<div className="flex flex-wrap items-center gap-12 mb-20 bg-gradient-to-br from-white via-purple-50/30 to-indigo-50/30 p-8 rounded-3xl shadow-xl ring-2 ring-gradient-to-r from-purple-200 to-indigo-200 hover:shadow-2xl transition-all duration-500 group">
|
||||||
<div className="flex-1 relative aspect-auto rounded-3xl overflow-hidden shadow-2xl ring-4 ring-gradient-to-r from-purple-200 to-indigo-200 hover:scale-105 transition-all duration-500">
|
<div className="max-w-sm flex-1 relative aspect-auto rounded-3xl overflow-hidden shadow-2xl ring-4 ring-gradient-to-r from-purple-200 to-indigo-200 hover:scale-105 transition-all duration-500">
|
||||||
<Image src="/landing/invoice-generator.webp" alt="Invoice Generator" width={1800} height={1081} />
|
<Image src="/landing/invoice-generator.webp" alt="Invoice Generator" width={1800} height={1081} />
|
||||||
</div>
|
</div>
|
||||||
<div className="flex-1 min-w-60">
|
<div className="flex-1 min-w-60">
|
||||||
@@ -252,7 +252,7 @@ export default function LandingPage() {
|
|||||||
🎨 Control over AI
|
🎨 Control over AI
|
||||||
</div>
|
</div>
|
||||||
<h3 className="text-2xl font-bold mb-4 bg-gradient-to-r from-violet-700 to-purple-700 bg-clip-text text-transparent">
|
<h3 className="text-2xl font-bold mb-4 bg-gradient-to-r from-violet-700 to-purple-700 bg-clip-text text-transparent">
|
||||||
Write custom LLM promts to extract anything
|
Tune any LLM prompt to extract anything you need
|
||||||
</h3>
|
</h3>
|
||||||
<ul className="space-y-3 text-gray-700">
|
<ul className="space-y-3 text-gray-700">
|
||||||
<li className="flex items-center">
|
<li className="flex items-center">
|
||||||
@@ -286,7 +286,7 @@ export default function LandingPage() {
|
|||||||
<div className="flex flex-wrap items-center gap-12 mb-20 bg-gradient-to-br from-white via-orange-50/30 to-amber-50/30 p-8 rounded-3xl shadow-xl ring-2 ring-gradient-to-r from-orange-200 to-amber-200 hover:shadow-2xl transition-all duration-500 group flex-row-reverse">
|
<div className="flex flex-wrap items-center gap-12 mb-20 bg-gradient-to-br from-white via-orange-50/30 to-amber-50/30 p-8 rounded-3xl shadow-xl ring-2 ring-gradient-to-r from-orange-200 to-amber-200 hover:shadow-2xl transition-all duration-500 group flex-row-reverse">
|
||||||
<div className="flex-1 min-w-60">
|
<div className="flex-1 min-w-60">
|
||||||
<div className="inline-block px-4 py-2 rounded-full bg-gradient-to-r from-orange-500 to-amber-600 text-white text-sm font-bold mb-4 shadow-lg">
|
<div className="inline-block px-4 py-2 rounded-full bg-gradient-to-r from-orange-500 to-amber-600 text-white text-sm font-bold mb-4 shadow-lg">
|
||||||
📦 Self-hosting & Export
|
📦 Self-hosting & Data Export
|
||||||
</div>
|
</div>
|
||||||
<h3 className="text-2xl font-bold mb-4 bg-gradient-to-r from-orange-700 to-amber-700 bg-clip-text text-transparent">
|
<h3 className="text-2xl font-bold mb-4 bg-gradient-to-r from-orange-700 to-amber-700 bg-clip-text text-transparent">
|
||||||
Your Data — Your Rules
|
Your Data — Your Rules
|
||||||
@@ -294,20 +294,16 @@ export default function LandingPage() {
|
|||||||
<ul className="space-y-3 text-gray-700">
|
<ul className="space-y-3 text-gray-700">
|
||||||
<li className="flex items-center">
|
<li className="flex items-center">
|
||||||
<span className="text-orange-600 mr-3 text-lg">📤</span>
|
<span className="text-orange-600 mr-3 text-lg">📤</span>
|
||||||
Deploy your own instance of TaxHacker if you want 100% privacy
|
Deploy your own instance of TaxHacker for 100% privacy
|
||||||
</li>
|
</li>
|
||||||
<li className="flex items-center">
|
<li className="flex items-center">
|
||||||
<span className="text-orange-600 mr-3 text-lg">📤</span>
|
<span className="text-orange-600 mr-3 text-lg">📤</span>
|
||||||
Export your transactions to CSV for tax prep or any other purpose
|
Export your transactions to CSV for tax prep
|
||||||
</li>
|
</li>
|
||||||
<li className="flex items-center">
|
<li className="flex items-center">
|
||||||
<span className="text-orange-600 mr-3 text-lg">📤</span>
|
<span className="text-orange-600 mr-3 text-lg">📤</span>
|
||||||
Full-text search across documents and invoices
|
Full-text search across documents and invoices
|
||||||
</li>
|
</li>
|
||||||
<li className="flex items-center">
|
|
||||||
<span className="text-orange-600 mr-3 text-lg">📤</span>
|
|
||||||
Export to CSV with attached documents
|
|
||||||
</li>
|
|
||||||
<li className="flex items-center">
|
<li className="flex items-center">
|
||||||
<span className="text-orange-600 mr-3 text-lg">📤</span>
|
<span className="text-orange-600 mr-3 text-lg">📤</span>
|
||||||
Download full data archive to migrate to another service. We don't take away or limit what you do with
|
Download full data archive to migrate to another service. We don't take away or limit what you do with
|
||||||
@@ -346,7 +342,7 @@ export default function LandingPage() {
|
|||||||
<ul className="space-y-3 text-gray-700 mb-8">
|
<ul className="space-y-3 text-gray-700 mb-8">
|
||||||
<li className="flex items-center">
|
<li className="flex items-center">
|
||||||
<span className="text-indigo-600 mr-3 text-lg">🆓</span>
|
<span className="text-indigo-600 mr-3 text-lg">🆓</span>
|
||||||
Free and open source
|
Free and Open Source
|
||||||
</li>
|
</li>
|
||||||
<li className="flex items-center">
|
<li className="flex items-center">
|
||||||
<span className="text-indigo-600 mr-3 text-lg">🔒</span>
|
<span className="text-indigo-600 mr-3 text-lg">🔒</span>
|
||||||
@@ -354,7 +350,7 @@ export default function LandingPage() {
|
|||||||
</li>
|
</li>
|
||||||
<li className="flex items-center">
|
<li className="flex items-center">
|
||||||
<span className="text-indigo-600 mr-3 text-lg">🏗️</span>
|
<span className="text-indigo-600 mr-3 text-lg">🏗️</span>
|
||||||
Use at your own infrastructure
|
Deploy at your own infrastructure or home server
|
||||||
</li>
|
</li>
|
||||||
<li className="flex items-center">
|
<li className="flex items-center">
|
||||||
<span className="text-indigo-600 mr-3 text-lg">🔑</span>
|
<span className="text-indigo-600 mr-3 text-lg">🔑</span>
|
||||||
@@ -366,7 +362,7 @@ export default function LandingPage() {
|
|||||||
target="_blank"
|
target="_blank"
|
||||||
className="block w-full text-center px-6 py-4 bg-gradient-to-r from-violet-600 to-indigo-600 text-white font-bold rounded-full hover:from-violet-700 hover:to-indigo-700 transition-all duration-300 shadow-xl hover:shadow-2xl hover:scale-110"
|
className="block w-full text-center px-6 py-4 bg-gradient-to-r from-violet-600 to-indigo-600 text-white font-bold rounded-full hover:from-violet-700 hover:to-indigo-700 transition-all duration-300 shadow-xl hover:shadow-2xl hover:scale-110"
|
||||||
>
|
>
|
||||||
Free: Github + Docker Compose 🐳
|
Github + Docker Compose 🐳
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -381,7 +377,7 @@ export default function LandingPage() {
|
|||||||
<ul className="space-y-3 text-gray-700 mb-8">
|
<ul className="space-y-3 text-gray-700 mb-8">
|
||||||
<li className="flex items-center">
|
<li className="flex items-center">
|
||||||
<span className="text-purple-600 mr-3 text-lg">🎯</span>
|
<span className="text-purple-600 mr-3 text-lg">🎯</span>
|
||||||
SaaS version if you don't want to hassle with own servers
|
SaaS version if you don't want to hassle with own servers and deployments
|
||||||
</li>
|
</li>
|
||||||
<li className="flex items-center">
|
<li className="flex items-center">
|
||||||
<span className="text-purple-600 mr-3 text-lg">🤖</span>
|
<span className="text-purple-600 mr-3 text-lg">🤖</span>
|
||||||
|
|||||||
Reference in New Issue
Block a user