{"id":51224876,"url":"https://github.com/saagpatel/prompt-englab","last_synced_at":"2026-06-28T10:03:39.257Z","repository":{"id":361583560,"uuid":"1188554028","full_name":"saagpatel/prompt-englab","owner":"saagpatel","description":"Full-stack prompt engineering workbench — multi-provider streaming, version diffs, A/B comparison, test cases, cost tracking","archived":false,"fork":false,"pushed_at":"2026-06-20T05:35:38.000Z","size":508,"stargazers_count":0,"open_issues_count":6,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-20T07:16:10.769Z","etag":null,"topics":["anthropic","developer-tools","llm","nextjs","ollama","openai","prompt-engineering","typescript"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/saagpatel.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-03-22T08:44:23.000Z","updated_at":"2026-06-20T05:35:42.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/saagpatel/prompt-englab","commit_stats":null,"previous_names":["saagpatel/prompt-englab"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/saagpatel/prompt-englab","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saagpatel%2Fprompt-englab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saagpatel%2Fprompt-englab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saagpatel%2Fprompt-englab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saagpatel%2Fprompt-englab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/saagpatel","download_url":"https://codeload.github.com/saagpatel/prompt-englab/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saagpatel%2Fprompt-englab/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34884278,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-28T02:00:05.809Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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","developer-tools","llm","nextjs","ollama","openai","prompt-engineering","typescript"],"created_at":"2026-06-28T10:03:38.368Z","updated_at":"2026-06-28T10:03:39.252Z","avatar_url":"https://github.com/saagpatel.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Prompt Lab\n\n[![TypeScript](https://img.shields.io/badge/TypeScript-%233178c6?style=flat-square\u0026logo=typescript)](#) [![License](https://img.shields.io/badge/license-MIT-blue?style=flat-square)](#)\n\n\u003e Build better prompts faster — version control, multi-provider streaming, side-by-side comparison, and cost visibility in one workbench.\n\nPrompt Lab is a full-stack prompt engineering environment for developing, testing, and comparing LLM prompts across Ollama, OpenAI, and Anthropic. It brings the development discipline of a real engineering tool to prompt iteration: version history with word-level diffs, template variables, named test cases, A/B response comparison, and a cost dashboard — all running locally with SQLite and zero required cloud services.\n\n## Features\n\n- **Multi-Provider Streaming** — Run prompts against Ollama (local), OpenAI, or Anthropic with real-time SSE token streaming; switch providers with a tab click\n- **Version Control** — Every save creates a versioned snapshot with change notes; compare any two versions with a visual word-level diff and restore with one click\n- **Template Variables** — `{{variable}}` syntax is auto-detected and filled via dialog before execution; define reusable values via test cases\n- **Test Case Runner** — Named test cases with expected outputs; run individually or batch-run all cases across any model; pass/fail tracked per run\n- **A/B Response Comparison** — Select any two responses for a word-level diff; pick A/B winners to track model performance over time\n- **Cost Dashboard** — Per-request cost estimates using provider pricing tables; aggregated by model in analytics charts\n- **OCR Import** — Client-side Tesseract.js OCR extracts text from screenshots and injects it directly into your prompt\n\n## Quick Start\n\n### Prerequisites\n\n- Node.js 20+\n- npm\n- [Ollama](https://ollama.ai) (optional — enables local model runs without API keys)\n\n### Installation\n\n```bash\ngit clone https://github.com/saagpatel/prompt-englab.git\ncd prompt-englab\nnpm install\nnpx prisma migrate dev\n```\n\n### Run (development)\n\n```bash\nnpm run dev\n```\n\n### Build\n\n```bash\nnpm run build \u0026\u0026 npm start\n```\n\n### Docker\n\nA production Dockerfile is included. It builds the Next.js app, stores SQLite data at `/app/data/prod.db`, and runs on port 3000.\n\n```bash\ndocker build -t prompt-englab .\ndocker run -p 3000:3000 -e ENCRYPTION_SECRET=\u003c32-byte-hex\u003e -v /your/data:/app/data prompt-englab\n```\n\n## Tech Stack\n\n| Layer | Technology |\n|-------|------------|\n| Framework | Next.js (App Router) |\n| UI | Material UI 7, Emotion |\n| Editor | Monaco Editor |\n| Database | SQLite via Prisma + LibSQL adapter |\n| LLM providers | OpenAI SDK, Anthropic SDK, Ollama REST |\n| Streaming | Server-Sent Events (SSE) |\n| OCR | Tesseract.js (client-side) |\n| Charts | Recharts |\n| Auth | API keys encrypted at rest (AES-256-GCM) |\n\n## Architecture\n\nPrompt Lab is a Next.js App Router application. API routes handle LLM provider calls and stream tokens back to the client via SSE. All prompts, versions, responses, and test results are stored in a local SQLite database via Prisma with the LibSQL adapter — no Docker or external services required. Provider API keys are encrypted with AES-256-GCM before being written to the database. The Monaco editor is loaded client-side and wired to debounced auto-save.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaagpatel%2Fprompt-englab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsaagpatel%2Fprompt-englab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaagpatel%2Fprompt-englab/lists"}