@odvi/create-dtt-framework 0.1.5 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/dist/index.js +0 -0
  2. package/dist/utils/template.js +1 -0
  3. package/dist/utils/template.js.map +1 -1
  4. package/package.json +50 -51
  5. package/template/.env.example +106 -103
  6. package/template/README.md +157 -7
  7. package/template/docs/framework/deployment/environment-variables.md +3 -4
  8. package/template/docs/framework/environment-variables.md +13 -25
  9. package/template/docs/framework/health-check-system.md +1 -0
  10. package/template/docs/framework/snowflake-integration.md +19 -16
  11. package/template/docs/framework/supabase-integration.md +1 -0
  12. package/template/drizzle.config.ts +0 -1
  13. package/template/src/config/__tests__/env.test.ts +6 -8
  14. package/template/src/config/env.ts +8 -8
  15. package/template/src/features/health-check/components/health-dashboard.tsx +12 -1
  16. package/template/src/features/health-check/config.ts +0 -1
  17. package/template/src/lib/nextbank/client.ts +53 -23
  18. package/template/src/lib/snowflake/client.ts +64 -15
  19. package/template/src/server/api/routes/health/database.ts +49 -25
  20. package/template/src/server/api/routes/health/edge-functions.ts +58 -26
  21. package/template/src/server/api/routes/health/framework.ts +10 -7
  22. package/template/src/server/api/routes/health/nextbank.ts +12 -33
  23. package/template/src/server/api/routes/health/snowflake.ts +2 -2
  24. package/template/src/server/api/routes/health/storage.ts +14 -0
  25. package/template/src/server/api/routes/users.ts +14 -30
  26. package/template/src/server/db/schema.ts +1 -26
  27. package/template/supabase/.temp/cli-latest +1 -0
  28. package/template/supabase/functions/health-check/index.ts +84 -0
  29. package/template/tsconfig.json +1 -1
