{"id":13575149,"url":"https://github.com/uralys/fox","last_synced_at":"2025-08-21T02:31:19.679Z","repository":{"id":50454085,"uuid":"381380340","full_name":"uralys/fox","owner":"uralys","description":"🦊 Tooling for Godot 4","archived":false,"fork":false,"pushed_at":"2024-04-03T19:48:07.000Z","size":12860,"stargazers_count":160,"open_issues_count":5,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-04-03T20:49:32.320Z","etag":null,"topics":["android","cli","components","gdscript","godot4","ios","toolkit"],"latest_commit_sha":null,"homepage":"https://www.uralys.com","language":"GDScript","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/uralys.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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,"dei":null},"funding":{"github":["chrisdugne"],"patreon":null,"open_collective":null,"ko_fi":"uralys","tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2021-06-29T13:46:54.000Z","updated_at":"2024-05-28T22:00:40.063Z","dependencies_parsed_at":"2023-12-29T21:55:43.400Z","dependency_job_id":"1a94d38a-351e-47fe-8a05-a5575d8389d3","html_url":"https://github.com/uralys/fox","commit_stats":null,"previous_names":[],"tags_count":80,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uralys%2Ffox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uralys%2Ffox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uralys%2Ffox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uralys%2Ffox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/uralys","download_url":"https://codeload.github.com/uralys/fox/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230479864,"owners_count":18232630,"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":["android","cli","components","gdscript","godot4","ios","toolkit"],"created_at":"2024-08-01T15:00:58.619Z","updated_at":"2024-12-19T18:15:11.915Z","avatar_url":"https://github.com/uralys.png","language":"GDScript","funding_links":["https://github.com/sponsors/chrisdugne","https://ko-fi.com/uralys"],"categories":["ios"],"sub_categories":[],"readme":"# Fox\n\n[![License](https://img.shields.io/badge/License-MIT-green.svg?colorB=3cc712)](license) [![version](https://img.shields.io/github/package-json/v/uralys/fox)](https://github.com/uralys/fox/tags)\n\n🦊 Fox provides tooling while developing with Godot Engine.\n\n\u003cp align=\"center\"\u003e\u003cimg title=\"fox\"  src=\"./assets/logo.jpg\"\u003e\u003c/p\u003e\n\n## Scenes and scripts\n\nWith Fox, you can use `Scenes`, `Resources`, scripts and static functions to build your app.\n\nAs an example, this code will move 3 nodes to the same position, with a delay of 1 second between each animation. Finally it fill print 'DONE' in the console.\n\n```gdscript\n  Animate.to([potion, car, book], {\n    propertyPath = \"position\",\n    toValue = Vector2(0, 0),\n    delayBetweenElements = 1,\n    onFinished = func():\n      G.log('DONE');\n  })\n```\n\nThis other one sends a body to a REST API, handles and logs the result while showing a loader:\n\n```gd\n  Router.showLoader()\n\n  HTTP.Post(self, {\n    endpoint = \"/score\",\n    body = {playerId = \"FieryFox\", score = 100},\n    onError = func(_result, _response_code, _headers, _body):\n      handleScoreFailure()\n      Router.hideLoader()\n    ,\n    onComplete = func(_result, _response_code, _headers, body):\n      var _body = body.get_string_from_utf8()\n      var newRecord = __.GetOr(false, 'newRecord', _body)\n      G.debug(\n        '✅ [b][color=green]successfully posted score[/color][/b]',\n        {newRecord = newRecord}\n      )\n      Router.hideLoader()\n  })\n```\n\n## Documentation\n\nFew documentation links (find more in the [docs](./docs)):\n\n- [Installing](./docs/install.md) Fox to use in your Godot app\n\nCoding:\n\n- Using the [Router](./docs/gdscript/router.md)\n- Using [Animation](./docs/gdscript/animations.md) Tween helpers\n- Using `Touchable` and `Draggable` Nodes with an [interactiveArea2D](./docs/gdscript/interactive-area-2d.md) behaviour on any Node\n- Using [Popups](./docs/gdscript/popups.md)\n- Using [DraggableCamera](./docs/gdscript/draggable-camera.md)\n- Using [Sound](./docs/gdscript/sound.md)\n- static functions inspired by [Underscore](/fox/libs/underscore.gd)\n\nExporting:\n\n- [Installing the CLI](./docs/cli.md)\n- Info about [Android](./docs/exporting/android.md) settings and building\n- Info about [iOS](./docs/exporting/ios.md) settings and building\n\n## Games created with Fox\n\n\u003ca href=\"https://uralys.com/xoozz\"\u003e\u003cimg alt=\"xoozz\" width=\"128\" title=\"xoozz\" src=\"./assets/docs/games/xoozz.webp\"\u003e\u003c/a\u003e\n\u003ca href=\"https://uralys.com/battle-squares\"\u003e\u003cimg alt=\"battle-squares\" width=\"128\" title=\"battle-squares\" src=\"./assets/docs/games/battle-squares.webp\"/\u003e\u003c/a\u003e\n\u003ca href=\"https://uralys.com/avindi\"\u003e\u003cimg alt=\"avindi\" width=\"128\" title=\"avindi\" src=\"./assets/docs/games/avindi-desktop-512x512.png\"\u003e\u003c/a\u003e\n\u003ca href=\"https://uralys.com/lockeyland\"\u003e\u003cimg alt=\"lockeyland\" width=\"128\" title=\"lockeyland\" src=\"./assets/docs/games/lockey0-desktop-512x512.png\"\u003e\u003c/a\u003e\n\u003ca href=\"https://uralys.com/lockeyland\"\u003e\u003cimg alt=\"lockeyland\" width=\"128\" title=\"lockeyland\" src=\"./assets/docs/games/lockey1-desktop-512x512.png\"\u003e\u003c/a\u003e\n\u003ca href=\"https://x.com/battle_squares\"\u003e\u003cimg alt=\"battle-squares\" width=\"128\" title=\"battle-squares\" src=\"./assets/docs/games/battle-squares-desktop-512x512.png\"\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Furalys%2Ffox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Furalys%2Ffox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Furalys%2Ffox/lists"}