A demo data application showcasing React (Vite) frontend with FastAPI backend, similar to Streamlit's "hello" example. Built for deployment in Keboola's python-js-base Docker image.
- Plotting Demo: Interactive line and bar charts displaying stock prices and sales data
- DataFrame Demo: Sortable, filterable, paginated data table with summary statistics
data-app-python-js-hello-world/
├── keboola-config/ # Keboola deployment configuration
│ ├── nginx/sites/ # Nginx reverse proxy config
│ ├── supervisord/services/# Process management configs
│ └── setup.sh # Dependency installation script
├── backend/ # FastAPI application
│ ├── app.py # API endpoints
│ ├── pyproject.toml # Python dependencies (uv)
│ └── data/ # Sample data generators
└── frontend/ # React application
├── src/
│ ├── pages/ # Demo pages
│ └── components/ # Shared components
├── package.json # Node dependencies
└── vite.config.js # Vite configuration
- Python 3.11+
- Node.js 18+
- uv (Python package manager)
cd backend
uv sync
uv run uvicorn app:app --reload --port 8050The API will be available at http://localhost:8050
In a separate terminal:
cd frontend
npm install
npm run devThe app will be available at http://localhost:5173
| Endpoint | Description |
|---|---|
GET /api/health |
Health check |
GET /api/plotting/line-data |
Stock price time series data |
GET /api/plotting/bar-data |
Sales by category data |
GET /api/dataframe/data |
Paginated employee records |
GET /api/dataframe/stats |
Summary statistics |
Line Data:
company- Filter by company namedays- Number of days (7-365, default: 90)
Bar Data:
region- Filter by region (North, South, East, West)
DataFrame Data:
page- Page number (default: 1)page_size- Items per page (5-50, default: 10)sort_by- Column to sort bysort_order- asc or descdepartment- Filter by departmentsearch- Search in name or email
cd frontend
npm run build
npm run preview # Serves on port 3000The app is configured for deployment in Keboola's python-js-base Docker image:
- Nginx listens on port 8888
- Routes
/api/*to FastAPI backend (port 8050) - Routes
/to Vite preview server (port 3000)
- Frontend: React 18, Vite, Recharts, TanStack Table
- Backend: FastAPI, Pandas, NumPy
- Infrastructure: Nginx, Supervisord