{"id":50481902,"url":"https://github.com/naftiko/apache-spark-sandbox","last_synced_at":"2026-06-01T18:02:03.007Z","repository":{"id":356629029,"uuid":"1162200022","full_name":"naftiko/apache-spark-sandbox","owner":"naftiko","description":"This is a sandbox for the Apache Spark API.","archived":false,"fork":false,"pushed_at":"2026-05-08T23:01:01.000Z","size":20,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-09T01:11:05.313Z","etag":null,"topics":["apis","sandboxes"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/naftiko.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-02-20T01:16:16.000Z","updated_at":"2026-05-08T23:01:05.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/naftiko/apache-spark-sandbox","commit_stats":null,"previous_names":["naftiko/apache-spark-sandbox"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/naftiko/apache-spark-sandbox","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naftiko%2Fapache-spark-sandbox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naftiko%2Fapache-spark-sandbox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naftiko%2Fapache-spark-sandbox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naftiko%2Fapache-spark-sandbox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/naftiko","download_url":"https://codeload.github.com/naftiko/apache-spark-sandbox/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naftiko%2Fapache-spark-sandbox/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33786914,"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-01T02:00:06.963Z","response_time":115,"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":["apis","sandboxes"],"created_at":"2026-06-01T18:02:02.305Z","updated_at":"2026-06-01T18:02:02.995Z","avatar_url":"https://github.com/naftiko.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Naftiko Apache Spark Sandbox\n\nOne-click container deploy of a Naftiko Framework capability that wraps the Apache Spark API. Backed by mocks at [mocks.naftiko.net](https://mocks.naftiko.net) — no upstream credentials required.\n\n## Run it\n\n[![Run in Cloudflare](https://deploy.workers.cloudflare.com/button)](https://deploy.workers.cloudflare.com/?url=https://github.com/naftiko/apache-spark-sandbox)\n[![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://render.com/deploy?repo=https://github.com/naftiko/apache-spark-sandbox)\n[![Run on Google Cloud](https://deploy.cloud.run/button.svg)](https://deploy.cloud.run/?git_repo=https://github.com/naftiko/apache-spark-sandbox)\n[![Deploy on Railway](https://railway.com/button.svg)](https://railway.com/new/template?template=https://github.com/naftiko/apache-spark-sandbox)\n[![Run on Replit](https://replit.com/badge/github/naftiko/apache-spark-sandbox)](https://replit.com/github/naftiko/apache-spark-sandbox)\n\nThe Cloudflare button gives you the full three-protocol surface (MCP + REST + SKILL) via the bundled Worker proxy. The other four buttons expose the MCP server on port 3001 directly. See **[Per-platform behavior](#per-platform-behavior)** below.\n\n## What this deploys\n\n| Adapter | Path | Namespace | Tools / resources |\n|---|---|---|---|\n| MCP | `POST /mcp` | `apache-spark-sandbox-tools` | 3 starter tools |\n| REST | `/api/...` | `apache-spark-sandbox-api` | 3 REST resources mirroring the MCP tools |\n| SKILL | `/skill` | `apache-spark-sandbox-skills` | One skill group bundling the starter tools |\n\nBacked by:\n- **Apache Spark API** at `mocks.naftiko.net/rest/Apache Spark REST API/1.0.0` — hosted in [`naftiko/sandboxes`](https://github.com/naftiko/sandboxes/tree/main/specs)\n\nThe MCP server requires a bearer token. The deploy ships a dummy `sk-mcp-YYYYYYYYYYYY` so you can wire it into a client immediately. Real deployments swap before redeploying.\n\n## Starter scope vs. full surface\n\nThis capability bootstraps **3 representative GET operations** from the primary OpenAPI (Apache Spark REST API). To expose more operations, edit `capability/shared/Apache Spark REST API-consumes.yml` and `capability/apache-spark-sandbox.naftiko.yml` — add a resource per OpenAPI path and a tool per operation.\n\n## Files\n\n| Path | What it is |\n|---|---|\n| `capability/apache-spark-sandbox.naftiko.yml` | The Naftiko Framework capability YAML |\n| `capability/shared/Apache Spark REST API-consumes.yml` | Imported `consumes` block — points at the central Microcks mock |\n| `capability/shared/secrets.yaml` | Dummy MCP server bearer token |\n| `Dockerfile` | Builds on `ghcr.io/naftiko/framework:latest`, copies `capability/` into `/app/` — read by every platform |\n| `wrangler.toml` | Cloudflare-only — Durable Object–backed `ApacheSparkSandboxContainer` |\n| `src/index.ts` | Cloudflare-only — Worker proxy fronting the three engine ports |\n| `render.yaml` | Render-only — Blueprint that pins `PORT=3001` to the Dockerfile |\n\nCloud Run, Railway, and Replit auto-detect the Dockerfile and need no extra config in the repo.\n\n## Per-platform behavior\n\n| Button | Public surface | Notes |\n|---|---|---|\n| **Cloudflare** | `/mcp` + `/api/...` + `/skill` + landing page on `/` | Worker proxies three ports through one hostname. |\n| **Render** | MCP only on `PORT=3001` | Free tier with cold-starts. |\n| **Google Cloud Run** | MCP only on `PORT=3001` | Scales to zero. |\n| **Railway** | MCP only on the assigned hostname | Auto-detects Dockerfile. |\n| **Replit** | MCP only inside the Replit container | Best for \"kick the tires\" exploration. |\n\n## Local development\n\n```sh\nnpm install\nnpm run dev\n```\n\n## Source\n\n- OpenAPI source: \u003chttps://github.com/naftiko/sandboxes/blob/main/specs/apache-spark-openapi.yaml\u003e\n- Naftiko Framework: \u003chttps://github.com/naftiko/framework\u003e\n- Mock host: \u003chttps://mocks.naftiko.net\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnaftiko%2Fapache-spark-sandbox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnaftiko%2Fapache-spark-sandbox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnaftiko%2Fapache-spark-sandbox/lists"}