An experimental Generative BI (Business Intelligence) tool that leverages Large Language Models to generate data visualizations on the fly.
Starkiller reimagines traditional BI dashboarding by using AI to dynamically create data visualizations based on natural language queries. Instead of pre-built dashboards, users can ask questions about their data and receive intelligent, contextual visualizations generated in real-time.
- AI-Powered Visualization: Generate charts, graphs, and dashboards using natural language
- Dynamic Analysis: Ask questions and get instant visual insights
- Flexible Data Sources: Connect to various data sources and databases
- Interactive Dashboards: Explore and refine visualizations interactively
- Smart Recommendations: AI suggests relevant visualizations based on your data
| Frontend | Backend |
|---|---|
| React 19 + TypeScript | Python FastAPI |
| Vite | SQLAlchemy (async) |
| Tailwind CSS | Anthropic Claude & Gemini |
| shadcn/ui | Pandas/NumPy |
| Recharts | Alembic + PostgreSQL |
The easiest way to run Starkiller is with Docker Compose, which starts the UI, API, and PostgreSQL database together.
- Docker and Docker Compose
- An Anthropic API key or Google Gemini API key
git clone https://github.com/yourusername/starkiller.git
cd starkiller
# Configure the API environment
cp api/.env.example api/.envEdit api/.env and configure your preferred LLM provider:
# Supported providers: anthropic, gemini
LLM_PROVIDER=anthropic
# If using Anthropic
ANTHROPIC_API_KEY=sk-ant-your-key-here
# If using Gemini
GEMINI_API_KEY=your-gemini-key-heredocker compose up --buildIn a new terminal, run migrations and seed sample data:
# Run database migrations
docker compose exec api alembic upgrade head
# Seed external sample databases
docker compose exec api python scripts/seed_connection_data.py
# Seed application data sources
docker compose exec api python scripts/seed_data_sources.py
# Seed sample dashboards
docker compose exec api python scripts/seed_dashboards.py| Service | URL |
|---|---|
| UI | http://localhost:3000 |
| API | http://localhost:8000 |
| API Docs (Swagger) | http://localhost:8000/docs |
| API Docs (ReDoc) | http://localhost:8000/redoc |
For development without Docker, you'll need to run the frontend and backend separately.
- Node.js 18+ and npm 9+
- Python 3.11+
- PostgreSQL 15+
- An Anthropic API key or Google Gemini API key
cd api
# Create and activate virtual environment
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# Install dependencies
pip install -e ".[dev]"
# Configure environment
cp .env.example .env
# Edit .env and configure your LLM provider
# Example for Gemini:
# LLM_PROVIDER=gemini
# GEMINI_API_KEY=your-key-here
# Run migrations
alembic upgrade head
# Start the API server
uvicorn main:app --reloadcd ui
# Install dependencies
npm install
# Start the development server
npm run devWith PostgreSQL running locally:
cd api
source .venv/bin/activate
# Set admin connection for creating external databases
export ADMIN_DB_URL=postgresql://postgres:postgres@localhost:5432/postgres
# Seed in order
python scripts/seed_connection_data.py # External sample databases
python scripts/seed_data_sources.py # Application data sources
python scripts/seed_dashboards.py # Sample dashboards| Service | URL |
|---|---|
| UI | http://localhost:5173 |
| API | http://localhost:8000 |
cd api
pytest # Run all tests
pytest --cov=. --cov-report=html # With coverage report
pytest tests/unit/ # Unit tests only
pytest -k "test_name" # Run specific testcd ui
npm run build # Build frontend
npm run preview # Preview production buildcd ui
npx shadcn@latest add <component-name>cd ui
npm run lint| Variable | Description | Default |
|---|---|---|
LLM_PROVIDER |
LLM provider (anthropic, gemini) |
anthropic |
ANTHROPIC_API_KEY |
Anthropic API key | (required if using anthropic) |
ANTHROPIC_MODEL |
Claude model to use | claude-sonnet-4-5-20250929 |
GEMINI_API_KEY |
Google Gemini API key | (required if using gemini) |
GEMINI_MODEL |
Gemini model to use | gemini-2.0-flash |
DATABASE_URL |
Database connection string | postgresql+asyncpg://postgres:postgres@localhost:5432/starkiller |
ENVIRONMENT |
development, staging, production | development |
DEBUG |
Enable debug mode | true |
HOST |
API host | 0.0.0.0 |
PORT |
API port | 8000 |
CORS_ORIGINS |
Allowed CORS origins | ["http://localhost:5173"] |
This project is licensed under the GNU General Public License v3.0 - see the LICENSE.md file for details.