Skip to content

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