{"id":15049499,"url":"https://github.com/zpl-c/track","last_synced_at":"2026-02-18T02:01:28.852Z","repository":{"id":86885991,"uuid":"380494040","full_name":"zpl-c/track","owner":"zpl-c","description":"Native C99 event tracking library.","archived":false,"fork":false,"pushed_at":"2023-06-17T13:15:39.000Z","size":414,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-10-14T18:33:38.362Z","etag":null,"topics":["c","c99","cpp","curl","desktop","iot","library","mobile","native","segment"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zpl-c.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-06-26T12:14:52.000Z","updated_at":"2024-12-15T06:47:49.000Z","dependencies_parsed_at":"2024-09-24T21:21:05.141Z","dependency_job_id":null,"html_url":"https://github.com/zpl-c/track","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/zpl-c/track","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zpl-c%2Ftrack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zpl-c%2Ftrack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zpl-c%2Ftrack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zpl-c%2Ftrack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zpl-c","download_url":"https://codeload.github.com/zpl-c/track/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zpl-c%2Ftrack/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29566366,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-18T00:47:08.760Z","status":"online","status_checked_at":"2026-02-18T02:00:09.468Z","response_time":162,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["c","c99","cpp","curl","desktop","iot","library","mobile","native","segment"],"created_at":"2024-09-24T21:20:57.673Z","updated_at":"2026-02-18T02:01:28.835Z","avatar_url":"https://github.com/zpl-c.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n    \u003ca href=\"https://github.com/zpl-c/zpl\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/2182108/111983468-d5593e80-8b12-11eb-9c59-8c78ecc0504e.png\" alt=\"zpl\" /\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\n\u003cdiv align=\"center\"\u003e\n    \u003ca href=\"https://github.com/zpl-c/track/actions\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/zpl-c/track/tester.yml?branch=main\u0026label=Tests\u0026style=for-the-badge\" alt=\"Build status\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://discord.gg/2fZVEym\"\u003e\u003cimg src=\"https://img.shields.io/discord/354670964400848898?color=7289DA\u0026style=for-the-badge\" alt=\"discord\" /\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\u003cdiv align=\"center\"\u003e\n  Event tracking library.\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003csub\u003e\n    Brought to you by \u003ca href=\"https://github.com/zpl-zak\"\u003e@zpl-zak\u003c/a\u003e\n    and \u003cstrong\u003econtributors\u003c/strong\u003e\n  \u003c/sub\u003e\n\u003c/div\u003e\n\n# Introduction\nzpl.track is a cross-platform event tracker that can send your event data to a UDP echo server. You can then pipe the telemetry data to any destinations desired. It aims to be very minimalist and easy to integrate.\n\n# How to obtain this library?\n\nThere are several options in getting hands-on this library:\n\n## 1. Via CLI (the simplest option)\n```sh\ncurl -L https://github.com/zpl-c/track/releases/latest/download/track.h \u003e track.h\n# OR\nwget https://github.com/zpl-c/track/releases/latest/download/track.h -O track.h\n```\n\nThis approach will download the latest release of zpl.track with everything prepared for you.\n\n## 2. Via GitHub releases page\n* Navigate to the [releases page](https://github.com/zpl-c/track/releases) of the zpl.track repository and pick the version you want to use. Each release contains the distributed version of zpl.track for you to use easily.\n\n## 3. Cloning the repository\n* Clone the repository by pressing the **Clone or download** button for instructions or use your terminal to clone:\n```sh\ngit clone https://github.com/zpl-c/track.git\n```\n\nWe use this method to develop zpl.track as it contains all the development sources that are easy to modify and expand, but it is not suitable for use in production.\n\nPlease follow the [CONTRIBUTING.md](.github/CONTRIBUTING.md) guide to learn how to contribute to the project.\n\n## Build the demo\nWe use CMake to generate project files.\nYou can do the following on the command line to create and build this project:\n```sh\ncmake -S misc -B build\ncmake --build build\n```\n\nRun `build/echo` first, then run the compiled `build/demo`.\n\n## NodeJS event receiver companion\nWe offer a simple to use NodeJS library to receive telemetry data from zpl.track. You can check it out on [npm registry](https://www.npmjs.com/package/zpl.track) or by installing the package locally using:\n```sh\nnpm install --save zpl.track\n# OR\nyarn install zpl.track\n```\n\n## Example code\n\n```c\n#define TRACK_IMPL\n#include \u003ctrack.h\u003e\n\n#include \u003cstdlib.h\u003e // for rand, srand\n#include \u003ctime.h\u003e // for time\n#include \u003cstring.h\u003e // for printf, snprintf\n\nint err = 0;\n\n#define CHECK(code)\\\n    err = code;\\\n    if (err) {\\\n        printf(\"error code: %d\\n\", err);\\\n        track_destroy();\\\n        return err;\\\n    }\n\nint main() {\n    srand(time(NULL)*time(NULL));\n    CHECK(track_init(\"127.0.0.1\", \"8200\"));\n\n    char userId[13] = {0};\n    snprintf(userId, 13, \"id-%d\", rand()%99999);\n\n    CHECK(track_ident(userId, \"{\\\"demoId\\\": 42, \\\"name\\\": \\\"Jane Doe\\\"}\"));\n    CHECK(track_event(\"demo_app opened\", userId, \"{\\\"foo\\\": 123, \\\"open_timestamp\\\": 123893893}\"));\n    CHECK(track_event(\"demo_app action\", userId, \"{\\\"foo\\\": \\\"bar\\\"}\"));\n    CHECK(track_group(userId, \"abc\", \"{\\\"demoId\\\": 42, \\\"name\\\": \\\"Jane Doe\\\"}\"));\n\n    track_prop props[] = {\n        {\"mode\", \"\\\"demo\\\"\"},\n        {\"speed\", \"\\\"fast\\\"\"},\n        {\"contains_bugs\", \"false\"},\n        {0}\n    };\n\n    CHECK(track_event_props(\"demo_app submitted\", userId, props));\n\n    CHECK(track_destroy());\n    return 0;\n}\n```\n\n## Looking for the old Segment.IO version?\nWe discontinued the outdated library due to its complexity and reliance on cURL and CMake. We made modifications and streamlined the API for simplicity and performance. The old version can still be accessed [here](https://github.com/zpl-c/track/tree/v1), but we don't provide support for it.\n\n## License\n\nSee [LICENSE](LICENSE) for the license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzpl-c%2Ftrack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzpl-c%2Ftrack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzpl-c%2Ftrack/lists"}