Skip to content
This repository was archived by the owner on Oct 15, 2025. It is now read-only.
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 4 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
**/src-tauri/**/*
**/.astro/**/*
**/.turbo/**/*
**/.svelte-kit/**/*
2 changes: 1 addition & 1 deletion .prettierrc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"plugins": ["prettier-plugin-svelte"],
"plugins": ["@prettier/plugin-oxc", "prettier-plugin-svelte"],
"overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }]
}
6 changes: 3 additions & 3 deletions apps/api/.env.example
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
BETTER_AUTH_SECRET=
BETTER_AUTH_URL=
DATABASE_URL=
MISTRAL_API_KEY=
OPENROUTER_API_KEY=
ELEVENLABS_API_KEY=
RESEND_API_KEY=
STRIPE_PRICE_ID=
STRIPE_SECRET_KEY=
STRIPE_WEBHOOK_SECRET=
LOGS_WEBHOOK_URL=
AI_DAILY_LIMIT=100
AI_DAILY_LIMIT_PRO=1000
AI_DAILY_LIMIT=50
AI_DAILY_LIMIT_PRO=250
36 changes: 34 additions & 2 deletions apps/api/.gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,34 @@
# deps
node_modules/
# dependencies (bun install)
node_modules

# output
out
dist
*.tgz

# code coverage
coverage
*.lcov

# logs
logs
_.log
report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json

# dotenv environment variable files
.env
.env.development.local
.env.test.local
.env.production.local
.env.local

# caches
.eslintcache
.cache
*.tsbuildinfo

# IntelliJ based IDEs
.idea

# Finder (MacOS) folder config
.DS_Store
1 change: 0 additions & 1 deletion apps/api/.tsbuildinfo

This file was deleted.

10 changes: 6 additions & 4 deletions apps/api/README.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
# Grinta API

To install dependencies:

```sh
```bash
bun install
```

To run:

```sh
bun run dev
```bash
bun run index.ts
```

