{"id":36700495,"url":"https://github.com/dana-ross/adrian","last_synced_at":"2026-01-12T11:37:47.885Z","repository":{"id":54569904,"uuid":"97723582","full_name":"dana-ross/adrian","owner":"dana-ross","description":"A platform for hosting web fonts","archived":false,"fork":false,"pushed_at":"2021-02-10T05:30:43.000Z","size":11833,"stargazers_count":17,"open_issues_count":4,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-06-19T05:56:18.036Z","etag":null,"topics":["fonts","hacktoberfest","hacktoberfest2020","http","webserver"],"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/dana-ross.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"custom":["https://www.paypal.me/davidmichaelross","https://cash.app/$danaroseross"]}},"created_at":"2017-07-19T14:07:26.000Z","updated_at":"2022-12-18T09:35:11.000Z","dependencies_parsed_at":"2022-08-13T20:00:59.607Z","dependency_job_id":null,"html_url":"https://github.com/dana-ross/adrian","commit_stats":null,"previous_names":["daveross/adrian"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/dana-ross/adrian","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dana-ross%2Fadrian","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dana-ross%2Fadrian/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dana-ross%2Fadrian/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dana-ross%2Fadrian/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dana-ross","download_url":"https://codeload.github.com/dana-ross/adrian/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dana-ross%2Fadrian/sbom","scorecard":{"id":318396,"data":{"date":"2025-08-11","repo":{"name":"github.com/dana-ross/adrian","commit":"84512c5faade4c239e82e3c9b90a4e32d7500b3b"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.7,"checks":[{"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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Pinned-Dependencies","score":3,"reason":"dependency not pinned by hash detected -- score normalized to 3","details":["Warn: containerImage not pinned by hash: Dockerfile:1","Warn: containerImage not pinned by hash: Dockerfile:11: pin your Docker image by updating alpine:3 to alpine:3@sha256:4bcff63911fcb4448bd4fdacec207030997caf25e9bea4045fa6c8c44de311d1","Info:   1 out of   1 goCommand dependencies pinned","Info:   0 out of   2 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v2.2.1 not signed: https://api.github.com/repos/dana-ross/adrian/releases/26838660","Warn: release artifact v2.2.0 not signed: https://api.github.com/repos/dana-ross/adrian/releases/26834256","Warn: release artifact v2.1.1 not signed: https://api.github.com/repos/dana-ross/adrian/releases/25887363","Warn: release artifact v2.2.1 does not have provenance: https://api.github.com/repos/dana-ross/adrian/releases/26838660","Warn: release artifact v2.2.0 does not have provenance: https://api.github.com/repos/dana-ross/adrian/releases/26834256","Warn: release artifact v2.1.1 does not have provenance: https://api.github.com/repos/dana-ross/adrian/releases/25887363"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 5 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T00:48:51.260Z","repository_id":54569904,"created_at":"2025-08-18T00:48:51.260Z","updated_at":"2025-08-18T00:48:51.260Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28338971,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T10:58:46.209Z","status":"ssl_error","status_checked_at":"2026-01-12T10:58:42.742Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["fonts","hacktoberfest","hacktoberfest2020","http","webserver"],"created_at":"2026-01-12T11:37:47.810Z","updated_at":"2026-01-12T11:37:47.877Z","avatar_url":"https://github.com/dana-ross.png","language":"Go","funding_links":["https://www.paypal.me/davidmichaelross","https://cash.app/$danaroseross"],"categories":[],"sub_categories":[],"readme":"\u003cimg align=\"right\" src=\"logo.svg\" alt=\"Adrian\" height=\"100\" /\u003e\n\n# Adrian: A platform for hosting web fonts\u003c/h1\u003e\n\n[![CodeFactor](https://www.codefactor.io/repository/github/dana-ross/adrian/badge)](https://www.codefactor.io/repository/github/dana-ross/adrian) ![GitHub](https://img.shields.io/github/license/dana-ross/adrian) ![GitHub release (latest by date)](https://img.shields.io/github/v/release/dana-ross/adrian)\n\nMeet my friend Adrian! \n\nAdrian is a web server, like Apache or Nginx, but just for fonts. Really, just fonts. Point Adrian toward a directory of font files; it'll generate CSS to use all styles and weights you have, and serve everything up for your visitors. If you’ve used Google Fonts, you should find Adrian quite familiar.\n\nAdrian supports these font formats:\n\n* otf\n* ttf\n* woff\n* woff2\n\nDo you have a project that you’ve open-sourced but you can't put the commercial fonts you bought in your repo? Put your code up on GitHub and load your fonts off your private Adrian server. \n\nDid you actually read the license for that font you bought, and your head is spinning after reading things like “adequate technical protection measures that restrict the Use of and/or access to the Licensed Web Fonts, for instance by utilizing JavaScript or access control mechanisms for cross-origin resource sharing”? Yeah, Adrian's got your back. \n\n## Getting Started\n\n### Installing\n\n1. Grab the most recent [Adrian release](https://github.com/dana-ross/adrian/releases) for your operating system. Extract the files somewhere on your server or local development environment.\n1. Copy `adrian.yaml.example` to a new file named `adrian.yaml`\n1. Edit `adrian.yaml` to configure Adrian\n1. Run `adrian` to begin serving\n\nTo use a YAML config file in a different location, specify it with the `--config` parameter when starting Adrian. For example: `./adrian --config /etc/adrian/adrian.yaml`\n\nTest it by loading a font CSS file, such as http://example.com/font/Arial.css (replace `example.com` with your server's hostname and `Arial` with the name of a font available to Adrian.\n\n#### Configuring Adrian with `adrian.yaml`\n\n```yaml\nglobal:\n\n  # Port number Adrian responds to\n  port: 80\n  \n  # Adrian will only allow fonts to be used on these URLs (CORS functionality)\n  domains:\n    - example.com\n    \n  # Directories where Adrian should look for fonts\n  directories:\n    - /usr/share/fonts\n    \n  # If true, replace font filenames with hashes so they can't be guessed as easily\n  obfuscate filenames: false\n\n  # Used to set the cache-control header in responses\n  cache-control lifetime: 2628000\n\n  # Paths for writing logs to disk\n  logs:\n    access: \"/var/log/adrian/access.log\"\n```\n\n##### port: \u0026lt;integer\u0026gt;\n\nThe TCP/IP port Adrian will listen to. Defaults to port 80.\n\n##### domains\n\nA whitelist of domains allowed to use fonts hosted by this instance\n\n##### directories\n\nA list of directories where Adrian should look for font files. On Linux, system-wide fonts are usually found in `/usr/share/fonts`.\n\n##### obfuscate filenames: \u0026lt;boolean\u0026gt;\n\nIf true, the filenames of font files are replaced with hashes so they can't be guessed as easily.\n\n##### cache-control lifetime: \u0026lt;seconds\u0026gt;\n\nUsed to set the cache-control header sent to browsers and CDNs. This header instructs everyone downstream to cache Adrian's CSS and font files for this amount of time.\n\n##### logs\n\n###### access: \u0026lt;string\u0026gt;\nPath where Adrian should write an access log. Access logs use Common Log Format for easy parsing.\n\n## Usage\n\n### CSS Import\n\nIn your site's CSS, import Adrian's CSS for the fonts you want to use:\n```\n@import \"https://example.com/css?family=Arian|Times+New+Roman;\n```\n\n### URL formats\n\n#### http://example.com/css/?family=Arial\n\nGenerates CSS for including the Arial font and all of its variants in a web project.\n\nGet one CSS file for muliple fonts by separating the names with pipe characters. For example: http://example.com/css?family=Arial|Courier%20New\n\n#### http://example.com/css/?family=Arial\u0026display=swap\n\nThe `display` query parameter allows you to set the [`font-display`](https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display) style for all of the requested fonts. For example, the `display=swap` value tells browsers to render text with fallback fonts until custom ones are downloaded.\n\n## Built With\n\n* [Go](https://golang.org/)\n* [Echo](https://echo.labstack.com/) - The web framework used\n* [Fastcache](https://github.com/VictoriaMetrics/fastcache) - In-memory caching library\n* [sfnt](https://github.com/ConradIrwin/font/tree/master/sfnt) - Font file parsing\n\n## Contributing\n\nPlease consider opening a [Pull Request](https://github.com/dana-ross/adrian/pulls) to submit changes to this project.\n\n## Versioning\n\nWe use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/dana-ross/adrian/tags). \n\n## Authors\n\n* **Dana Ross** - *Initial work* - [dana-ross](https://github.com/dana-ross)\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](https://github.com/dana-ross/adrian/blob/main/LICENSE) file for details\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdana-ross%2Fadrian","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdana-ross%2Fadrian","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdana-ross%2Fadrian/lists"}