{"id":13483919,"url":"https://github.com/trulia/hologram","last_synced_at":"2025-05-14T00:09:17.447Z","repository":{"id":7856031,"uuid":"9228086","full_name":"trulia/hologram","owner":"trulia","description":"A markdown based documentation system for style guides.","archived":false,"fork":false,"pushed_at":"2023-08-10T12:27:31.000Z","size":2702,"stargazers_count":2163,"open_issues_count":43,"forks_count":199,"subscribers_count":131,"default_branch":"master","last_synced_at":"2025-05-10T23:47:10.913Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://trulia.github.io/hologram","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/trulia.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2013-04-04T21:07:57.000Z","updated_at":"2025-04-16T23:27:23.000Z","dependencies_parsed_at":"2022-09-03T09:24:18.041Z","dependency_job_id":"3797d195-3070-4799-9ab0-2caf14435902","html_url":"https://github.com/trulia/hologram","commit_stats":{"total_commits":272,"total_committers":44,"mean_commits":6.181818181818182,"dds":0.8125,"last_synced_commit":"f24f0d92ec291975b7638a3e7b13246a425557df"},"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trulia%2Fhologram","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trulia%2Fhologram/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trulia%2Fhologram/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trulia%2Fhologram/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/trulia","download_url":"https://codeload.github.com/trulia/hologram/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254044123,"owners_count":22005078,"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":[],"created_at":"2024-07-31T17:01:16.872Z","updated_at":"2025-05-14T00:09:12.440Z","avatar_url":"https://github.com/trulia.png","language":"Ruby","readme":"# Hologram\n[![Gem Version](https://img.shields.io/gem/v/hologram.svg)](https://rubygems.org/gems/hologram)\n[![Build Status](https://img.shields.io/travis/trulia/hologram.svg)](https://travis-ci.org/trulia/hologram)\n[![Code Climate](https://img.shields.io/codeclimate/github/trulia/hologram.svg)](https://codeclimate.com/github/trulia/hologram)\n[![Dependency Status](https://img.shields.io/gemnasium/trulia/hologram.svg)](https://gemnasium.com/trulia/hologram)\n[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE.txt)\n\nHologram is a Ruby gem that parses comments in your CSS and helps you\nturn them into a beautiful style guide.\n\nThere are two steps to building a great style guide:\n\n1. Documenting your css and javascript, and generating html examples.\n2. Styling the output of step 1.\n\nThe hologram gem itself is only concerned with step 1. This means you\nare free to make your style guide look however you would like. If you\ndon't feel like going through this process yourself, you can take a look\nat the\n[templates](https://github.com/trulia/hologram-example/tree/master/templates)\nin our [example repository](https://github.com/trulia/hologram-example),\nand use the assets defined there instead.\n\n\n## Installation\n\nAdd this line to your application's Gemfile:\n\n    gem 'hologram'\n\nAnd then execute:\n\n    $ bundle\n\nIf you don't use bundler you can run `gem install hologram`.\n\n\n## Quick Start\n\n``` hologram init ```\n\nThis will create a `hologram_config.yml` file  (more on this below),\nstarter `_header.html` and `_footer.html` files,\nand starter templates for rendering code examples.\nYou can then tweak the config values and start documenting your css.\n\nAdd some documentation to one of your stylesheets:\n\n    /*doc\n    ---\n    title: Alert\n    name: alert\n    category: basics\n    ---\n    ```html_example\n        \u003cdiv class='alert'\u003eHello\u003c/div\u003e\n    ```\n    */\n\nBuilding the documentation is simply:\n\n``` hologram ```\n\n\n### Command line flags\n\nHologram has a couple of command line flags:\n\n* `-c` or `--config` - specify the config file, by default hologram\n  looks for `hologram_config.yml`\n\n## Details\n\nThere are two things you need to do to start using hologram:\n\n1. Create a YAML config file for your project.\n\n2. Go document some code!\n\n\n### Creating a YAML config file\n\nHologram needs a few configuration settings before it can begin to build\nyour documentation for you. Once this is set up, you can execute hologram\nby simply running:\n\n`hologram path/to/your/config.yml` or (using bundler) `bundle exec\nhologram path/to/your/config.yml`\n\nYour config file needs to contain the following key/value pairs\n\n* **source**: relative path(s) to your source files. Accepts either a\n  single value or an array\n\n* **destination**: relative path where you want the documentation to be\n  built\n\n* **documentation_assets**: The path that contains supporting assets for\n  the documentation page. This typically includes html fragments\n  (header/footer, etc), style guide specific CSS, javascript and any\n  images. Hologram specifically looks for two files: `_header.html` and\n  `_footer.html`. These are used to start and end every html page\n  hologram generates.\n\n  Hologram treats `_header.html` and `_footer.html` as ERB files for\n  each page that is generated. You can access the `title`, `file_name`,\n  `blocks`, and `categories`.\n\n  `blocks` is a list of each documentation block on the page. Each item\n  in the list has a `title`, `name`, `category`, and optionally a\n  `parent`. This is useful for, say, building a menu that lists each\n  component.\n\n  `categories` is a list of all the categories found in the\n  documentation\n\n  **Nota Bene:** Filenames that begin with underscores will not be\n  copied into the destination folder.\n\n* **code\\_example\\_templates**: (optional) Hologram uses the files in this folder to\n  format the code examples in the styleguide. The initializer generates 4 files:\n\n  * `markup_example_template.html.erb` - used for html, haml and slim examples\n\n  * `markup_table_template.html.erb` - used for multiple html, haml and slim\n  examples layed out in a table (see\n  [the tabular layout docs](#tabular-layout-for-component-documentation)\n  for more information)\n\n  * `js_example_template.html.erb` - used for js examples\n\n  * `jsx_example_template.html.erb` - used for jsx examples\n\n  The html in the files will be rendered for every code example in the\n  styleguide. The variable `rendered_example` represents the html\n  generated by the example, while the variable `code_example` represents the\n  formatted and escaped code behind the example.\n\n  See [the documentation on custom code renderers](#custom_code_example_renderers)\n  for more information,\n\n  **Nota Bene:** If template files are missing, or this folder does not exist,\n  hologram will use default templates.\n\n* **code\\_example\\_renderers**: (optional) A folder that contains your custom\n  code renderers. For example, if you want to have `coffee_example`s in your\n  code, write a coffeescript renderer and place it in this folder. See\n  [#custom_code_example_renders](below) for more inforamtion on this.\n\n* **custom_markdown**: (optional) this is the filename of a class that\n  extends RedCarpet::Render::HTML class. Use this for when you need\n  additional classes or html tags for different parts of the page.  See\n  [example_markdown_renderer.rb.example]\n  (example_markdown_renderer.rb.example) for an example of what your\n  class can look like.\n\n* **index**: (optional) this is a category (see **Documenting your\n  styles** section below) that will be used as the index.html.\n\n* **dependencies**: a **list** of relative paths to folders containing\n  any dependencies your style guide has. These folders will be copied\n  over into the documentation output directory. ENSURE THE CSS/JS THAT IS\n  ACTUALLY BEING DOCUMENTED IS LISTED HERE. You will also need to ensure\n   that they are included on your pages. A simple way to do this is to add\n   `\u003clink\u003e` and `\u003cscript src=\u003e` tags to the `_header.html` file.\n\n* **ignore_paths**: (optional) a **list** of paths to ignore. This can be a file\n  name or a glob. Be sure to wrap globs in double quotes to keep yaml\n  from getting too upset (ie good:\"*.erb\" vs bad:*.erb).\n\n* **nav_level**: (optional) Sets the level of section navigation desired.\n  `section` sets it to show sub navigation in top level sections.\n  `all` sets it to show sub navigation for all sections. `all` can be a bit\n  much, you'll probably want `section`.\n\n* **custom_extensions**: (optional) Additional file extensions that will be\n  included in the parse. Accepts both a single value and an array. The\n  current supported file extensions are `.css`, `.scss`, `.less`, `.sass`,\n  `.styl`, `.js`, `.md`, `.markdown` and `.erb`.\n\n* **exit_on_warnings**: (optional) Hologram displays warnings when there\n  are issues with your docs (e.g. if a component's parent is not found,\n  if the _header.html and/or _footer.html files aren't found)\n  If you want Hologram to exit on these warnings, set the value to 'true'\n  (Default value is 'false')\n\n##### Example config file\n\n    # Hologram will run from same directory where this config file resides\n    # All paths should be relative to there\n\n    # The directory containing the source files to parse recursively\n    source: ./sass\n\n    # You may alternately specify multiple directories.\n    # source:\n    #  - ./sass\n    #  - ./library-sass\n\n    # The directory that hologram will build to\n    destination: ./docs\n\n    # The assets needed to build the docs (includes header.html,\n    # footer.html, etc)\n    # You may put doc related assets here too: images, css, etc.\n    documentation_assets: ./doc_assets\n\n    # The folder that contains templates for rendering code examples.\n    # If you want to change the way code examples appear in the styleguide,\n    # modify the files in this folder\n    code_example_templates: ./code_example_templates\n\n    # The folder that contains custom code example renderers.\n    # If you want to create additional renderers that are not provided\n    # by Hologram (i.e. coffeescript renderer, jade renderer, etc)\n    # place them in this folder\n    code_example_renderers: ./code_example_renderers\n\n    # Any other asset folders that need to be copied to the destination\n    # folder. Typically this will include the css that you are trying to\n    # document. May also include additional folders as needed.\n    dependencies:\n      - ./build\n\n    # Mark which category should be the index page\n    # Alternatively, you may have an index.md in the source directory root\n    # folder instead of specifying this config.\n    index: basics\n\n    # To output navigation for top level sections, set the value to\n    # 'section'. To output navigation for sub-sections, set the value to `all`\n    nav_level: all\n\n    # Hologram displays warnings when there are issues with your docs\n    # (e.g. if a component's parent is not found, if the _header.html and/or\n    #  _footer.html files aren't found)\n    # If you want Hologram to exit on these warnings, set the value to 'true'\n    # (Default value is 'false')\n    exit_on_warnings: false\n\n### Documenting your styles and components\n\nHologram will scan for stylesheets (.css, .scss, .sass, .less, or .styl)\nand javascript source files (.js) within the **source** directory defined\nin your configuration.  It will look for comments that match the following:\n\n    /*doc\n    ---\n    title: Buttons\n    name: button\n    category: Base CSS\n    ---\n\n    Button styles can be applied to any element. Typically you'll want\n    to use either a `\u003cbutton\u003e` or an `\u003ca\u003e` element:\n\n    ```html_example \u003cbutton class=\"btn btnDefault\"\u003eClick\u003c/button\u003e \u003ca\n    class=\"btn btnDefault\" href=\"trulia.com\"\u003eTrulia!\u003c/a\u003e ```\n\n    If your button is actually a link to another page, please use the\n    `\u003ca\u003e` element, while if your button performs an action, such as\n    submitting a form or triggering some javascript event, then use a\n    `\u003cbutton\u003e` element.\n\n    */\n\n**NB:** Sass users who are using the `.sass` flavor of Sass should use `//doc` style comments with indents to create their comment blocks.\n\nThe first section of the comment is a YAML block that defines certain\naspects of this documentation block (more on that in the next\nsection). The second part is simply markdown as defined by Redcarpet.\n\nNotice the use of `html_example`. This tells the markdown renderer that\nit should treat the example as...well...html. If your project uses\n[haml](http://haml.info/) you can also use `haml_example`. In that case\nthe output will be html for the example and the code block will show the\nhaml used to generate the html.\n\nFor components that require [javascript](https://www.destroyallsoftware.com/talks/wat)\nyou can use `js_example`. In addition to outputting the javascript in a\n`\u003ccode\u003e` block it will also wrap it in a `\u003cscript\u003e` tag for execution.\n\nAdditionally, html elements that are generated via markdown will have a\nclass `styleguide` appended to them. You can use this to apply css to\nthe styleguide itself.\n\n#### Tabular layout for component documentation\n\nIf you want the code snippet next to the rendered component, instead of below,\nrender your component horizontally by applying the `html_example_table` or\n`haml_example_table` modifiers to the code block.\n\n    /*doc\n    ---\n    title: Buttons\n    name: button\n    category: Base CSS\n    ---\n\n    ```html_example_table\n    \u003cbutton class=\"btn btnDefault\"\u003eClick\u003c/button\u003e\n\n    \u003ca class=\"btn btnDefault\" href=\"trulia.com\"\u003eTrulia!\u003c/a\u003e\n    ```\n\n    */\n\n**NB:** Components separated by a blank line will be rendered as separate table rows.\n\n#### Referencing other components\n\nFor some components, you may want to reference the documentation of another component.\nAs an example, you may want your link components to link to the button documentation.\n\n    /*doc\n    ---\n    title: Links\n    name: links\n    category: Other Category\n    ---\n\n  ...\n\n    You may want to use a button for a link.\n    See [the button documentation][button] for more info.\n\n    */\n\nYou can use a reference link of the form `[link description][component_name]`\nto link to any other component in the styleguide.\nThese links will even work if the referenced component belongs to a different category.\n\n#### Document YAML section\n\nThe YAML in the documentation block can have any\nkey/value pairs you deem important, but it specifically looks for the\nfollowing keys:\n\n* **title**: The title to display in the documents\n* **category/categories**: This is the broad categories for the component, all\n  components in the same category will be written to the same page. It can be set to either a string or a YAML array. If you use an array, the component will be written to both pages.\n  Note: There is no need to set a category if this component has a **parent**.\n* **name**: This is used for grouping components, by assigning a name, a\n  component can be referenced in another component as a parent. Note that items in\n  the same category are sorted alphabetically by name.\n* **parent**: (Optional.) This should be the **name** of another\n  component. If this is set, the current component will be displayed as\n  a section within the **parent**'s documentation, but only if it specifies\n  the same **category**, or allows the **category** to be inherited from its **parent**.\n* **hologram**: (markdown only) To avoid conflicts with Jekyll and\n  other YAML+markdown formats, Markdown (`.md`) files must include a\n  `hologram: true` key/value pair in the YAML block to indicate that\n  it is intended to be processed by Hologram.\n\nFor example, you might have a component with the **name** *buttons* and\nanother component named *buttonSkins*. You could set the **parent** for\nthe *buttonSkins* component to be *buttons*. It would then nest the\n*buttonSkins* documentation inside the *buttons* documentation.\n\nEach level of nesting (components are infinitely nestable) will have a\nheading tag that represents its depth. In the above example *buttons*\nwould have an `\u003ch1\u003e` and *buttonSkins* would have an `\u003ch2\u003e`.\n\nYou can see [this exact example in our demo\nrepo](https://github.com/trulia/hologram-example/tree/master/components/button),\nand the output of this nesting [in our demo\nstyle guide](http://trulia.github.io/hologram-example/base_css.html#Buttons).\n\n\n### Documentation Assets\n\nThe documentation assets folder contains the html, css, js and images\nyou'll need for making your style guide look beautiful.\n\nHologram doesn't care too much about what is in here as it is\nintended to be custom for your style guide.\n\n\n##### Styling Your Code Examples\n\nHologram uses [pygments.rb](https://github.com/tmm1/pygments.rb) gem to\nprovide syntax highlighting for code examples. One of the assets that\nyou probably want to include in your documentation assets folder is a\ncss file that styles the \"pygmentized\" code examples. We use\n`github.css` which can be found along with the css we use to style code\nblocks\n[here](https://github.com/trulia/hologram-example/tree/gh-pages/static/css).\n\n### Custom Code Example Renderers\n\nBy default, hologram supports the following code example types:\n\n- `html_example` and `html_example_table`\n- `haml_example` and `haml_example_table`\n- `slim_example` and `slim_example_table`\n- `js_example`\n- `jsx_example`\n\nLet's say you want to include coffeescript examples in your styleguide.\nYou'll need to create a custom renderer for this.\n\nFirst, if none of the included templates (`markup_example_template`, `js_example_template`, etc)\nwork for you, create new custom template files. In this example,\nlet's say you have\nthe templates `my_custom_coffee_example_template.html.erb` and\n`my_custom_coffee_table_template.html.erb` in your `./code_example_templates` folder.\n\n```erb\n\u003c!-- ./code_example_templates/my_custom_coffee_example_template.html.erb --\u003e\n\n\u003cscript\u003e\u003c%= rendered_example %\u003e\u003c/script\u003e\n\u003cdiv class=\"codeBlock coffeeExample\"\u003e\n  \u003cdiv class=\"highlight\"\u003e\n    \u003cpre\u003e\u003c%= code_example %\u003e\u003c/pre\u003e\n  \u003c/div\u003e\n\u003c/div\u003e\n```\n\n```erb\n\u003c!-- ./code_example_templates/my_custom_coffee_table_template.html.erb --\u003e\n\n\u003cdiv class=\"codeTable\"\u003e\n  \u003ctable\u003e\n    \u003ctbody\u003e\n      \u003c% examples.each do |example| %\u003e\n        \u003ctr\u003e\n          \u003ctd\u003e\n            \u003cscript\u003e\u003c%= example.rendered_example %\u003e\u003c/script\u003e\n            \u003cdiv class=\"codeBlock coffeeExample\"\u003e\n              \u003cdiv class=\"highlight\"\u003e\n                \u003cpre\u003e\u003c%= example.code_example %\u003e\u003c/pre\u003e\n              \u003c/div\u003e\n            \u003c/div\u003e\n          \u003c/td\u003e\n        \u003c/tr\u003e\n      \u003c% end %\u003e\n    \u003c/tbody\u003e\n  \u003c/table\u003e\n\u003c/div\u003e\n```\n\nNext, create a custom renderer for coffeescript in the file\n`./code_example_renderers/coffee_renderer.rb`.\n\n```ruby\n# ./code_example_renderers/coffee_renderer.rb\n\nrequire 'coffee-script'\n\nHologram::CodeExampleRenderer::Factory.define('coffee') do\n  example_template 'my_custom_coffee_example_template'\n  table_template 'my_custom_coffee_table_template'\n\n  lexer { Rouge::Lexer.find(:coffee) }\n\n  rendered_example do |code|\n    CoffeeScript.compile(code)\n  end\nend\n```\n\nNow you should be able to render coffeescript examples in your styleguide.\nYou can render single coffeescript examples...\n\n  ```coffee_example\n  $('#myDiv').click -\u003e\n    alert 'Oh wow we are rendering coffee script'\n  ```\n\nOr you can render coffeescript tables...\n\n  ```coffee_example_table\n  $('#myDiv').click -\u003e\n    alert 'Oh wow we are rendering coffee script'\n\n  $('#myOtherDiv').click -\u003e\n    console.log 'Yeah coffee script!'\n\n  $('#yetAnotherDiv').click -\u003e\n    window.location =\n  ```\n\nHere's some details on the code example renderer factory:\n\n* `Hologram::CodeExampleRenderer::Factory.define(example_type, \u0026block)` -\n  this is how you declare a custom renderer. `example_type` is the name of the\n  renderer, and determines the example name. For example, if `example_type`\n  was \"foobar\", in your styleguide you can create `foobar_example`s and\n  `foobar_example_table`s\n\n* `example_template` - the name of the template used to render the example,\n  minus the `.html.erb` extension (e.g. \"markup_example_template\"). It\n  should live in your **code\\_example\\_templates** folder\n\n* `table_template` - (optional) the name of the template used to render examples in\n  tabular form, minus the extension (e.g. \"markup_table_template\").\n\n* `lexer` - (optional) a Rogue Lexer that matches the syntax of your\n  example (i.e. `Rouge::Lexer.find(:haml)`, `Rouge::Lexer.find(:ruby)`).\n  Here's a [complete list of possible lexers](http://rouge.jayferd.us/demo).\n  If this argument is not provided, hologram will guess what the best\n  one is.\n\n* `rendered_example` - (optional) this is the set of instructions to\n  \"translate\" your exaple so it can be rendered. I.e. for coffeescript\n  to be \"rendered\" in the browser, you need to transform it to\n  javascript (as can be seen in the block above).\n  For haml, you need to transform it to html.\n  If no block is provided, the code is rendered as is.\n\n## Supported Preprocessors/File Types\n\nThe following preprocessors/file types are supported by Hologram:\n\n- Sass (.scss, .sass)\n- Less (.less)\n- Stylus (.styl)\n- Vanilla CSS (.css)\n- Javascript (.js)\n- Markdown (.md, .markdown)\n\n\n## Extensions and Plugins\n\n- [Guard Hologram](https://github.com/kmayer/guard-hologram) is a sweet\n  little gem that uses guard to monitor changes to your hologram project\n  and rebuilds your style guide on the fly as you make changes.\n- [Grunt Hologram](https://github.com/jchild3rs/grunt-hologram/) is a sweet\n  little grunt task that will generate your hologram style guide.\n- [Hologram Plugin for Gulp](https://gist.github.com/jchild3rs/470be49a4bc4caf3ca8a) is a gulp task for hologram.\n- [Classname Clicker](https://github.com/bigethan/hologram-addons/) is a handy\n  UI addition that gives the ability to see rules that apply to a classname by\n  clicking on them within hologram.\n- [Cortana](https://github.com/Yago/Cortana) is a theme for hologram. It also\n  includes a handy search feature.\n- [Hologram Github Theme](https://github.com/wearecube/hologram-github-theme) is a Github Styleguide inspired theme for hologram.\n- [Voxel Hologram](https://github.com/rishabhsrao/voxel-hologram) is a minimal theme for Hologram.\n- [Acme Styleguide](https://github.com/mattrothenberg/styleguide-boilerplate) is a starter project that helps\n  [Pivotal Labs Designers](https://pivotal.io/labs) build living styleguides with Sass and Hologram.\n\n## Contributing\n\n1. Fork it\n2. Create your feature/bug fix branch (`git checkout -b my-new-feature`)\n3. Commit your changes (`git commit -am 'Add some feature'`)\n4. Push to the branch (`git push origin my-new-feature`)\n5. Create new Pull Request\n\n\n## Authors\n\nHologram is written and maintained by [August\nFlanagan](http://github.com/aflanagan) and [JD\nCantrell](http://github.com/jdcantrell).\n\n\n## Contributors\n\nThese fine people have also contributed to making hologram a better gem:\n\n* [Rajan Agaskar](https://github.com/ragaskar)\n* Louis Bennett\n* [jho406](https://github.com/jho406)\n* johny (wrote our initial tests!)\n* [Elana Koren](https://github.com/elanakoren)\n* [Ken Mayer](https://github.com/kmayer)\n* [Roberto Ostinelli](https://github.com/ostinelli)\n* [Dominick Reinhold](https://github.com/d-reinhold)\n* [Nicole Sullivan](https://github.com/stubbornella)\n* [Mike Wilkes](https://github.com/mikezx6r)\n* [Vanessa Sant'Anna](https://github.com/vsanta)\n* [Geoffrey Giesemann](https://github.com/geoffwa)\n\n\n## License\n\n[Hologram is licensed under the MIT License](https://github.com/trulia/hologram/blob/master/LICENSE.txt)\n","funding_links":[],"categories":["Ruby","Style Guide Generators :slot_machine:","Documentation"],"sub_categories":["Editor's Draft :black_nib:"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrulia%2Fhologram","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftrulia%2Fhologram","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrulia%2Fhologram/lists"}