{"id":17139837,"url":"https://github.com/strager/first","last_synced_at":"2025-04-13T10:04:34.754Z","repository":{"id":181711644,"uuid":"663297769","full_name":"strager/First","owner":"strager","description":null,"archived":false,"fork":false,"pushed_at":"2023-08-22T02:47:17.000Z","size":170,"stargazers_count":3,"open_issues_count":4,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-27T01:23:33.891Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/strager.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-07-07T02:05:10.000Z","updated_at":"2023-09-22T13:28:34.000Z","dependencies_parsed_at":"2023-07-17T00:45:36.389Z","dependency_job_id":null,"html_url":"https://github.com/strager/First","commit_stats":null,"previous_names":["strager/first"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/strager%2FFirst","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/strager%2FFirst/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/strager%2FFirst/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/strager%2FFirst/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/strager","download_url":"https://codeload.github.com/strager/First/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248695332,"owners_count":21146954,"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-14T20:13:13.440Z","updated_at":"2025-04-13T10:04:34.730Z","avatar_url":"https://github.com/strager.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# [![](./first/static/1st.png) First!][first]\n\nFirst! is a Twitch app for the first people to join your streams.\n\n[Try First! yourself (production hosted version)][first]\n\n[See how it works (YouTube video)](https://youtu.be/-T8BXWwYftw)\n\nFirst! is written in Python 🐍\n\nKey features:\n\n* Leaderboards\n* first -\u003e second -\u003e third progression\n\n## Installing \u0026 running locally\n\n1. Install Python 3.11 or newer. Ubuntu: `sudo apt install python3`\n2. Install Pip. Ubuntu: `sudo apt install python3-pip`\n3. Install Python venv. Ubuntu: `sudo apt install python3-venv`\n4. Create a virtual Python environment: `python3 -m venv ENV`\n5. Install [Tox][] in the virtual Python environment: `ENV/bin/pip install tox`.\n6. Create a Twitch application:\n   1. Visit the [Twitch application registration page][register-Twitch-app].\n   2. Write any application name allowed by Twitch. Try: \"First in chat\"\n   3. Under OAuth Redirect URLs, write: `http://localhost:5000/oauth/twitch`\n   4. Press Create.\n7. Copy `first/config/config.example.toml` to `first/config/config.toml`.\n8. Update `first/config/config.toml`, following the in-line\n   instructions.\n9. Run the First web server: `ENV/bin/tox -e flask`\n\n## Setting up your stream\n\n1. Open \u003chttp://localhost:5000/\u003e.\n2. Click the \"Add First! to Twitch\" button at the bottom.\n3. In the Twitch UI, allow the login. This should redirect you to\n   your First! settings dashboard (\u003chttp://localhost:5000/manage.html\u003e).\n4. Under \"Have First! create your first channel point reward\n   automatically\", choose a channel point cost then press \"Create\n   reward\".\n\nA new channel point reward titled \"first\" should now be enabled for your\nTwitch stream. It will automatically be changed to \"second\" or \"third\"\nas appropriate.\n\nAfter viewers redeem the \"first\", \"second\", or \"third\" rewards, you can\nsee how cool they are by looking at the leaderboards:\n\n1. Open \u003chttp://localhost:5000/\u003e.\n2. Click your stream's name in the leaderboard.\n\n## License \u0026 copyright\n\nCopyright 2023 Juan Alberto Regalado Galvan, Matthew \"strager\" Glazar\n\nLicense: [GPL3.0-or-later](./LICENSE.txt)\n\n[Tox]: https://tox.wiki\n[first]: https://first.strager.net/\n[register-Twitch-app]: https://dev.twitch.tv/console/apps/create\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstrager%2Ffirst","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstrager%2Ffirst","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstrager%2Ffirst/lists"}