{"id":13621502,"url":"https://github.com/recursiveGecko/race_bot","last_synced_at":"2025-04-15T01:32:59.418Z","repository":{"id":154007382,"uuid":"496443657","full_name":"recursiveGecko/race_bot","owner":"recursiveGecko","description":"An Elixir project dedicated to processing live data from Formula 1 races.","archived":false,"fork":false,"pushed_at":"2024-07-24T18:36:12.000Z","size":5386,"stargazers_count":51,"open_issues_count":1,"forks_count":10,"subscribers_count":3,"default_branch":"develop","last_synced_at":"2024-08-01T21:48:00.186Z","etag":null,"topics":["elixir","elixir-lang","f1","formula1","liveview","phoenix","realtime"],"latest_commit_sha":null,"homepage":"https://racing.recursiveprojects.cloud","language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/recursiveGecko.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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}},"created_at":"2022-05-26T01:33:29.000Z","updated_at":"2024-07-29T07:48:16.000Z","dependencies_parsed_at":null,"dependency_job_id":"f50fcb75-2b5f-40a6-a641-48612a9a449d","html_url":"https://github.com/recursiveGecko/race_bot","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/recursiveGecko%2Frace_bot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/recursiveGecko%2Frace_bot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/recursiveGecko%2Frace_bot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/recursiveGecko%2Frace_bot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/recursiveGecko","download_url":"https://codeload.github.com/recursiveGecko/race_bot/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223654745,"owners_count":17180578,"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":["elixir","elixir-lang","f1","formula1","liveview","phoenix","realtime"],"created_at":"2024-08-01T21:01:07.165Z","updated_at":"2024-11-08T08:31:00.487Z","avatar_url":"https://github.com/recursiveGecko.png","language":"Elixir","funding_links":[],"categories":["Elixir"],"sub_categories":[],"readme":"# Race Bot\n\n[![Docs](https://img.shields.io/badge/pages-docs-informational)](https://recursivegecko.github.io/race_bot) \n[![License](https://img.shields.io/github/license/recursiveGecko/race_bot)](LICENSE.md) \n[![Twitter](https://img.shields.io/twitter/follow/LiveRaceBot?style=social)](https://twitter.com/LiveRaceBot)\n\nAn [Elixir](https://elixir-lang.org/) project dedicated to processing live data from Formula 1 races.\n\n[Project's Website](https://racing.recursiveprojects.cloud/) displays live telemetry and analysis (Work in progress).\n\n[Development \u0026 Demo Website](https://racing-dev.recursiveprojects.cloud/) displays telemetry of previous events to demonstate the functionality.\n\n#### [Documentation](https://recursivegecko.github.io/race_bot)\n\n*All product and company names are trademarks™ or registered® trademarks of their respective holders. Use of them does not imply any affiliation with or endorsement by them.*\n\n## Requirements\n\n* [Elixir 1.14+](https://elixir-lang.org/install.html)\n* [NodeJS 16+](https://nodejs.org/en/) to install NPM dependencies\n\nAlternatively you can use `asdf` to manage tool versions, but be aware that it builds Erlang from source which \n[requires installation of additional system dependencies](https://github.com/asdf-vm/asdf-erlang#before-asdf-install).\n\n## Basic usage\n\n```bash\n# Install dependencies\nmix setup\n\n# Configuration file `.env` must be created by copying `.env.example`\ncp .env.example .env\n\n# Copy .env into your environment variables - the application doesn't read .env file on its own \n# Only works on fish terminal at the moment\nsource env.fish\n\n# Generate documentation\nmix docs\n\n# Run locally\niex -S mix phx.server\n\n# Run a backtest on an old session\niex -S mix backtest --url \"http://livetiming.formula1.com/static/2022/2022-05-08_Miami_Grand_Prix/2022-05-07_Qualifying\"\n```\n\n## Intro\n\nTo get a general overview of the data flow and processing in this project, you can explore the project in this order:\n\nExample packet: `SessionStatus` packet with status `started`\n\n1. `F1Bot.ExternalApi.SignalR.Client` receives the packet from live timing API\n1. `F1Bot.F1Session.Server` calls the functional code to process this `Packet`\n1. `F1Bot.F1Session.LiveTimingHandlers` determines and calls the handler module for this packet\n1. `F1Bot.F1Session.LiveTimingHandlers.SessionStatus` calls `F1Session` function to update the state\n1. `F1Bot.F1Session` updates its state with new session status and returns its new state + a 'session status change' event\n1. `F1Bot.F1Session.Server` broadcasts the event via `F1Bot.PubSub`\n1. `F1Bot.Output.Discord` receives the session status change event and composes a Discord message\n1. `F1Bot.ExternalApi.Discord` chooses the configured Discord client module (live or console for local testing)\n1. `F1Bot.ExternalApi.Discord.Console` outputs composed message (\"F1 Session just started\") to your console\n\n## Contributing\n\nPull requests, bug reports and feature suggestions are welcome!\n\n## Thanks\n\n💙 [theOehrly/Fast-F1](https://github.com/theOehrly/Fast-F1): For inspiration, their effort and\ndocumentation. Fast-F1 was extremely valuable in quickly understanding how F1's live timing service works. \n\n💙 [MultiViewer for F1](https://github.com/f1multiviewer): For tyre icons used in this project\n\n## License\n\nThis project is licensed under GNU Affero General Public License version 3, see `LICENSE.md` for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FrecursiveGecko%2Frace_bot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FrecursiveGecko%2Frace_bot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FrecursiveGecko%2Frace_bot/lists"}