{"id":19231511,"url":"https://github.com/maximilien/knfun","last_synced_at":"2025-04-21T03:32:01.999Z","repository":{"id":41997654,"uuid":"213770912","full_name":"maximilien/knfun","owner":"maximilien","description":"Knative micro-functions demo using the `kn` client","archived":false,"fork":false,"pushed_at":"2025-03-28T02:30:11.000Z","size":5213,"stargazers_count":25,"open_issues_count":1,"forks_count":4,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-04-01T08:52:05.304Z","etag":null,"topics":["demo","examples","kn","knative"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maximilien.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null}},"created_at":"2019-10-08T22:49:46.000Z","updated_at":"2023-08-29T10:45:09.000Z","dependencies_parsed_at":"2022-08-12T01:50:32.611Z","dependency_job_id":null,"html_url":"https://github.com/maximilien/knfun","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximilien%2Fknfun","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximilien%2Fknfun/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximilien%2Fknfun/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximilien%2Fknfun/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maximilien","download_url":"https://codeload.github.com/maximilien/knfun/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249991044,"owners_count":21357192,"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","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":["demo","examples","kn","knative"],"created_at":"2024-11-09T15:44:09.881Z","updated_at":"2025-04-21T03:32:00.519Z","avatar_url":"https://github.com/maximilien.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# knfun\n\nKnfun is a set of Knative micro-services / micro-functions intended to be used\nfor live demos. The main goal is to illustrate the end-to-end developer\nexperience of using [Knative](https://knative.dev) and its `kn` CLI.\n\nThe first demo uses three functions in a live demo setting (ideally with an\naudience participating). The following diagram is a sketch of this demo and\nthese [slides](docs/demo1-slides.pdf) can be used for introduction.\n\n![Demo sketch](docs/demo1-sketch.png)\n\n## Functions\n\n1. _TwitterFn_ search function (via\n   [Twitter's API](https://developer.twitter.com/en/docs))\n\n   - _in_: hashtags or string to search\n   - _in_: count (max number of tweets to return)\n   - _out_: recent tweets with images\n\n2. _WatsonFn_ visual recognition image classifier function (via IBM's\n   [Watson APIs](https://cloud.ibm.com/apidocs/visual-recognition/visual-recognition-v3))\n\n   - _in_: image URL\n   - _out_: image features (class) with confidence (score)\n\n3. _SummaryFn_ function\n   - _in_: search string and _TwitterFn_ and _WatsonFn_ URLs\n   - _in_: count (max number of tweets)\n   - _out_: HTML page displaying summary\n\nBoth the _TwitterFn_ and _WatsonFn_ require credentials to execute. This means\nthat the demoer's secret keys for both the _TwitterFn_ and _WatsonFn_ are also\nrequired as input, however, to simplify the discussion, the keys are sometimes\nommited in diagrams and other places.\n\n# Table of Contents\n\n- [Introduction](#knfun)\n- [Setup](docs/setup.md)\n  - [Credentials](docs/setup.md/#credentials) \n    - [Twitter](docs/setup.md/#twitter) \n    - [Watson](docs/setup.md/#watson)\n- [Build](docs/build.md)\n- [Test](docs/test.md)\n  - [twitter-fn](docs/test.md/#twitter-fn)\n  - [watson-fn](docs/test.md/#watson-fn)\n  - [summary-fn](docs/test.md/#summary-fn)\n  - [Credentials config](docs/test.md/#credentials-config)\n  - [e2e](docs/test.md/#e2e)\n- [Deploy](docs/deploy.md)\n- [Debug](docs/debug.md)\n- [Run](docs/run.md)\n  - [TwitterFn](docs/run.md/#TwitterFn)\n  - [WatsonFn](docs/run.md/#WatsonFn)\n  - [SummaryFn](docs/run.md/#SummaryFn)\n  - [Scaling](docs/run.md/#scaling)\n  - [A/B Testing or Blue/Green Deployment](docs/run.md/#ab-testing-or-bluegreen-deployment)\n    - [Tagging Stable Revisions](docs/run.md/#tagging-stable-revisions) \n    - [Deploy New Async Revision](docs/run.md/#deploy-new-async-revision)\n    - [Splitting Traffic](docs/run.md/#splitting-traffic)\n- [Future](docs/future.md)\n  - [Next steps](docs/future.md/#next-step)\n  - [Participate](docs/future.md/#participate)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaximilien%2Fknfun","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaximilien%2Fknfun","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaximilien%2Fknfun/lists"}