{"id":15178914,"url":"https://github.com/yoyo-project/yoyo","last_synced_at":"2026-02-25T21:05:48.710Z","repository":{"id":40652235,"uuid":"332482400","full_name":"yoyo-project/yoyo","owner":"yoyo-project","description":"A Database Access Layer Generator for Go","archived":false,"fork":false,"pushed_at":"2024-11-04T14:50:54.000Z","size":230,"stargazers_count":2,"open_issues_count":10,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-06T18:47:38.922Z","etag":null,"topics":["code-generation","database-access","database-connector","database-design","database-migrations","database-schema","generator","go","golang","mysql","mysql-database","postgres","postgresql","repository-pattern"],"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/yoyo-project.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,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-01-24T15:21:01.000Z","updated_at":"2024-11-04T14:50:58.000Z","dependencies_parsed_at":"2024-11-15T05:32:37.289Z","dependency_job_id":null,"html_url":"https://github.com/yoyo-project/yoyo","commit_stats":{"total_commits":64,"total_committers":1,"mean_commits":64.0,"dds":0.0,"last_synced_commit":"67a725610d0caa8c47bafc3dd38e430e0975e184"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/yoyo-project/yoyo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yoyo-project%2Fyoyo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yoyo-project%2Fyoyo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yoyo-project%2Fyoyo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yoyo-project%2Fyoyo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yoyo-project","download_url":"https://codeload.github.com/yoyo-project/yoyo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yoyo-project%2Fyoyo/sbom","scorecard":{"id":1237128,"data":{"date":"2025-07-07","repo":{"name":"github.com/yoyo-project/yoyo","commit":"0597bc6c2c841ac771c5c209d485fbbaf72c33d1"},"scorecard":{"version":"v5.2.1-18-gbb9c347d","commit":"bb9c347dff6349d986baab6578a46d68a5524c62"},"score":3.4,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/12 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 26 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":9,"reason":"1 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2022-0603 / GHSA-hp87-p4gw-j4gq"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-09-06T18:47:40.952Z","repository_id":40652235,"created_at":"2025-09-06T18:47:40.952Z","updated_at":"2025-09-06T18:47:40.952Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29839987,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-25T20:42:33.054Z","status":"ssl_error","status_checked_at":"2026-02-25T20:42:21.322Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["code-generation","database-access","database-connector","database-design","database-migrations","database-schema","generator","go","golang","mysql","mysql-database","postgres","postgresql","repository-pattern"],"created_at":"2024-09-27T15:41:54.734Z","updated_at":"2026-02-25T21:05:48.692Z","avatar_url":"https://github.com/yoyo-project.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# yoyo\n\n[![MIT license](https://img.shields.io/badge/license-MIT-brightgreen.svg)](https://opensource.org/licenses/MIT)\n[![Go Report Card](https://goreportcard.com/badge/github.com/yoyo-project/yoyo)](https://goreportcard.com/report/github.com/yoyo-project/yoyo)\n[![Maintainability](https://api.codeclimate.com/v1/badges/1e0d4f34de5f07425ba5/maintainability)](https://codeclimate.com/github/yoyo-project/yoyo/maintainability)\n[![codecov](https://codecov.io/gh/yoyo-project/yoyo/branch/main/graph/badge.svg)](https://codecov.io/gh/yoyo-project/yoyo)\n[![CircleCI](https://circleci.com/gh/yoyo-project/yoyo/tree/main.svg?style=shield)](https://circleci.com/gh/yoyo-project/yoyo/tree/main)\n\nA Migration Generator and Database Access Layer Generator for Go projects. Made with ❤️ to hopefully make your life a\nlittle bit easier. \n\nYour Database access layer generated by `yoyo`...\n\n- provides a native, fluent query generator\n- is totally pure Go\n- is totally reflection-free \n\n## A Note on Using Databases in Code\n\nOkay, accessing databases in code is annoying. Relational data is annoying. It doesn't matter which language you're using.\nIt doesn't matter if you're using PostgreSQL, MySQL, or Clickhouse, there's an innate complexity in relational data that\nis simply not native to Go or most other general purpose programming languages. That's why many of us turn to tools like\nORMs, choosing to accept the cons of ORM magic because of the pros of having something else do the translation.\n\nWhile yoyo is not an ORM, it is meant to address the same problem in a different way. By generating a database access\nlayer with entities for your project, tailor-made to your schema and without any reflection in sight.\n\n## What does yoyo do?\n\nyoyo is a code-generation tool which really does two things:\n\n- Help manage your schema by generating migrations.\n- Help you work with your schema by generating database access layer code in your project.\n\n## Usage\n\n### `yoyo generate`\n\n[![Stability: Experimental](https://masterminds.github.io/stability/experimental.svg)](https://masterminds.github.io/stability/experimental.html)\n\nyoyo's main function is generating database access code.\n\n### `yoyo reverse`\n\n[![Stability: Experimental](https://masterminds.github.io/stability/experimental.svg)](https://masterminds.github.io/stability/experimental.html)\n\nRead an existing database and attempt to translate it to a schema in `yoyo.yml`\n\n### `yoyo generate migration`\n\n[![Stability: Experimental](https://masterminds.github.io/stability/experimental.svg)](https://masterminds.github.io/stability/experimental.html)\n\n## Configuration\n\nConfiguration for yoyo is kept in your project's `yoyo.yml` file.\n\n## Managing Database Connections\n\nWhen running or generating migrations, Yoyo's connection to your database is environment-driven\nand managed internally.\n\nWhen running as a part of your app, Yoyo cedes control for your flexibility. Therefore, it needs\nto be handed a connection in the form of a `*sql.DB`.  \n\n## What Yoyo can't do\n\n- Anything that crosses into another database. Yoyo is a single-database (single-schema) tool, so something like a MySQL\nForeign Key that references a table in a different schema won't work in Yoyo.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyoyo-project%2Fyoyo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyoyo-project%2Fyoyo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyoyo-project%2Fyoyo/lists"}