mirror of
https://github.com/marcogll/TaxHacker_s23.git
synced 2026-01-13 13:25:18 +00:00
chore: better configs
This commit is contained in:
11
.env.example
11
.env.example
@@ -6,16 +6,17 @@ UPLOAD_PATH="./data/uploads"
|
||||
DATABASE_URL="postgresql://user@localhost:5432/taxhacker"
|
||||
|
||||
# You can put it here or the app will ask you to enter it
|
||||
OPENAI_API_KEY=""
|
||||
OPENAI_MODEL_NAME="gpt-4o-mini"
|
||||
OPENAI_API_KEY="" # "sk-..."
|
||||
|
||||
# Auth Config
|
||||
BETTER_AUTH_SECRET="random-secret-key" # please use any long random string here
|
||||
|
||||
# Stripe Configuration
|
||||
STRIPE_SECRET_KEY=""
|
||||
STRIPE_WEBHOOK_SECRET=""
|
||||
STRIPE_SECRET_KEY="" # "sk_live_..." or "sk_test_..."
|
||||
STRIPE_WEBHOOK_SECRET="" # "whsec_..."
|
||||
|
||||
# Resend Configuration (optional, use if you want to send emails)
|
||||
RESEND_API_KEY=""
|
||||
RESEND_AUDIENCE_ID=""
|
||||
RESEND_API_KEY="" # "re_..."
|
||||
RESEND_AUDIENCE_ID="" # "aud_..."
|
||||
RESEND_FROM_EMAIL="TaxHacker <user@localhost>"
|
||||
|
||||
@@ -145,14 +145,15 @@ Configure TaxHacker to suit your needs with these environment variables:
|
||||
|
||||
| Variable | Required | Description | Example |
|
||||
|----------|----------|-------------|---------|
|
||||
| `PORT` | No | Port to run the app on | `7331` (default) |
|
||||
| `UPLOAD_PATH` | Yes | Local directory for uploading files | `./data/uploads` |
|
||||
| `DATABASE_URL` | Yes | PostgreSQL connection string | `postgresql://user@localhost:5432/taxhacker` |
|
||||
| `SELF_HOSTED_MODE` | No | Set it to "true" if you're self-hosting the app: it enables auto-login, custom API keys, and more | `false` |
|
||||
| `PORT` | No | Port to run the app on | `7331` (default) |
|
||||
| `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` |
|
||||
| `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` |
|
||||
| `OPENAI_MODEL_NAME` | No | OpenAI model to use for AI features | `gpt-4o-mini` |
|
||||
| `OPENAI_API_KEY` | No | OpenAI API key for AI features. In self-hosted mode you can set it up in settings too. | `sk-...` |
|
||||
| `RESEND_API_KEY` | No | Resend API key for email notifications | `re_...` |
|
||||
| `RESEND_FROM_EMAIL` | No | Email address to send from | `TaxHacker <hello@taxhacker.app>` |
|
||||
|
||||
|
||||
## ⌨️ Local Development
|
||||
|
||||
@@ -244,6 +244,41 @@ export default function LandingPage() {
|
||||
</h2>
|
||||
</div>
|
||||
<div className="grid md:grid-cols-2 gap-16">
|
||||
{/* Self-Hosted Version */}
|
||||
<div className="bg-gradient-to-b from-white to-gray-50 p-8 rounded-2xl shadow-lg ring-1 ring-gray-100">
|
||||
<div className="inline-block px-3 py-1 rounded-full bg-violet-50 text-violet-600 text-sm font-medium mb-4">
|
||||
Use Your Own Server
|
||||
</div>
|
||||
<h3 className="text-2xl font-semibold mb-4">
|
||||
<ColoredText>Self-Hosted Edition</ColoredText>
|
||||
</h3>
|
||||
<ul className="space-y-3 text-gray-600 mb-8">
|
||||
<li className="flex items-center">
|
||||
<span className="text-blue-600 mr-2">✓</span>
|
||||
Free and open source
|
||||
</li>
|
||||
<li className="flex items-center">
|
||||
<span className="text-blue-600 mr-2">✓</span>
|
||||
Complete control over your data
|
||||
</li>
|
||||
<li className="flex items-center">
|
||||
<span className="text-blue-600 mr-2">✓</span>
|
||||
Use at your own infrastructure
|
||||
</li>
|
||||
<li className="flex items-center">
|
||||
<span className="text-blue-600 mr-2">✓</span>
|
||||
Bring your own OpenAI keys
|
||||
</li>
|
||||
</ul>
|
||||
<Link
|
||||
href="https://github.com/vas3k/TaxHacker"
|
||||
target="_blank"
|
||||
className="block w-full text-center px-6 py-3 bg-gradient-to-r from-blue-600 to-indigo-600 text-white font-medium rounded-full hover:opacity-90 transition-all shadow-lg shadow-blue-500/20"
|
||||
>
|
||||
Github + Docker Compose
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
{/* Cloud Version */}
|
||||
<div className="bg-gradient-to-b from-white to-gray-50 p-8 rounded-2xl shadow-lg ring-1 ring-gray-100">
|
||||
<div className="absolute top-4 right-4">
|
||||
@@ -280,41 +315,6 @@ export default function LandingPage() {
|
||||
LET'S GO!
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
{/* Self-Hosted Version */}
|
||||
<div className="bg-gradient-to-b from-white to-gray-50 p-8 rounded-2xl shadow-lg ring-1 ring-gray-100">
|
||||
<div className="inline-block px-3 py-1 rounded-full bg-violet-50 text-violet-600 text-sm font-medium mb-4">
|
||||
Use Your Own Server
|
||||
</div>
|
||||
<h3 className="text-2xl font-semibold mb-4">
|
||||
<ColoredText>Self-Hosted Edition</ColoredText>
|
||||
</h3>
|
||||
<ul className="space-y-3 text-gray-600 mb-8">
|
||||
<li className="flex items-center">
|
||||
<span className="text-blue-600 mr-2">✓</span>
|
||||
Free and open source
|
||||
</li>
|
||||
<li className="flex items-center">
|
||||
<span className="text-blue-600 mr-2">✓</span>
|
||||
Complete control over your data
|
||||
</li>
|
||||
<li className="flex items-center">
|
||||
<span className="text-blue-600 mr-2">✓</span>
|
||||
Use at your own infrastructure
|
||||
</li>
|
||||
<li className="flex items-center">
|
||||
<span className="text-blue-600 mr-2">✓</span>
|
||||
Bring your own OpenAI keys
|
||||
</li>
|
||||
</ul>
|
||||
<Link
|
||||
href="https://github.com/vas3k/TaxHacker"
|
||||
target="_blank"
|
||||
className="block w-full text-center px-6 py-3 bg-gradient-to-r from-blue-600 to-indigo-600 text-white font-medium rounded-full hover:opacity-90 transition-all shadow-lg shadow-blue-500/20"
|
||||
>
|
||||
Github + Docker Compose
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -3,8 +3,9 @@ import { z } from "zod"
|
||||
const envSchema = z.object({
|
||||
BASE_URL: z.string().url().default("http://localhost:7331"),
|
||||
PORT: z.string().default("7331"),
|
||||
SELF_HOSTED_MODE: z.enum(["true", "false"]).default("false"),
|
||||
SELF_HOSTED_MODE: z.enum(["true", "false"]).default("true"),
|
||||
OPENAI_API_KEY: z.string().optional(),
|
||||
OPENAI_MODEL_NAME: z.string().default("gpt-4o-mini"),
|
||||
BETTER_AUTH_SECRET: z
|
||||
.string()
|
||||
.min(16, "Auth secret must be at least 16 characters")
|
||||
@@ -22,7 +23,7 @@ const env = envSchema.parse(process.env)
|
||||
const config = {
|
||||
app: {
|
||||
title: "TaxHacker",
|
||||
description: "Your personal AI helper for taxes",
|
||||
description: "Your personal AI accountant",
|
||||
version: process.env.npm_package_version || "0.0.1",
|
||||
baseURL: env.BASE_URL || `http://localhost:${env.PORT || "7331"}`,
|
||||
supportEmail: "me@vas3k.com",
|
||||
@@ -37,7 +38,7 @@ const config = {
|
||||
},
|
||||
ai: {
|
||||
openaiApiKey: env.OPENAI_API_KEY,
|
||||
modelName: "gpt-4o-mini",
|
||||
modelName: env.OPENAI_MODEL_NAME,
|
||||
},
|
||||
auth: {
|
||||
secret: env.BETTER_AUTH_SECRET,
|
||||
|
||||
Reference in New Issue
Block a user