Tech Stack
Technologies
| Category |
Technology |
Version |
Purpose |
Rationale |
| Language (frontend) |
TypeScript |
^5.0.0 |
Frontend implementation |
Lets the generated API types be used directly |
| Language (backend) |
Python |
v3.9 or later |
Backend implementation |
The official Databricks SDK and connector assume Python |
| UI library |
React |
^18.2.0 |
Rendering the SPA |
Follows the structure of the Databricks Apps template |
| Build tool |
Vite |
^5.0.0 |
Dev server and builds |
Its output targets backend/static, enabling single-process serving |
| Framework |
FastAPI |
0.109.0 |
Serving the API and the SPA |
Automatic OpenAPI generation is the head of the type generation chain |
| ASGI server |
uvicorn |
0.27.0 |
Running the app |
Started by command in app.yaml |
| DWH |
Databricks SQL Warehouse / Unity Catalog |
- |
Storing and serving pre-aggregated views |
The existing data platform is the target as-is |
| Infrastructure |
Databricks Apps |
- |
Hosting the app |
Everything stays inside the same workspace as the data platform |
| CI/CD |
GitHub Actions |
- |
Per-branch deployment |
Can authenticate to Databricks via OIDC |
Key Libraries
| Library |
Version |
Purpose |
| @tanstack/react-query |
^5.90.7 |
Data fetching and caching; the base of the orval-generated hooks |
| axios |
^1.13.2 |
HTTP client |
| chart.js / react-chartjs-2 |
^4.4.0 / ^5.2.0 |
Rendering charts of aggregation results |
| react-router-dom |
^7.9.5 |
SPA routing |
| sass |
^1.93.3 |
SCSS compilation |
| orval |
^7.16.0 |
Generates a React Query client from openapi.yaml |
| hygen |
^6.2.11 |
Scaffolds components (npm run generate:component) |
| eslint / prettier |
^9.39.1 / ^3.6.2 |
Linting and formatting; run in pre-commit |
| husky |
^9.1.7 |
Git hooks |
| databricks-sql-connector |
3.4.0 |
Connecting to the SQL Warehouse |
| pydantic |
Bundled with FastAPI |
Request/response models |
| pyyaml / python-dotenv |
6.0.2 / 1.0.1 |
Loading config from databricks.yml / app.yaml / .env |
Type generation chain
Only the leftmost item is hand-written; everything to the right is generated.
backend/models/*.py + response_model in routes
โ scripts/generate_openapi.py
โ frontend/src/api/openapi.yaml
โ orval (orval.config.ts)
โ frontend/src/api/generated/{client.ts, models/*}
npm run generate:client runs the last two steps together. Always regenerate after changing the API.
Under Consideration / Deprecated
| Technology |
Status |
Notes |
| databricks-sdk |
Needs to be added |
Required for metadata retrieval (table listing) but missing from requirements.txt. The app starts without it, but the relevant endpoint returns 503 |
| Test runner |
Not introduced |
Neither test code nor a runner exists. See Test Cases |
The directory name nodejs-fastapi-hello-world-app |
Rename candidate |
Comes from the Databricks template and has nothing to do with the app's contents |
nodejs-fastapi-hello-world-app/.husky/pre-commit |
Removal candidate |
A dead file that is never used. The hook that runs is .husky/pre-commit at the repository root |
/api/data_sql / /api/dm_vis_jreslso_tokyo23_comp_test |
Sample |
Development endpoints with a hardcoded view name, superseded by the generic /api/catalogs/... endpoints |