{"id":13469982,"url":"https://github.com/mercari/gaurun","last_synced_at":"2025-03-26T09:31:54.713Z","repository":{"id":30479152,"uuid":"34033219","full_name":"mercari/gaurun","owner":"mercari","description":"General push notification server in Go","archived":true,"fork":false,"pushed_at":"2022-11-22T07:18:19.000Z","size":472,"stargazers_count":930,"open_issues_count":9,"forks_count":113,"subscribers_count":74,"default_branch":"master","last_synced_at":"2024-08-01T16:18:08.297Z","etag":null,"topics":["apns","gcm","push-notifications"],"latest_commit_sha":null,"homepage":"","language":"Go","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/mercari.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}},"created_at":"2015-04-16T03:53:48.000Z","updated_at":"2024-07-23T03:36:40.000Z","dependencies_parsed_at":"2023-01-14T17:02:24.611Z","dependency_job_id":null,"html_url":"https://github.com/mercari/gaurun","commit_stats":null,"previous_names":[],"tags_count":27,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mercari%2Fgaurun","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mercari%2Fgaurun/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mercari%2Fgaurun/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mercari%2Fgaurun/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mercari","download_url":"https://codeload.github.com/mercari/gaurun/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222131035,"owners_count":16936304,"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":["apns","gcm","push-notifications"],"created_at":"2024-07-31T16:00:20.536Z","updated_at":"2024-10-29T23:31:48.223Z","avatar_url":"https://github.com/mercari.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"# Gaurun [![GitHub release](https://img.shields.io/github/release/mercari/gaurun.svg?style=flat-square)][release] ![GitHub Actions](https://github.com/mercari/gaurun/workflows/Go/badge.svg)\n\n[release]: https://github.com/mercari/gaurun/releases\n\n\u003cimg src=\"https://raw.githubusercontent.com/mercari/gaurun/master/img/logo.png\" alt=\"logo\" align=\"right\"/\u003e\n\n\nGaurun is a general push notification server written in Golang. It proxies push requests to APNs and FCM and asynchronously executes them via HTTP/2. It helps you when you need to bulkly sends push notification to your users (e.g., when you need to exec 10 million push at once!) or when some other API server which must response quickly needs to push. Since it leverages Golang's powerful concurrent feature, it gives high performance. \n\nIn addition to performance, it's important not to lost pushes over sever crashes or hardware failures. Gaurun can use its access log for kind of transaction journal and can re-push only failed notification later (We provide a special command for this. See [Usage](#usage)). \n\nCurrently we support the following platforms:\n\n- [Apple APNs](https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/APNSOverview.html)\n- [Google FCM](https://firebase.google.com/docs/cloud-messaging/)\n\n## Status\n\nProduction ready.\n\n## Installation\n\nThere are two way to install Gaurun; using a precompiled binary or install from source. Downloading a precompiled binary is easiest and recommended.\n\nTo install a precompiled binary, download the appropriate zip package for your OS and architecture from [here](https://github.com/mercari/gaurun/releases). Once the zip is downloaded, unzip it and place the binary where you want to use (if you want to access it from the command-line, make sure to put it on `$PATH`).\n\nTo compile from source, you need Go1.15 or later. After setup, then clone the source code by running the following command,\n\n```bash\n$ git clone https://github.com/mercari/gaurun.git\n```\n\nTo fetch dependencies and build, run the following make tasks,\n\n```bash\nmake\n```\n\n## Usage\n\nTo run `gaurun`, you must provide configuration path via `-c` option (See [CONFIGURATION.md](/CONFIGURATION.md) about details),\n\n```bash\n$ bin/gaurun -c conf/gaurun.toml\n```\n\nUse `-help` to see more options.\n\n### Crash Recovery\n\nGaurun can recover from server crashes or hardware failures while pushing. It can use its access log for kind of transaction journal and can re-push only failed notifications later. We provide the special command for this, use it like the following (assuming that access log is generated to `/tmp/gaurun.log`),\n\n```bash\n$ bin/gaurun_recover -c conf/gaurun.toml -l /tmp/gaurun.log\n```\n\n## Configuration\n\nSee [CONFIGURATION.md](/CONFIGURATION.md) about details.\n\n*NOTE*: The default configuration is just for development and not high performant. For production usage, tune the performance with some parameters such as `workers` and `queues` and `pusher_max` in the `core` section.\n\n## Specification\n\nAPI specification is defined on [SPEC.md](/SPEC.md).\n\n## Contribution\n\nPlease read the CLA below carefully before submitting your contribution.\n\nhttps://www.mercari.com/cla/\n\n## License\n\nCopyright 2014-2019 Mercari, Inc.\n\n\nLicensed under the MIT License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmercari%2Fgaurun","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmercari%2Fgaurun","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmercari%2Fgaurun/lists"}