open http://localhost:3000
This project was created using `bun init` in bun v1.2.7. [Bun](https://bun.sh) is a fast all-in-one JavaScript runtime.
42 changes: 11 additions & 31 deletions apps/api/drizzle/meta/0001_snapshot.json
Original file line number Diff line number Diff line change
Expand Up @@ -93,12 +93,8 @@
"name": "account_user_id_user_id_fk",
"tableFrom": "account",
"tableTo": "user",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"columnsFrom": ["user_id"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
}
Expand Down Expand Up @@ -160,12 +156,8 @@
"name": "ai_usage_user_id_user_id_fk",
"tableFrom": "ai_usage",
"tableTo": "user",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"columnsFrom": ["user_id"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
}
Expand Down Expand Up @@ -235,12 +227,8 @@
"name": "session_user_id_user_id_fk",
"tableFrom": "session",
"tableTo": "user",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"columnsFrom": ["user_id"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
}
Expand All @@ -250,9 +238,7 @@
"session_token_unique": {
"name": "session_token_unique",
"nullsNotDistinct": false,
"columns": [
"token"
]
"columns": ["token"]
}
},
"policies": {},
Expand Down Expand Up @@ -395,12 +381,8 @@
"name": "sync_data_user_id_user_id_fk",
"tableFrom": "sync_data",
"tableTo": "user",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"columnsFrom": ["user_id"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
}
Expand Down Expand Up @@ -471,9 +453,7 @@
"user_email_unique": {
"name": "user_email_unique",
"nullsNotDistinct": false,
"columns": [
"email"
]
"columns": ["email"]
}
},
"policies": {},
Expand Down Expand Up @@ -541,4 +521,4 @@
"schemas": {},
"tables": {}
}
}
}
2 changes: 1 addition & 1 deletion apps/api/drizzle/meta/_journal.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,4 @@
"breakpoints": true
}
]
}
}
45 changes: 19 additions & 26 deletions apps/api/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,42 +14,35 @@
"dist"
],
"scripts": {
"dev": "bun run --hot src/index.ts",
"build": "tsup",
"start": "node dist/index.js",
"dev": "NODE_OPTIONS='--max-old-space-size=4096' tsup --watch --onSuccess 'node dist/index.js'",
"build": "NODE_OPTIONS='--max-old-space-size=8192' tsup",
"start": "NODE_OPTIONS='--max-old-space-size=4096' node dist/index.js",
"cleanup": "rimraf node_modules .turbo dist",
"db:push": "drizzle-kit push",
"db:generate": "drizzle-kit generate",
"db:migrate": "drizzle-kit migrate",
"db:studio": "drizzle-kit studio",
"script:notify": "bun ./scripts/notify-deployed.ts"
},
"dependencies": {
"@ai-sdk/mistral": "^1.2.7",
"@ai-sdk/openai-compatible": "0.2.13",
"@better-auth/stripe": "1.2.8",
"@getgrinta/core": "workspace:*",
"@hono/node-server": "^1.14.2",
"@hono/node-ws": "^1.1.4",
"@hono/zod-openapi": "0.19.2",
"@open-draft/until": "2.1.0",
"@better-auth/stripe": "1.2.10",
"@openrouter/ai-sdk-provider": "^0.7.2",
"@orpc/server": "1.5.2",
"@rlimit/http": "0.0.5",
"@scalar/hono-api-reference": "0.7.5",
"ai": "4.3.14",
"better-auth": "1.2.8",
"dedent": "1.5.3",
"dotenv": "^16.5.0",
"drizzle-orm": "0.41.0",
"drizzle-zod": "0.7.1",
"elevenlabs": "^1.59.0",
"hono": "4.7.5",
"hono-pino": "^0.8.0",
"pino": "^9.7.0",
"postgres": "3.4.5",
"resend": "4.2.0",
"ai": "4.3.16",
"better-auth": "1.2.10",
"dedent": "1.6.0",
"drizzle-orm": "0.44.2",
"drizzle-zod": "0.8.2",
"elevenlabs": "1.59.0",
"h3": "2.0.0-beta.0",
"neverthrow": "^8.2.0",
"postgres": "3.4.7",
"resend": "4.6.0",
"stripe": "17.7.0",
"ts-pattern": "5.7.0"
"ts-pattern": "5.7.1"
},
"devDependencies": {
"drizzle-kit": "0.30.6"
"drizzle-kit": "0.31.2"
}
}
30 changes: 14 additions & 16 deletions apps/api/src/auth/index.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
import { stripe } from "@better-auth/stripe";
import { betterAuth } from "better-auth";
import { drizzleAdapter } from "better-auth/adapters/drizzle";
import { emailOTP, openAPI, oneTimeToken } from "better-auth/plugins";
import { emailOTP, openAPI, bearer } from "better-auth/plugins";
import Stripe from "stripe";
import { db } from "../db/index.js";
import { sendOtp } from "../utils/mail.utils.js";
import { sendOtp, isDisposableEmail } from "../utils/auth.utils.js";
import { env } from "../utils/env.utils.js";
import { isDisposableEmail } from "../utils/DISPOSABLE_EMAIL_DOMAINS.js";
import { APIError } from "better-auth/api";
import { sendWebhook } from "../utils/webhook.utils.js";

Expand All @@ -19,18 +18,18 @@ export const auth: ReturnType<typeof betterAuth> = betterAuth({
trustedOrigins: ["*"],
...(env.NODE_ENV === "production"
? {
advanced: {
crossSubDomainCookies: {
enabled: true,
domain: ".getgrinta.com",
},
defaultCookieAttributes: {
secure: true,
httpOnly: true,
sameSite: "none",
advanced: {
crossSubDomainCookies: {
enabled: true,
domain: ".getgrinta.com",
},
defaultCookieAttributes: {
secure: true,
httpOnly: true,
sameSite: "none",
},
},
},
}
}
: {}),
database: drizzleAdapter(db, {
provider: "pg",
Expand Down Expand Up @@ -67,7 +66,6 @@ export const auth: ReturnType<typeof betterAuth> = betterAuth({
await sendOtp({ to: email, code: otp });
},
}),
// @ts-expect-error
stripe({
stripeClient,
stripeWebhookSecret: env.STRIPE_WEBHOOK_SECRET,
Expand Down Expand Up @@ -99,6 +97,6 @@ export const auth: ReturnType<typeof betterAuth> = betterAuth({
},
}),
openAPI(),
oneTimeToken(),
bearer(),
],
});
Loading
Loading