{"id":45945929,"url":"https://github.com/jbouder/starkiller","last_synced_at":"2026-02-28T11:13:25.318Z","repository":{"id":333157128,"uuid":"1136067137","full_name":"jbouder/starkiller","owner":"jbouder","description":"Generative BI Concept App","archived":false,"fork":false,"pushed_at":"2026-01-26T01:24:32.000Z","size":242,"stargazers_count":0,"open_issues_count":6,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-26T16:57:54.589Z","etag":null,"topics":["anthropic-claude","business","fastapi","google-gemini","llms","postgresql","react","recharts-js","shadcn-ui","tailwindcss"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jbouder.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-17T02:23:20.000Z","updated_at":"2026-01-26T01:24:35.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/jbouder/starkiller","commit_stats":null,"previous_names":["jbouder/starkiller"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jbouder/starkiller","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbouder%2Fstarkiller","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbouder%2Fstarkiller/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbouder%2Fstarkiller/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbouder%2Fstarkiller/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jbouder","download_url":"https://codeload.github.com/jbouder/starkiller/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbouder%2Fstarkiller/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29931581,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-28T09:58:13.507Z","status":"ssl_error","status_checked_at":"2026-02-28T09:57:57.047Z","response_time":90,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anthropic-claude","business","fastapi","google-gemini","llms","postgresql","react","recharts-js","shadcn-ui","tailwindcss"],"created_at":"2026-02-28T11:13:24.827Z","updated_at":"2026-02-28T11:13:25.303Z","avatar_url":"https://github.com/jbouder.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Starkiller\n\nAn experimental Generative BI (Business Intelligence) tool that leverages Large Language Models to generate data visualizations on the fly.\n\n## Overview\n\nStarkiller 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.\n\n## Features\n\n- **AI-Powered Visualization**: Generate charts, graphs, and dashboards using natural language\n- **Dynamic Analysis**: Ask questions and get instant visual insights\n- **Flexible Data Sources**: Connect to various data sources and databases\n- **Interactive Dashboards**: Explore and refine visualizations interactively\n- **Smart Recommendations**: AI suggests relevant visualizations based on your data\n\n## Tech Stack\n\n| Frontend              | Backend                   |\n| --------------------- | ------------------------- |\n| React 19 + TypeScript | Python FastAPI            |\n| Vite                  | SQLAlchemy (async)        |\n| Tailwind CSS          | Anthropic Claude \u0026 Gemini |\n| shadcn/ui             | Pandas/NumPy              |\n| Recharts              | Alembic + PostgreSQL      |\n\n## Quick Start (Docker Compose)\n\nThe easiest way to run Starkiller is with Docker Compose, which starts the UI, API, and PostgreSQL database together.\n\n### Prerequisites\n\n- Docker and Docker Compose\n- An [Anthropic API key](https://console.anthropic.com/) or [Google Gemini API key](https://aistudio.google.com/app/apikey)\n\n### 1. Clone and Configure\n\n```bash\ngit clone https://github.com/yourusername/starkiller.git\ncd starkiller\n\n# Configure the API environment\ncp api/.env.example api/.env\n```\n\nEdit `api/.env` and configure your preferred LLM provider:\n\n```ini\n# Supported providers: anthropic, gemini\nLLM_PROVIDER=anthropic\n\n# If using Anthropic\nANTHROPIC_API_KEY=sk-ant-your-key-here\n\n# If using Gemini\nGEMINI_API_KEY=your-gemini-key-here\n```\n\n### 2. Start the Stack\n\n```bash\ndocker compose up --build\n```\n\n### 3. Initialize the Database\n\nIn a new terminal, run migrations and seed sample data:\n\n```bash\n# Run database migrations\ndocker compose exec api alembic upgrade head\n\n# Seed external sample databases\ndocker compose exec api python scripts/seed_connection_data.py\n\n# Seed application data sources\ndocker compose exec api python scripts/seed_data_sources.py\n\n# Seed sample dashboards\ndocker compose exec api python scripts/seed_dashboards.py\n```\n\n### 4. Access the Application\n\n| Service            | URL                         |\n| ------------------ | --------------------------- |\n| UI                 | http://localhost:3000       |\n| API                | http://localhost:8000       |\n| API Docs (Swagger) | http://localhost:8000/docs  |\n| API Docs (ReDoc)   | http://localhost:8000/redoc |\n\n---\n\n## Local Development (Without Docker)\n\nFor development without Docker, you'll need to run the frontend and backend separately.\n\n### Prerequisites\n\n- Node.js 18+ and npm 9+\n- Python 3.11+\n- PostgreSQL 15+\n- An [Anthropic API key](https://console.anthropic.com/) or [Google Gemini API key](https://aistudio.google.com/app/apikey)\n\n### Backend Setup\n\n```bash\ncd api\n\n# Create and activate virtual environment\npython -m venv .venv\nsource .venv/bin/activate  # Windows: .venv\\Scripts\\activate\n\n# Install dependencies\npip install -e \".[dev]\"\n\n# Configure environment\ncp .env.example .env\n# Edit .env and configure your LLM provider\n# Example for Gemini:\n# LLM_PROVIDER=gemini\n# GEMINI_API_KEY=your-key-here\n\n# Run migrations\nalembic upgrade head\n\n# Start the API server\nuvicorn main:app --reload\n```\n\n### Frontend Setup\n\n```bash\ncd ui\n\n# Install dependencies\nnpm install\n\n# Start the development server\nnpm run dev\n```\n\n### Seed Sample Data (Local)\n\nWith PostgreSQL running locally:\n\n```bash\ncd api\nsource .venv/bin/activate\n\n# Set admin connection for creating external databases\nexport ADMIN_DB_URL=postgresql://postgres:postgres@localhost:5432/postgres\n\n# Seed in order\npython scripts/seed_connection_data.py  # External sample databases\npython scripts/seed_data_sources.py     # Application data sources\npython scripts/seed_dashboards.py       # Sample dashboards\n```\n\n### Local URLs\n\n| Service | URL                   |\n| ------- | --------------------- |\n| UI      | http://localhost:5173 |\n| API     | http://localhost:8000 |\n\n---\n\n## Common Commands\n\n### Running Tests\n\n```bash\ncd api\npytest                           # Run all tests\npytest --cov=. --cov-report=html # With coverage report\npytest tests/unit/               # Unit tests only\npytest -k \"test_name\"            # Run specific test\n```\n\n### Building for Production\n\n```bash\ncd ui\nnpm run build    # Build frontend\nnpm run preview  # Preview production build\n```\n\n### Adding UI Components\n\n```bash\ncd ui\nnpx shadcn@latest add \u003ccomponent-name\u003e\n```\n\n### Linting\n\n```bash\ncd ui\nnpm run lint\n```\n\n---\n\n## Environment Variables\n\n### API (`api/.env`)\n\n| Variable            | Description                          | Default                                                            |\n| ------------------- | ------------------------------------ | ------------------------------------------------------------------ |\n| `LLM_PROVIDER`      | LLM provider (`anthropic`, `gemini`) | `anthropic`                                                        |\n| `ANTHROPIC_API_KEY` | Anthropic API key                    | (required if using `anthropic`)                                    |\n| `ANTHROPIC_MODEL`   | Claude model to use                  | `claude-sonnet-4-5-20250929`                                       |\n| `GEMINI_API_KEY`    | Google Gemini API key                | (required if using `gemini`)                                       |\n| `GEMINI_MODEL`      | Gemini model to use                  | `gemini-2.0-flash`                                                 |\n| `DATABASE_URL`      | Database connection string           | `postgresql+asyncpg://postgres:postgres@localhost:5432/starkiller` |\n| `ENVIRONMENT`       | development, staging, production     | `development`                                                      |\n| `DEBUG`             | Enable debug mode                    | `true`                                                             |\n| `HOST`              | API host                             | `0.0.0.0`                                                          |\n| `PORT`              | API port                             | `8000`                                                             |\n| `CORS_ORIGINS`      | Allowed CORS origins                 | `[\"http://localhost:5173\"]`                                        |\n\n---\n\n## License\n\nThis project is licensed under the GNU General Public License v3.0 - see the [LICENSE.md](LICENSE.md) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjbouder%2Fstarkiller","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjbouder%2Fstarkiller","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjbouder%2Fstarkiller/lists"}