{"id":29840615,"url":"https://github.com/graphform/nstream-confluent-starter","last_synced_at":"2025-07-29T14:17:30.727Z","repository":{"id":203855716,"uuid":"707336799","full_name":"graphform/nstream-confluent-starter","owner":"graphform","description":"Starter Nstream application against Confluent Cloud hosted source data","archived":false,"fork":false,"pushed_at":"2024-06-16T05:58:46.000Z","size":701,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-06-23T03:54:29.990Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","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/graphform.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}},"created_at":"2023-10-19T17:29:09.000Z","updated_at":"2025-06-20T22:36:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"9c841821-7439-421b-867f-fdad2861d908","html_url":"https://github.com/graphform/nstream-confluent-starter","commit_stats":null,"previous_names":["nstreamio/nstream-confluent-starter","graphform/nstream-confluent-starter"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/graphform/nstream-confluent-starter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/graphform%2Fnstream-confluent-starter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/graphform%2Fnstream-confluent-starter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/graphform%2Fnstream-confluent-starter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/graphform%2Fnstream-confluent-starter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/graphform","download_url":"https://codeload.github.com/graphform/nstream-confluent-starter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/graphform%2Fnstream-confluent-starter/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267701742,"owners_count":24130458,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-29T02:00:12.549Z","response_time":2574,"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":[],"created_at":"2025-07-29T14:16:52.184Z","updated_at":"2025-07-29T14:17:30.719Z","avatar_url":"https://github.com/graphform.png","language":"Java","readme":"# nstream-confluent-starter\n\nA baseline Nstream application that processes data hosted in Confluent Cloud.\n\nWe highly recommend following our [Confluent starter walkthrough](https://www.nstream.io/docs/backend/confluent-vehicle-tutorial/) as you explore this codebase.\n\n## Component Overview\n\nThere are two backend components to this repository:\n\n- An Nstream toolkit-empowered Swim server that consumes from Confluent Cloud topics and processes responses in Web Agents with minimal boilerplate (package [`nstream.starter`](/src/main/java/nstream/starter) in the Java code)\n- A means to populate the former with reasonably frequent messages (package [`nstream.starter.sim`](/src/main/java/nstream/starter/sim) in the Java code)\n\nThere is also a minimal, general-purpose frontend component under [`index.html`](/index.html) that is available in a browser window under `localhost:9001` while (at minimum) the first backened component runs.\n\n## Prerequisites\n\n- Java Development Kit (JDK) 11+\n   - See [`build.gradle`](/build.gradle) for application-specific Java dependencies\n- A Confluent Cloud account that contains all the following:\n   - A _schemaless_ Kafka topic hosted within a network-reachable cluster\n   - A topic-corresponding API key\n   - An API secret corresponding to the API key\n\n## Run Instructions\n\n0. Fix the configuration files\n   - Correctly populate [`secret.properties`](/src/main/resources/secret.properties)\n   - If necessary, make other changes directly to the other `.properties` files `src/main/resources`\n\n1. Run the Nstream server\n\n   **\\*nix Environment:**\n   ```\n   ./gradlew run\n   ```\n   **Windows Environment:**\n   ```\n   .\\gradlew.bat run \n   ```\n2. Run the broker populator\n\n   **\\*nix Environment:**\n   ```\n   ./gradlew runSim\n   ```\n   **Windows Environment:**\n   ```\n   .\\gradlew.bat runSim\n   ```\n   \n## Variation: Using Schema Registry\n\nIn addition to achieving full parity with the aforementioned Kafka starter application, this codebase also exercises Confluent Cloud's Schema Registry.\nWorking with this requires a few additional changes.\n\n### Additional Prerequisites\n\n- A Confluent Cloud account that contains all the following:\n   - A Kafka topic hosted within a network-reachable cluster configured with the following Avro schema for its values (and no schema on its keys):\n      ```\n      {\n        \"fields\": [\n          {\"name\": \"id\", \"type\": \"int\"},\n          {\"name\": \"routeId\", \"type\": \"int\"},\n          {\n            \"name\": \"dir\",\n            \"type\": {\n              \"name\": \"Dir\", \"symbols\": [\"INBOUND\",\"OUTBOUND\"], \"type\": \"enum\"\n            }\n          },\n          {\"name\": \"latitude\", \"type\": \"float\"},\n          {\"name\": \"longitude\", \"type\": \"float\"},\n          {\"name\": \"speed\", \"type\": \"int\"},\n          {\n            \"name\": \"bearing\",\n            \"type\": {\n              \"name\": \"Bearing\", \"symbols\": [\"N\",\"NE\",\"E\",\"SE\",\"S\",\"SW\",\"W\",\"NW\"], \"type\": \"enum\"\n            }\n          },\n          {\"name\": \"routeName\", \"type\": \"string\"},\n          {\"name\": \"timestamp\", \"type\": \"long\"}\n        ],\n        \"name\": \"vehicle\",\n        \"type\": \"record\"\n      }\n      ```\n   - An API key corresponding to the Schema Registry\n   - An API secret corresponding to the API key\n\n### Modified Run Instructions\n\n0. Fix different configuration files\n   - Correctly populate [`schema/secret.properties`](/src/main/resources/schema/secret.properties)\n   - If necessary, make other changes directly to the other `.properties` files `src/main/resources/schema`\n1. Run the Nstream server with different arguments\n\n   **\\*nix Environment:**\n   ```\n   ./gradlew runSchema\n   ```\n   **Windows Environment:**\n   ```\n   .\\gradlew.bat runSchema\n   ```\n2. Run the broker populator\n\n   **\\*nix Environment:**\n   ```\n   ./gradlew runSchemaSim\n   ```\n   **Windows Environment:**\n   ```\n   .\\gradlew.bat runSchemaSim\n   ```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgraphform%2Fnstream-confluent-starter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgraphform%2Fnstream-confluent-starter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgraphform%2Fnstream-confluent-starter/lists"}