package/dist/index.js CHANGED
File without changes
@@ -82,6 +82,7 @@ async function copyFromSource(targetDir, template) {
82
82
  'src',
83
83
  'public',
84
84
  'docs',
85
+ 'supabase',
85
86
  'components.json',
86
87
  'next.config.js',
87
88
  'postcss.config.js',
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/utils/template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/utils/template.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,51 +1,50 @@
1
- {
2
- "name": "@odvi/create-dtt-framework",
3
- "version": "0.1.5",
4
- "description": "CLI tool to scaffold new projects with DTT Framework",
5
- "type": "module",
6
- "bin": {
7
- "create-dtt-framework": "./dist/index.js"
8
- },
9
- "files": [
10
- "dist",
11
- "template"
12
- ],
13
- "scripts": {
14
- "build": "tsc",
15
- "dev": "tsc --watch",
16
- "sync-template": "node scripts/sync-template.js",
17
- "prepublishOnly": "pnpm sync-template && pnpm build"
18
- },
19
- "dependencies": {
20
- "chalk": "^5.3.0",
21
- "commander": "^12.1.0",
22
- "inquirer": "^9.2.23",
23
- "ora": "^8.1.0",
24
- "fs-extra": "^11.2.0"
25
- },
26
- "devDependencies": {
27
- "@types/fs-extra": "^11.0.4",
28
- "@types/inquirer": "^9.0.7",
29
- "@types/node": "^20.14.10",
30
- "typescript": "^5.8.2"
31
- },
32
- "engines": {
33
- "node": ">=18.0.0"
34
- },
35
- "keywords": [
36
- "dtt-framework",
37
- "cli",
38
- "scaffold",
39
- "next.js",
40
- "typescript"
41
- ],
42
- "license": "MIT",
43
- "author": "DTT Framework",
44
- "repository": {
45
- "type": "git",
46
- "url": "https://github.com/odvidtt/dtt-framework.git"
47
- },
48
- "publishConfig": {
49
- "access": "public"
50
- }
51
- }
1
+ {
2
+ "name": "@odvi/create-dtt-framework",
3
+ "version": "0.1.7",
4
+ "description": "CLI tool to scaffold new projects with DTT Framework",
5
+ "type": "module",
6
+ "bin": {
7
+ "create-dtt-framework": "./dist/index.js"
8
+ },
9
+ "files": [
10
+ "dist",
11
+ "template"
12
+ ],
13
+ "dependencies": {
14
+ "chalk": "^5.3.0",
15
+ "commander": "^12.1.0",
16
+ "inquirer": "^9.2.23",
17
+ "ora": "^8.1.0",
18
+ "fs-extra": "^11.2.0"
19
+ },
20
+ "devDependencies": {
21
+ "@types/fs-extra": "^11.0.4",
22
+ "@types/inquirer": "^9.0.7",
23
+ "@types/node": "^20.14.10",
24
+ "typescript": "^5.8.2"
25
+ },
26
+ "engines": {
27
+ "node": ">=18.0.0"
28
+ },
29
+ "keywords": [
30
+ "dtt-framework",
31
+ "cli",
32
+ "scaffold",
33
+ "next.js",
34
+ "typescript"
35
+ ],
36
+ "license": "MIT",
37
+ "author": "DTT Framework",
38
+ "repository": {
39
+ "type": "git",
40
+ "url": "https://github.com/odvidtt/dtt-framework.git"
41
+ },
42
+ "publishConfig": {
43
+ "access": "public"
44
+ },
45
+ "scripts": {
46
+ "build": "tsc",
47
+ "dev": "tsc --watch",
48
+ "sync-template": "node scripts/sync-template.js"
49
+ }
50
+ }
@@ -1,103 +1,106 @@
1
- # Since the ".env" file is gitignored, you can use the ".env.example" file to
2
- # build a new ".env" file when you clone the repo. Keep this file up-to-date
3
- # when you add new variables to `.env`.
4
-
5
- # This file will be committed to version control, so make sure not to have any
6
- # secrets in it. If you are cloning this repo, create a copy of this file named
7
- # ".env" and populate it with your secrets.
8
-
9
- # When adding additional environment variables, the schema in "/src/env.js"
10
- # should be updated accordingly.
11
-
12
- # ========================================
13
- # App Configuration
14
- # ========================================
15
- # The base URL of your application. Used for redirects, webhooks, and callbacks.
16
- # In development: http://localhost:3000
17
- # In production: https://your-domain.com
18
- NEXT_PUBLIC_APP_URL=http://localhost:3000
19
-
20
- # ========================================
21
- # Clerk Authentication
22
- # ========================================
23
- # Clerk publishable key - used on the client side for authentication
24
- # Get this from your Clerk Dashboard > API Keys > Publishable Key
25
- NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_xxx
26
-
27
- # Clerk secret key - used on the server side for authentication
28
- # Get this from your Clerk Dashboard > API Keys > Secret Key
29
- CLERK_SECRET_KEY=sk_test_xxx
30
-
31
- # Clerk webhook secret - used to verify webhook events from Clerk
32
- # Get this from your Clerk Dashboard > Webhooks > Add Endpoint > Signing Secret
33
- CLERK_WEBHOOK_SECRET=whsec_xxx
34
-
35
- # URL path for the sign-in page
36
- NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in
37
-
38
- # URL path for the sign-up page
39
- NEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up
40
-
41
- # Where to redirect users after successful sign-in
42
- NEXT_PUBLIC_CLERK_AFTER_SIGN_IN_URL=/health
43
-
44
- # Where to redirect users after successful sign-up
45
- NEXT_PUBLIC_CLERK_AFTER_SIGN_UP_URL=/health
46
-
47
- # ========================================
48
- # Supabase
49
- # ========================================
50
- # Supabase project URL - found in your Supabase project settings
51
- NEXT_PUBLIC_SUPABASE_URL=https://xxx.supabase.co
52
-
53
- # Supabase anonymous/public key - safe to expose on client side
54
- # Found in your Supabase project settings under API keys
55
- NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJxxx
56
-
57
- # Supabase service role key - full admin access, keep secret!
58
- # Found in your Supabase project settings under API keys
59
- SUPABASE_SERVICE_ROLE_KEY=eyJxxx
60
-
61
- # PostgreSQL connection string for Drizzle ORM
62
- # Use Supabase's Transaction mode pooler for better performance
63
- # Format: postgresql://postgres.[ref]:[password]@aws-0-[region].pooler.supabase.com:6543/postgres
64
- DATABASE_URL=postgresql://postgres.[ref]:[password]@aws-0-[region].pooler.supabase.com:6543/postgres
65
-
66
- # ========================================
67
- # Snowflake Data Warehouse
68
- # ========================================
69
- # Snowflake account identifier (e.g., xxx.us-east-1)
70
- SNOWFLAKE_ACCOUNT=xxx.us-east-1
71
-
72
- # Snowflake username for authentication
73
- SNOWFLAKE_USERNAME=xxx
74
-
75
- # Snowflake password for authentication
76
- SNOWFLAKE_PASSWORD=xxx
77
-
78
- # Snowflake virtual warehouse to use for queries
79
- SNOWFLAKE_WAREHOUSE=COMPUTE_WH
80
-
81
- # Snowflake database name
82
- SNOWFLAKE_DATABASE=ANALYTICS
83
-
84
- # Snowflake schema name within the database
85
- SNOWFLAKE_SCHEMA=PUBLIC
86
-
87
- # Snowflake role with appropriate permissions
88
- SNOWFLAKE_ROLE=ANALYST
89
-
90
- # ========================================
91
- # NextBank API (Placeholder)
92
- # ========================================
93
- # Base URL for the NextBank API endpoint
94
- NEXTBANK_API_URL=https://api.nextbank.com
95
-
96
- # API key for NextBank authentication
97
- NEXTBANK_API_KEY=xxx
98
-
99
- # OAuth client ID for NextBank integration
100
- NEXTBANK_CLIENT_ID=xxx
101
-
102
- # OAuth client secret for NextBank integration
103
- NEXTBANK_CLIENT_SECRET=xxx
1
+ # Since the ".env" file is gitignored, you can use the ".env.example" file to
2
+ # build a new ".env" file when you clone the repo. Keep this file up-to-date
3
+ # when you add new variables to `.env`.
4
+
5
+ # This file will be committed to version control, so make sure not to have any
6
+ # secrets in it. If you are cloning this repo, create a copy of this file named
7
+ # ".env" and populate it with your secrets.
8
+
9
+ # When adding additional environment variables, the schema in "/src/env.js"
10
+ # should be updated accordingly.
11
+
12
+ # ========================================
13
+ # App Configuration
14
+ # ========================================
15
+ # The base URL of your application. Used for redirects, webhooks, and callbacks.
16
+ # In development: http://localhost:3000
17
+ # In production: https://your-domain.com
18
+ NEXT_PUBLIC_APP_URL=http://localhost:3000
19
+
20
+ # ========================================
21
+ # Clerk Authentication
22
+ # ========================================
23
+ # Clerk publishable key - used on the client side for authentication
24
+ # Get this from your Clerk Dashboard > API Keys > Publishable Key
25
+ NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_xxx
26
+
27
+ # Clerk secret key - used on the server side for authentication
28
+ # Get this from your Clerk Dashboard > API Keys > Secret Key
29
+ CLERK_SECRET_KEY=sk_test_xxx
30
+
31
+ # Clerk webhook secret - used to verify webhook events from Clerk
32
+ # Get this from your Clerk Dashboard > Webhooks > Add Endpoint > Signing Secret
33
+ CLERK_WEBHOOK_SECRET=whsec_xxx
34
+
35
+ # URL path for the sign-in page
36
+ NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in
37
+
38
+ # URL path for the sign-up page
39
+ NEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up
40
+
41
+ # Where to redirect users after successful sign-in
42
+ NEXT_PUBLIC_CLERK_AFTER_SIGN_IN_URL=/health
43
+
44
+ # Where to redirect users after successful sign-up
45
+ NEXT_PUBLIC_CLERK_AFTER_SIGN_UP_URL=/health
46
+
47
+ # ========================================
48
+ # Supabase
49
+ # ========================================
50
+ # Supabase project URL - found in your Supabase project settings
51
+ NEXT_PUBLIC_SUPABASE_URL=https://xxx.supabase.co
52
+
53
+ # Supabase anonymous/public key - safe to expose on client side
54
+ # Found in your Supabase project settings under API keys
55
+ NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJxxx
56
+
57
+ # Supabase service role key - full admin access, keep secret!
58
+ # Found in your Supabase project settings under API keys
59
+ SUPABASE_SERVICE_ROLE_KEY=eyJxxx
60
+
61
+ # PostgreSQL connection string for Drizzle ORM
62
+ # Use Supabase's Transaction mode pooler for better performance
63
+ # Format: postgresql://postgres.[ref]:[password]@aws-0-[region].pooler.supabase.com:6543/postgres
64
+ DATABASE_URL=postgresql://postgres.[ref]:[password]@aws-0-[region].pooler.supabase.com:6543/postgres
65
+
66
+ # ========================================
67
+ # Snowflake Data Warehouse
68
+ # ========================================
69
+ # Snowflake account identifier (e.g., ef19411.ap-southeast-1)
70
+ SNOWFLAKE_ACCOUNT=ef19411.ap-southeast-1
71
+
72
+ # Snowflake warehouse to use
73
+ SNOWFLAKE_WAREHOUSE=COMPUTE_WH
74
+
75
+ # Snowflake role
76
+ SNOWFLAKE_ROLE=ACCOUNTADMIN
77
+
78
+ # Authentication method (SNOWFLAKE_JWT for Key Pair Auth)
79
+ SNOWFLAKE_AUTHENTICATOR=SNOWFLAKE_JWT
80
+
81
+ # Snowflake username
82
+ SNOWFLAKE_USERNAME=APP_USER_WITH_KEY_AUTH
83
+
84
+ # Private Key for Authentication (PEM format)
85
+ SNOWFLAKE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----
86
+ ...
87
+ -----END PRIVATE KEY-----"
88
+
89
+ # Passphrase for the Private Key (if encrypted)
90
+ SNOWFLAKE_PRIVATE_KEY_PASSPHRASE="<password>"
91
+
92
+ # Enable logging (optional)
93
+ SNOWFLAKE_LOGGING=true
94
+
95
+ # ========================================
96
+ # NextBank API (Placeholder)
97
+ # ========================================
98
+ # Base URL for the NextBank API endpoint
99
+ NEXTBANK_API=https://api.nextbank.com
100
+
101
+ # Username for NextBank Basic Authentication
102
+ NEXTBANK_API_USERNAME=user
103
+
104
+ # Password for NextBank Basic Authentication
105
+ NEXTBANK_API_PASSWORD=pass
106
+
@@ -2,25 +2,64 @@
2
2
 
3
3
  This is a DTT Framework application created with the CLI.
4
4
 
5
- ## Getting Started
5
+ ## Quick Start
6
6
 
7
- First, install dependencies:
7
+ ### Prerequisites
8
+
9
+ - **Node.js** 20 or higher
10
+ - **pnpm** 10 or higher
11
+ - **Supabase account** ([Sign up](https://supabase.com/))
12
+ - **Clerk account** ([Sign up](https://clerk.com/))
13
+ - **Snowflake account** (optional)
14
+
15
+ ### 1. Environment Setup
16
+
17
+ Copy the example environment file and fill in your credentials:
8
18
 
9
19
  ```bash
10
- pnpm install
20
+ cp .env.example .env
11
21
  ```
12
22
 
13
- Then, run the development server:
23
+ Edit `.env` and fill in the required keys for Clerk and Supabase. See [Environment Variables](docs/framework/environment-variables.md) for details.
24
+
25
+ ### 2. Database Setup
26
+
27
+ Push the database schema to your Supabase project:
28
+
29
+ ```bash
30
+ pnpm db:push
31
+ ```
32
+
33
+ This will create the necessary tables, including `health_check_tests` required for the health dashboard.
34
+
35
+ ### 3. Deploy Edge Functions
36
+
37
+ The health check system requires a Supabase Edge Function. Deploy it using the Supabase CLI:
38
+
39
+ ```bash
40
+ # Login to Supabase
41
+ npx supabase login
42
+
43
+ # Link your project (get your-project-ref from Supabase dashboard URL)
44
+ npx supabase link --project-ref your-project-ref
45
+
46
+ # Deploy the function
47
+ npx supabase functions deploy health-check
48
+ ```
49
+
50
+ ### 4. Start Development Server
14
51
 
15
52
  ```bash
16
53
  pnpm dev
17
54
  ```
18
55
 
19
- Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
56
+ Open [http://localhost:3000](http://localhost:3000) with your browser.
57
+
58
+ ### 5. Verify Health
20
59
 
21
- ## Learn More
60
+ Visit [http://localhost:3000/health](http://localhost:3000/health) to verify all services are connected and working.
22
61
 
23
- To learn more about DTT Framework, visit the [documentation](./docs/framework/01-overview.md).
62
+ ---
24
63
 
25
64
  ## Documentation
26
65
 
@@ -28,3 +67,114 @@ To learn more about DTT Framework, visit the [documentation](./docs/framework/01
28
67
  - [Tech Stack](./docs/framework/02-techstack.md)
29
68
  - [Environment Variables](./docs/framework/environment-variables.md)
30
69
  - [CLI Installation](./docs/framework/cli-installation.md)
70
+ - [Health Check System](./docs/framework/health-check-system.md)
71
+ - [Clerk Authentication](./docs/framework/clerk-authentication.md)
72
+ - [Supabase Integration](./docs/framework/supabase-integration.md)
73
+ - [Snowflake Integration](./docs/framework/snowflake-integration.md)
74
+
75
+ ## Key Features
76
+
77
+ ### 1. Authentication & User Management
78
+ - **Clerk Integration**: Complete authentication solution with sign-in, sign-up, and user management
79
+ - **Organization Support**: Multi-tenant architecture with organization memberships
80
+ - **Webhook Synchronization**: Automatic user data sync to local database
81
+ - **Protected Routes**: Middleware-based route protection
82
+
83
+ ### 2. Database Layer
84
+ - **PostgreSQL**: Robust relational database via Supabase
85
+ - **Drizzle ORM**: Type-safe database queries with excellent TypeScript support
86
+ - **Connection Pooling**: Optimized for Supabase Transaction mode
87
+ - **Schema Management**: Migration-based schema evolution
88
+
89
+ ### 3. Storage & Edge Computing
90
+ - **Supabase Storage**: File upload/download with signed URLs
91
+ - **Edge Functions**: Serverless compute with auth header passthrough
92
+ - **Bucket Management**: Organized file storage structure
93
+
94
+ ### 4. Data Warehouse
95
+ - **Snowflake Integration**: Direct connection to Snowflake data warehouse
96
+ - **Query Execution**: Execute SQL queries from the application
97
+ - **Warehouse Configuration**: Support for multiple warehouses and databases
98
+
99
+ ### 5. API Layer
100
+ - **Hono Framework**: Lightweight and fast API framework
101
+ - **Middleware Support**: Authentication, logging, CORS
102
+ - **Route Organization**: Modular route structure
103
+ - **Type Safety**: Full TypeScript support with inferred types
104
+
105
+ ### 6. State Management
106
+ - **TanStack Query**: Server state management with caching and synchronization
107
+ - **Zustand**: Lightweight client state management
108
+ - **React Hooks**: Custom hooks for common patterns
109
+
110
+ ### 7. Health Check System
111
+ - **Comprehensive Monitoring**: Health checks for all integrated services
112
+ - **Dashboard UI**: Visual health status display
113
+ - **Response Time Tracking**: Performance monitoring
114
+ - **Error Reporting**: Detailed error messages and status codes
115
+
116
+ ### 8. Developer Experience
117
+ - **TypeScript**: Full type safety across the stack
118
+ - **Tailwind CSS**: Utility-first styling
119
+ - **Shadcn/ui**: Beautiful, accessible UI components
120
+ - **Hot Reload**: Fast development with Next.js Turbo
121
+ - **Linting & Formatting**: ESLint and Prettier configured
122
+
123
+ ## Folder Structure
124
+
125
+ ```
126
+ dtt-framework/
127
+ ├── docs/ # Framework documentation
128
+ ├── public/ # Static assets
129
+ ├── src/ # Source code
130
+ │ ├── app/ # Next.js App Router
131
+ │ ├── components/ # React components
132
+ │ ├── features/ # Feature modules
133
+ │ ├── hooks/ # React hooks
134
+ │ ├── lib/ # Utility libraries and clients
135
+ │ ├── server/ # Server-side code (API, database)
136
+ │ ├── stores/ # Zustand state stores
137
+ │ ├── types/ # TypeScript types
138
+ │ ├── config/ # Configuration files
139
+ │ ├── env.js # Environment variables
140
+ │ ├── middleware.ts # Next.js middleware
141
+ │ └── styles/ # Styles
142
+ ├── .env.example # Environment variables template
143
+ ├── drizzle.config.ts # Drizzle ORM configuration
144
+ ├── next.config.js # Next.js configuration
145
+ ├── package.json # Dependencies and scripts
146
+ └── README.md # This file
147
+ ```
148
+
149
+ ## Development
150
+
151
+ ### Available Scripts
152
+
153
+ | Script | Description |
154
+ |--------|-------------|
155
+ | `pnpm dev` | Start development server with Turbo |
156
+ | `pnpm build` | Build for production |
157
+ | `pnpm start` | Start production server |
158
+ | `pnpm lint` | Run ESLint |
159
+ | `pnpm format:write` | Format code with Prettier |
160
+ | `pnpm typecheck` | Run TypeScript type checking |
161
+ | `pnpm db:generate` | Generate database migrations |
162
+ | `pnpm db:migrate` | Apply database migrations |
163
+ | `pnpm db:push` | Push schema changes to database |
164
+ | `pnpm db:studio` | Open Drizzle Studio |
165
+
166
+ ## Deployment
167
+
168
+ For deployment instructions, please refer to the [Deployment Guide](docs/framework/deployment/vercel.md).
169
+
170
+ ## Support
171
+
172
+ If you need help:
173
+
174
+ 1. **Check the documentation** in `docs/` folder
175
+ 2. **Check the health dashboard** at `/health`
176
+ 3. **Open an issue** on GitHub
177
+
178
+ ## License
179
+
180
+ MIT
@@ -63,10 +63,9 @@ This document provides a comprehensive guide to managing environment variables f
63
63
 
64
64
  | Variable Name | Type | Required | Description | Example |
65
65
  |---------------|------|----------|-------------|---------|
66
- | `NEXTBANK_API_URL` | Server | No | NextBank API endpoint | `https://api.nextbank.com` |
67
- | `NEXTBANK_API_KEY` | Server | No | NextBank API key | `xxx` |
68
- | `NEXTBANK_CLIENT_ID` | Server | No | NextBank OAuth client ID | `xxx` |
69
- | `NEXTBANK_CLIENT_SECRET` | Server | No | NextBank OAuth client secret | `xxx` |
66
+ | `NEXTBANK_API` | Server | No | NextBank API endpoint | `https://api.nextbank.com` |
67
+ | `NEXTBANK_API_USERNAME` | Server | No | NextBank API username | `user` |
68
+ | `NEXTBANK_API_PASSWORD` | Server | No | NextBank API password | `pass` |
70
69
 
71
70
  ---
72
71
 
@@ -102,16 +102,13 @@ SNOWFLAKE_ROLE=ANALYST
102
102
  # ============================================
103
103
 
104
104
  # NextBank API URL
105
- NEXTBANK_API_URL=https://api.nextbank.com
105
+ NEXTBANK_API=https://api.nextbank.com
106
106
 
107
- # NextBank API key
108
- NEXTBANK_API_KEY=xxx
107
+ # NextBank API username
108
+ NEXTBANK_API_USERNAME=user
109
109
 
110
- # NextBank OAuth client ID
111
- NEXTBANK_CLIENT_ID=xxx
112
-
113
- # NextBank OAuth client secret
114
- NEXTBANK_CLIENT_SECRET=xxx
110
+ # NextBank API password
111
+ NEXTBANK_API_PASSWORD=pass
115
112
  ```
116
113
 
117
114
  ---
@@ -425,40 +422,31 @@ SNOWFLAKE_ROLE=ANALYST
425
422
 
426
423
  **Note:** NextBank is a placeholder integration. These variables are optional and not currently used.
427
424
 
428
- #### NEXTBANK_API_URL
425
+ #### NEXTBANK_API
429
426
 
430
427
  **Purpose:** NextBank API endpoint
431
428
 
432
429
  **Example:**
433
430
  ```bash
434
- NEXTBANK_API_URL=https://api.nextbank.com
435
- ```
436
-
437
- #### NEXTBANK_API_KEY
438
-
439
- **Purpose:** API key for NextBank
440
-
441
- **Example:**
442
- ```bash
443
- NEXTBANK_API_KEY=xxx
431
+ NEXTBANK_API=https://api.nextbank.com
444
432
  ```
445
433
 
446
- #### NEXTBANK_CLIENT_ID
434
+ #### NEXTBANK_API_USERNAME
447
435
 
448
- **Purpose:** OAuth client ID
436
+ **Purpose:** API username for NextBank
449
437
 
450
438
  **Example:**
451
439
  ```bash
452
- NEXTBANK_CLIENT_ID=xxx
440
+ NEXTBANK_API_USERNAME=user
453
441
  ```
454
442
 
455
- #### NEXTBANK_CLIENT_SECRET
443
+ #### NEXTBANK_API_PASSWORD
456
444
 
457
- **Purpose:** OAuth client secret
445
+ **Purpose:** API password for NextBank
458
446
 
459
447
  **Example:**
460
448
  ```bash
461
- NEXTBANK_CLIENT_SECRET=xxx
449
+ NEXTBANK_API_PASSWORD=pass
462
450
  ```
463
451
 
464
452
  ---
@@ -564,6 +564,7 @@ try {
564
564
  - Check service logs for detailed error messages
565
565
  - Verify network connectivity to the service
566
566
  - Check if service is running and accessible
567
+ - For Supabase Database: Ensure migrations are applied (`pnpm db:push` or `pnpm db:migrate`) so `health_check_tests` table exists
567
568
 
568
569
  **Issue: Health check is slow**
569
570