{"id":19811734,"url":"https://github.com/kbiakov/anakin","last_synced_at":"2025-12-15T13:23:02.536Z","repository":{"id":84494286,"uuid":"72200961","full_name":"kbiakov/Anakin","owner":"kbiakov","description":"Codegeneration tool for isomorphic server and mobile Go apps with gRPC \u0026 Protobuf. Share code between your backend, Android \u0026 iOS app! :sun_with_face:","archived":false,"fork":false,"pushed_at":"2018-01-24T21:22:27.000Z","size":38,"stargazers_count":17,"open_issues_count":0,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-06T11:51:51.235Z","etag":null,"topics":["android","codegeneration","go","golang","grpc","ios","protobuf"],"latest_commit_sha":null,"homepage":"","language":"Go","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/kbiakov.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,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2016-10-28T11:13:02.000Z","updated_at":"2024-10-22T00:01:36.000Z","dependencies_parsed_at":"2024-02-01T04:46:14.850Z","dependency_job_id":null,"html_url":"https://github.com/kbiakov/Anakin","commit_stats":null,"previous_names":["softwee/anakin"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kbiakov%2FAnakin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kbiakov%2FAnakin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kbiakov%2FAnakin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kbiakov%2FAnakin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kbiakov","download_url":"https://codeload.github.com/kbiakov/Anakin/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251847846,"owners_count":21653583,"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","codegeneration","go","golang","grpc","ios","protobuf"],"created_at":"2024-11-12T09:27:37.321Z","updated_at":"2025-10-08T10:06:59.633Z","avatar_url":"https://github.com/kbiakov.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Anakin [![GoDoc](https://godoc.org/github.com/Softwee/Anakin?status.svg)](https://godoc.org/github.com/Softwee/Anakin) [![Go Report Card](https://goreportcard.com/badge/github.com/Softwee/Anakin)](https://goreportcard.com/report/github.com/Softwee/Anakin) [![Maintainability](https://api.codeclimate.com/v1/badges/9f7e630f0ab78a73ccca/maintainability)](https://codeclimate.com/github/kbiakov/Anakin/maintainability) [![Build Status](https://travis-ci.org/Softwee/Anakin.svg?branch=master)](https://travis-ci.org/Softwee/Anakin) [![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-Anakin-blue.svg?style=true)](https://android-arsenal.com/details/1/4625)\n\nCodegeneration tool for isomorphic server and mobile Go apps with gRPC \u0026 Protobuf. Share code between your backend, Android \u0026 iOS app!\n\n## Description\n\u003cb\u003eAnakin\u003c/b\u003e takes care about some routine tasks and helps to create shared code between client (mobile apps) \u0026 server app written in Go and backed by gRPC \u0026 Protobuf. So, how it works?\n\nAt the first stage, it just generates from your ```*.proto``` (with defined service, RPC-calls \u0026 allowed messages) main gRPC-file ```*.pb.go``` which may be used by any Go app. It uses ```protoc``` utility.\n\nNext \u003cb\u003eAnakin\u003c/b\u003e parses ```*.proto```-file to extract RPC-methods and messages, takes templates for client and server \u0026 generates similar Go code. After that it builds binaries for Android (```*.aar```) and iOS (```*.framework```) using ```gomobile```.\n\nMobile binaries build stage may fail by different reasons and you may want to go back again later when environment will be ready. Also you can ignore build stage if you want to make some changes in generated code. Anyway \u003cb\u003eAnakin\u003c/b\u003e has another ```anakin-build``` script inside for this purpose, which automatically copied for generated ```$YOUR_OUTPUT/client``` directory with other source files when you run original ```anakin``` script.\n\n![Anakin plugin stages](http://i64.tinypic.com/1f4uh.png)\n\n## Required\n1. Go 1.5 and higher.\u003cbr\u003e\n\n2. Xcode Command Line Tools (Mac OS X only, will be installed if needed).\u003cbr\u003e\n\n3. Android SDK (if Android build is needed).\u003cbr\u003e\n\n## Usage\n```\nanakin -P myrpc.proto [-O output_dir] [-h localhost] [-p 50051] [-android] [-ios]\n```\n\n\u003cb\u003eFlags\u003c/b\u003e:\u003cbr\u003e\n```-P | --proto \u003cproto\u003e``` *(required)* path to ```*.proto```-file\u003cbr\u003e\n```-O | --output \u003coutput\u003e``` *(optional)* path to output directory, default: ```/gen```\u003cbr\u003e\n```-h | --host \u003chost\u003e``` *(optional)* server host, default: localhost\u003cbr\u003e\n```-p | --port \u003cport\u003e``` *(optional)* server port, default: 50051\u003cbr\u003e\n```-android``` *(optional)* is Android build needed, default: false\u003cbr\u003e\n```-ios``` *(optional)* is iOS build needed, default: false\u003cbr\u003e\n\n```\nanakin-build [--android 1] [--ios 1]\n```\n\n\u003cb\u003eFlags\u003c/b\u003e:\u003cbr\u003e\n```--android 1``` *(optional)* is Android build needed, default: 1 (true)\u003cbr\u003e\n```--ios 1``` *(optional)* is iOS build needed, default: 1 (true)\u003cbr\u003e\n\n## Author\n### [Kirill Biakov](https://github.com/kbiakov)\n\n## License\n```\n                     GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free Software Foundation, Inc. \u003chttp://fsf.org/\u003e\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkbiakov%2Fanakin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkbiakov%2Fanakin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkbiakov%2Fanakin/lists"}