{"id":13755957,"url":"https://twitter.github.io/finatra/","last_synced_at":"2025-05-10T03:30:34.102Z","repository":{"id":2491317,"uuid":"3465312","full_name":"twitter/finatra","owner":"twitter","description":"Fast, testable, Scala services built on TwitterServer and Finagle","archived":false,"fork":false,"pushed_at":"2024-05-07T20:18:06.000Z","size":33410,"stargazers_count":2269,"open_issues_count":16,"forks_count":410,"subscribers_count":211,"default_branch":"develop","last_synced_at":"2024-11-11T13:22:00.573Z","etag":null,"topics":["finagle","framework","guice","http","microservices","scala","slf4j","testing","thrift","twitter-server"],"latest_commit_sha":null,"homepage":"https://twitter.github.io/finatra/","language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/twitter.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.rst","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2012-02-16T23:55:29.000Z","updated_at":"2024-11-09T19:27:45.000Z","dependencies_parsed_at":"2023-07-06T07:29:24.425Z","dependency_job_id":"86903205-e9d8-4b1f-b5d2-ba10575e80d5","html_url":"https://github.com/twitter/finatra","commit_stats":{"total_commits":2554,"total_committers":259,"mean_commits":9.86100386100386,"dds":0.7494126859827721,"last_synced_commit":"5ca6c0c19d1770f20b30447ebf488b7194226bf6"},"previous_names":["capotej/finatra"],"tags_count":131,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twitter%2Ffinatra","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twitter%2Ffinatra/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twitter%2Ffinatra/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twitter%2Ffinatra/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/twitter","download_url":"https://codeload.github.com/twitter/finatra/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224911418,"owners_count":17390840,"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":["finagle","framework","guice","http","microservices","scala","slf4j","testing","thrift","twitter-server"],"created_at":"2024-08-03T11:00:33.382Z","updated_at":"2024-11-16T11:30:35.615Z","avatar_url":"https://github.com/twitter.png","language":"Scala","readme":"# Finatra\n\n[![Build Status](https://github.com/twitter/finatra/workflows/continuous%20integration/badge.svg?branch=develop)](https://github.com/twitter/finatra/actions?query=workflow%3A%22continuous+integration%22+branch%3Adevelop)\n[![Project status](https://img.shields.io/badge/status-active-brightgreen.svg)](#status)\n[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.twitter/finatra-http-server_2.12/badge.svg)][maven-central]\n[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/twitter/finatra)\n\n## Status\n\nThis project is used in production at Twitter (and many other organizations),\nand is being actively developed and maintained.\n\n\u003cimg src=\"./finatra_logo_text.png\" title=\"Finatra Logo\" alt=\"Finatra Logo\" height=394 width=679/\u003e\n\nFinatra is a lightweight framework for building fast, testable, scala applications on top of [TwitterServer][twitter-server] and [Finagle][finagle]. Finatra provides an easy-to-use API for creating and [testing](https://twitter.github.io/finatra/user-guide/testing/index.html) [Finagle servers](https://twitter.github.io/finagle/guide/Servers.html) and [apps](https://twitter.github.io/util/docs/#com.twitter.app.App) as well as powerful JSON support, modern logging via [SLF4J][slf4j], [Finagle client](https://twitter.github.io/finagle/guide/Clients.html) utilities, and more.\n\n\n## Getting involved\n\n* Website: [https://twitter.github.io/finatra/](https://twitter.github.io/finatra/)\n* Latest news: [Blog](https://finagle.github.io/blog/)\n* Github Source: [https://github.com/twitter/finatra/](https://github.com/twitter/finatra/)\n* Gitter: [https://gitter.im/twitter/finatra](https://gitter.im/twitter/finatra)\n* Mailing List: [finatra-users@googlegroups.com](https://groups.google.com/forum/#!forum/finatra-users)\n\n\n## Features\n\n* Production use [@Twitter](https://twitter.com/).\n* ~50 times faster than v1.6 in several benchmarks.\n* Powerful Feature and Integration test support.\n* Optional JSR-330 Dependency Injection using [Google Guice][guice].\n* [Jackson][jackson]-based JSON parsing supporting required fields, default values, and [validations](https://twitter.github.io/finatra/user-guide/json/validations.html).\n* [Logback][logback] [MDC][mdc] integration with [com.twitter.util.Local][local] for contextual logging across [futures](https://twitter.github.io/util/guide/util-cookbook/futures.html).\n\n## Documentation\n\nTo get started, see the [Getting Started](https://twitter.github.io/finatra/user-guide/index.html#getting-started) section of our [User Guide][user-guide] to get up and running. Or check out the specific sections for building [HTTP](https://twitter.github.io/finatra/user-guide/http/server.html) or [Thrift](https://twitter.github.io/finatra/user-guide/thrift/server.html) servers.\n\n## Examples\n\nAn HTTP controller and server:\n\n```scala\nimport com.twitter.finatra.http._\n\n@Singleton\nclass ExampleController extends Controller {\n  get(\"/\") { request: Request =\u003e\n    \"\u003ch1\u003eHello, world!\u003c/h1\u003e\"\n  }\n}\n```\n\n```scala\nimport com.twitter.finatra.http._\n\nclass ExampleServer extends HttpServer {\n  override def configureHttp(router: HttpRouter): Unit = {\n    router\n      .filter[CommonFilters]\n      .add[ExampleController]\n  }\n}\n```\n\nA Thrift controller and server:\n\n```scala\nimport com.twitter.finatra.thrift._\nimport com.twitter.scrooge.{Request, Response}\n\n@Singleton\nclass ExampleThriftController\n  extends Controller(MyThriftService) {\n\n  handle(MyFunction).withFn { request: Request[MyFunction.Args] =\u003e\n    ...\n  }\n}\n```\n\n```scala\nimport com.twitter.finatra.thrift._\n\nclass ExampleServer extends ThriftServer {\n  override def configureThrift(router: ThriftRouter): Unit = {\n    router\n      .add[ExampleThriftController]\n  }\n}\n```\n\n## Example Projects\n\nFinatra includes working examples which highlight various features of the framework and include tests. These examples are included in the root [sbt][sbt] build and are thus buildable as part of the entire project.\n\nPlease take a look through the [examples](/examples) for more detailed information on features, testing, building, and running.\n\n## Latest version\n\nThe [release branch](https://github.com/twitter/finatra/tree/release) in Github tracks the latest stable [release](https://github.com/twitter/finatra/releases), which is currently:\n\n[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.twitter/finatra-http_2.12/badge.svg)][maven-central]\n\navailable on Maven Central. See the [First Steps](https://twitter.github.io/finatra/user-guide/getting-started/basics.html#first-steps) section in the [User Guide][user-guide] for how to add dependencies.\n\nReleases are done on an approximately monthly schedule. While\n[semver](https://semver.org/) is not followed, the\n[changelogs](CHANGELOG.rst) are detailed and include sections on public API\nbreaks and changes in runtime behavior.\n\n## Development version\n\nThe [develop branch](https://github.com/twitter/finatra/tree/develop) in Github tracks the latest code which is updated every week. If you want to contribute a patch or fix, please use this branch as the basis of your [Pull Request](https://help.github.com/articles/creating-a-pull-request/).\n\nWe feel that a welcoming community is important and we ask that you follow Twitter's [Open Source Code of Conduct](https://github.com/twitter/.github/blob/main/code-of-conduct.md) in all interactions with the community. For more information on providing contributions, please see our [CONTRIBUTING.md](/CONTRIBUTING.md) documentation.\n\n## Presentations\n\nCheck out our list of presentations: [Finatra Presentations](https://twitter.github.io/finatra/presentations/).\n\n## Authors\n\n* Steve Cosenza \u003chttps://github.com/scosenza\u003e\n* Christopher Coco \u003chttps://github.com/cacoco\u003e\n\nA full list of [contributors](https://github.com/twitter/finatra/graphs/contributors?type=a) can be found on GitHub.\n\nFollow [@finatra](https://twitter.com/finatra) on Twitter for updates.\n\n## License\n\nCopyright 2013 Twitter, Inc.\n\nLicensed under the Apache License, Version 2.0: https://www.apache.org/licenses/LICENSE-2.0\n\n[twitter-server]: https://github.com/twitter/twitter-server\n[finagle]: https://github.com/twitter/finagle\n[util-app]: https://github.com/twitter/util/tree/release/util-app\n[guice]: https://github.com/google/guice\n[jackson]: https://github.com/FasterXML/jackson\n[logback]: https://logback.qos.ch/\n[slf4j]: https://www.slf4j.org/manual.html\n[local]: https://github.com/twitter/util/blob/release/util-core/src/main/scala/com/twitter/util/Local.scala\n[mdc]: https://logback.qos.ch/manual/mdc.html\n[maven]: https://maven.apache.org/\n[maven-central]: https://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.twitter%22%20AND%20%28a%3A%22finatra-http_2.12%22%20OR%20a%3A%22finatra-thrift_2.12%22%29\n[user-guide]: https://twitter.github.io/finatra/user-guide/index.html\n[sbt]: https://www.scala-sbt.org/\n","funding_links":[],"categories":["`API Frameworks`","Service Toolkits","API Frameworks"],"sub_categories":["Scala","JVM"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/twitter.github.io%2Ffinatra%2F","html_url":"https://awesome.ecosyste.ms/projects/twitter.github.io%2Ffinatra%2F","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/twitter.github.io%2Ffinatra%2F/lists"}