@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.
- package/dist/index.js +0 -0
- package/dist/utils/template.js +1 -0
- package/dist/utils/template.js.map +1 -1
- package/package.json +50 -51
- package/template/.env.example +106 -103
- package/template/README.md +157 -7
- package/template/docs/framework/deployment/environment-variables.md +3 -4
- package/template/docs/framework/environment-variables.md +13 -25
- package/template/docs/framework/health-check-system.md +1 -0
- package/template/docs/framework/snowflake-integration.md +19 -16
- package/template/docs/framework/supabase-integration.md +1 -0
- package/template/drizzle.config.ts +0 -1
- package/template/src/config/__tests__/env.test.ts +6 -8
- package/template/src/config/env.ts +8 -8
- package/template/src/features/health-check/components/health-dashboard.tsx +12 -1
- package/template/src/features/health-check/config.ts +0 -1
- package/template/src/lib/nextbank/client.ts +53 -23
- package/template/src/lib/snowflake/client.ts +64 -15
- package/template/src/server/api/routes/health/database.ts +49 -25
- package/template/src/server/api/routes/health/edge-functions.ts +58 -26
- package/template/src/server/api/routes/health/framework.ts +10 -7
- package/template/src/server/api/routes/health/nextbank.ts +12 -33
- package/template/src/server/api/routes/health/snowflake.ts +2 -2
- package/template/src/server/api/routes/health/storage.ts +14 -0
- package/template/src/server/api/routes/users.ts +14 -30
- package/template/src/server/db/schema.ts +1 -26
- package/template/supabase/.temp/cli-latest +1 -0
- package/template/supabase/functions/health-check/index.ts +84 -0
- package/template/tsconfig.json +1 -1
package/dist/index.js
CHANGED
|
File without changes
|
package/dist/utils/template.js
CHANGED
|
@@ -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.
|
|
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
|
-
"
|
|
14
|
-
"
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
"
|
|
22
|
-
"inquirer": "^9.
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
},
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
"
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
"
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
|
|
42
|
-
"
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
"
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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
|
+
}
|
package/template/.env.example
CHANGED
|
@@ -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.,
|
|
70
|
-
SNOWFLAKE_ACCOUNT=
|
|
71
|
-
|
|
72
|
-
# Snowflake
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
# Snowflake
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
#
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
# Snowflake
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
#
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
#
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
# API
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
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
|
+
|
package/template/README.md
CHANGED
|
@@ -2,25 +2,64 @@
|
|
|
2
2
|
|
|
3
3
|
This is a DTT Framework application created with the CLI.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Quick Start
|
|
6
6
|
|
|
7
|
-
|
|
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
|
-
|
|
20
|
+
cp .env.example .env
|
|
11
21
|
```
|
|
12
22
|
|
|
13
|
-
|
|
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
|
|
56
|
+
Open [http://localhost:3000](http://localhost:3000) with your browser.
|
|
57
|
+
|
|
58
|
+
### 5. Verify Health
|
|
20
59
|
|
|
21
|
-
|
|
60
|
+
Visit [http://localhost:3000/health](http://localhost:3000/health) to verify all services are connected and working.
|
|
22
61
|
|
|
23
|
-
|
|
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
|
-
| `
|
|
67
|
-
| `
|
|
68
|
-
| `
|
|
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
|
-
|
|
105
|
+
NEXTBANK_API=https://api.nextbank.com
|
|
106
106
|
|
|
107
|
-
# NextBank API
|
|
108
|
-
|
|
107
|
+
# NextBank API username
|
|
108
|
+
NEXTBANK_API_USERNAME=user
|
|
109
109
|
|
|
110
|
-
# NextBank
|
|
111
|
-
|
|
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
|
-
####
|
|
425
|
+
#### NEXTBANK_API
|
|
429
426
|
|
|
430
427
|
**Purpose:** NextBank API endpoint
|
|
431
428
|
|
|
432
429
|
**Example:**
|
|
433
430
|
```bash
|
|
434
|
-
|
|
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
|
-
####
|
|
434
|
+
#### NEXTBANK_API_USERNAME
|
|
447
435
|
|
|
448
|
-
**Purpose:**
|
|
436
|
+
**Purpose:** API username for NextBank
|
|
449
437
|
|
|
450
438
|
**Example:**
|
|
451
439
|
```bash
|
|
452
|
-
|
|
440
|
+
NEXTBANK_API_USERNAME=user
|
|
453
441
|
```
|
|
454
442
|
|
|
455
|
-
####
|
|
443
|
+
#### NEXTBANK_API_PASSWORD
|
|
456
444
|
|
|
457
|
-
**Purpose:**
|
|
445
|
+
**Purpose:** API password for NextBank
|
|
458
446
|
|
|
459
447
|
**Example:**
|
|
460
448
|
```bash
|
|
461
|
-
|
|
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
|
|