{"id":15411500,"url":"https://github.com/thorium/catvsdog","last_synced_at":"2025-10-25T20:05:00.510Z","repository":{"id":13071778,"uuid":"15752469","full_name":"Thorium/CatVsDog","owner":"Thorium","description":"Azure Owin FSharp","archived":false,"fork":false,"pushed_at":"2017-03-18T02:17:04.000Z","size":2645,"stargazers_count":11,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-06-04T23:37:07.289Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"F#","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/Thorium.png","metadata":{"files":{"readme":"README.markdown","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}},"created_at":"2014-01-09T00:29:19.000Z","updated_at":"2016-05-26T00:36:01.000Z","dependencies_parsed_at":"2022-09-23T10:53:09.536Z","dependency_job_id":null,"html_url":"https://github.com/Thorium/CatVsDog","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Thorium/CatVsDog","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Thorium%2FCatVsDog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Thorium%2FCatVsDog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Thorium%2FCatVsDog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Thorium%2FCatVsDog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Thorium","download_url":"https://codeload.github.com/Thorium/CatVsDog/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Thorium%2FCatVsDog/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264647460,"owners_count":23643643,"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":[],"created_at":"2024-10-01T16:49:17.789Z","updated_at":"2025-10-25T20:05:00.435Z","avatar_url":"https://github.com/Thorium.png","language":"F#","funding_links":[],"categories":[],"sub_categories":[],"readme":"**Azure Owin F-Sharp:**\n\nThis is generic cloud based online collaboration/gaming platform.\nBut because generic sounds bad, let's specify more:\n\nThis is a architecture of users (players) and rooms (games).\nUsers can join rooms. They can chat with other users in the rooms.\nUsers can co-operate with other room users, e.g. play games.\n\nClaims based authentication:\nFacebook / Google+ (/...) external logins are supported \n\nSee the high level picture: \n![Architecture.jpg][1]\n\nThe whole system runs in cloud as Windows Azure Worker role.\nWorker role hosts OWIN (Katana) based web server. \nWeb server hosts (Hateoas) REST-based WebApi for data communication.\nAnd SignalR (Hub) for web-based Publish/Subscribe -pattern to enable\nreal-time bi-directional communication between users,\nusually based on WebSockets. \nWeb server tunnel static HTML-files from Windows Azure Blob Storage.\n\nUser data is stored to Windows Azure Table Storage \n(which is a NoSQL document database).\n\nRuntime data uses Actor/Agent -based communication:\nEach user has an agent. Each room has an agent.\nThere is (generic strongly typed) control agent class which can \ncreate other agents. (e.g. one instance for room-agents, one for user-agents)\n\nProgramming language is F-Sharp (F#). It is a multi-paradigm \n(functional-first) programming language mainly for .NET environment.\nF# related technologies: Fog is used for Azure communication. \nFSharp.Net.Http and FSharp.Web.Http is used for HTTP communication.\n\nThis is developed with \nVisual Studio 2012 (Update 4) / Visual Studio 2013 \nand Azure SDK 2.2. References are resolved via NuGet. \n\nTo run:\nBuild and run from Visual Studio\nSee the host console from (task tray icon) Azure Compute Emulator.\nThere is a line something like: \"Starting OWIN at http://127.255.0.0:81\"\n(If compute emulator logging works...)\nCopy the address and open it with web browser.\n(...or you can deploy this to Windows Azure)\n![StartInstructions.jpg][2]\n\n\nSample HTML-pages are just HTML5 with jQuery and Knockout.js\nThey are deployed from the wwwroot.zip -file.\n\n![Screenshot.jpg][3]\n\n[![Build status](https://ci.appveyor.com/api/projects/status/fvrimln2nc6m29pp)](https://ci.appveyor.com/project/Thorium/catvsdog)\n\n   [1]: https://raw.github.com/Thorium/CatVsDog/master/specifications/Architecture.jpg\n   [2]: https://raw.github.com/Thorium/CatVsDog/master/specifications/StartInstructions.jpg\n   [3]: https://raw.github.com/Thorium/CatVsDog/master/specifications/Screenshot.jpg\n   \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthorium%2Fcatvsdog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthorium%2Fcatvsdog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthorium%2Fcatvsdog/lists"}