{"id":13758347,"url":"https://github.com/paramander/elm-twitch-chat","last_synced_at":"2025-04-15T04:31:24.397Z","repository":{"id":101764964,"uuid":"66166018","full_name":"paramander/elm-twitch-chat","owner":"paramander","description":"Elm powered Twitch chat using WebSockets","archived":false,"fork":false,"pushed_at":"2017-10-26T16:12:59.000Z","size":66,"stargazers_count":14,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-28T16:04:58.164Z","etag":null,"topics":["elm","twitch","websockets"],"latest_commit_sha":null,"homepage":null,"language":"Elm","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/paramander.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":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2016-08-20T20:09:25.000Z","updated_at":"2019-11-27T15:07:07.000Z","dependencies_parsed_at":"2024-01-15T03:42:44.436Z","dependency_job_id":null,"html_url":"https://github.com/paramander/elm-twitch-chat","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paramander%2Felm-twitch-chat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paramander%2Felm-twitch-chat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paramander%2Felm-twitch-chat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paramander%2Felm-twitch-chat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/paramander","download_url":"https://codeload.github.com/paramander/elm-twitch-chat/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249006418,"owners_count":21197270,"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":["elm","twitch","websockets"],"created_at":"2024-08-03T13:00:28.036Z","updated_at":"2025-04-15T04:31:24.054Z","avatar_url":"https://github.com/paramander.png","language":"Elm","funding_links":[],"categories":["Libraries"],"sub_categories":["Elm"],"readme":"# Twitch Chat in Elm\n\nThis project was done in order to test whether Elm can be used to replace\ncertain well established pieces of Javascript. One of these is the Twitch\nchat. Recently, Twitch has upgraded their chat servers to also support\nWebSockets.\n\n\n## Features\n\n- [x] Receiving messages\n- [x] Sending messages\n- [x] Emotes\n- [x] Subscriber badges\n- [x] Turbo badges\n- [x] Mod badges\n- [x] Global mod badges\n- [x] Admin badges\n- [x] Staff badges\n- [x] Broadcaster badges\n- [x] Bits badges (wrong implementation, will have to use the new [badges.twitch.tv](https://badges.twitch.tv) endpoint)\n- [ ] Cheers\n- [x] Resubscribe notices\n- [x] Subscribe notices\n- [ ] Timeout/ban actions\n- [x] `/me` actions\n- [ ] Emote picker\n- [ ] Viewer list\n- [x] `@` tagging\n\n## JSONP\n\nThe recommended way of consuming the Twitch API is JSONP. `elm-lang/http` has no way\nof using JSONP. That's why this project includes some Native Elm code to\nsolve this.\n\n## Try it out\n\nThe whole setup is automated using `npm`. Make sure you have `node` \u003e 4 and `npm` installed.\n\n```\n$ git clone https://gitlab.com/paramanders/elm-twitch-chat.git\n$ cd elm-twitch-chat\n$ npm install\n```\n\nIf you haven't installed Elm globally yet, make sure to do so\n\n```\n$ npm install -g elm\n```\n\nAnd install this project's Elm dependencies using `elm-github-install`. This\nis needed, because `elm-jsonp` is downloaded that exposes Native modules, which\ncan't be downloaded from the package server.\n\n```\n$ ./node_modules/.bin/elm-github-install\n```\n\n\n## Serve locally\n\nYou can serve the application locally using Webpack. But first, you are required\nto enter your username, oauth token and the channel you want to connect to into\nyour `.env` file. Just copy the example, and fill in your credentials:\n\n```\ncp .env.example .env\n```\n\nTo get an oauth token, you can use [https://twitchapps.com/tmi](https://twitchapps.com/tmi).\n\nAfter inserting your username, oauth token and channel, run the command to serve\nthe application on [localhost:8000](http://localhost:8000):\n\n```\n$ npm start\n```\n\nand it should look like this:\n\n![Preview](http://i.imgur.com/IOuizaV.gif)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparamander%2Felm-twitch-chat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fparamander%2Felm-twitch-chat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparamander%2Felm-twitch-chat/lists"}