{"id":17700625,"url":"https://github.com/cdown/osmo","last_synced_at":"2026-03-05T20:45:40.292Z","repository":{"id":8405880,"uuid":"9988794","full_name":"cdown/osmo","owner":"cdown","description":"Digital signage for minimalists.","archived":false,"fork":false,"pushed_at":"2017-06-01T02:53:55.000Z","size":231,"stargazers_count":8,"open_issues_count":7,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-01T07:01:50.434Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/cdown.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}},"created_at":"2013-05-10T19:28:37.000Z","updated_at":"2022-08-08T21:49:42.000Z","dependencies_parsed_at":"2022-08-08T22:31:35.754Z","dependency_job_id":null,"html_url":"https://github.com/cdown/osmo","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/cdown/osmo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdown%2Fosmo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdown%2Fosmo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdown%2Fosmo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdown%2Fosmo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cdown","download_url":"https://codeload.github.com/cdown/osmo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdown%2Fosmo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30149845,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T16:58:46.102Z","status":"ssl_error","status_checked_at":"2026-03-05T16:58:45.706Z","response_time":93,"last_error":"SSL_read: 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":[],"created_at":"2024-10-24T17:42:41.621Z","updated_at":"2026-03-05T20:45:40.249Z","avatar_url":"https://github.com/cdown.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build status][travis-image]][travis-builds]\n[![Coverage][coveralls-image]][coveralls]\n[![Code quality][scrutinizer-image]][scrutinizer]\n[![Dependencies][requires-image]][requires]\n\n[travis-builds]: https://travis-ci.org/cdown/osmo\n[travis-image]: https://img.shields.io/travis/cdown/osmo/master.svg\n[coveralls]: https://coveralls.io/r/cdown/osmo\n[coveralls-image]: https://img.shields.io/coveralls/cdown/osmo/master.svg\n[scrutinizer]: https://scrutinizer-ci.com/g/cdown/osmo/code-structure/master/hot-spots\n[scrutinizer-image]: https://img.shields.io/scrutinizer/g/cdown/osmo.svg\n[requires]: https://requires.io/github/cdown/osmo/requirements/?branch=master\n[requires-image]: https://img.shields.io/requires/github/cdown/osmo.svg\n\nosmo is a digital signage framework for minimalists. It doesn't provide you\nwith anything fancy, just a web interface to upload images to display, and a\nclient to display them with.\n\nThe client can run anywhere there is a web browser that supports SSE -- it\ndoesn't require any installation.\n\n## Running\n\nFor now, take a look at [tests/run][], but in essence:\n\n- Run the publisher (publisher.py)\n- Run the admin interface (admin.py, optional, for adding slides)\n- Run the SSE application (client.py)\n- Point your browser at wherever you're serving the client.\n\nYou'll want to use gunicorn or another multithreaded server if you plan on\nhaving more than one client.\n\nNote that for PDF upload, you will need [ImageMagick][] installed.\n\n[tests/run]: https://github.com/cdown/osmo/blob/master/tests/run\n[ImageMagick]: http://www.imagemagick.org/\n\n## Redis\n\nSince all critical multi-stage operations are done in a pipeline, it's pretty\nhard to make the database become inconsistent, so you shouldn't worry too much\nabout that.\n\nThe only real thing to worry about is that Redis data is flushed to disk often\nenough to not worry about it. My recommendations would to use an AOF redo log,\nand persist to disk every few minutes (and configure it to snapshot every now\nand then in case someone clears the DB because they have a vendetta against\nyour slides).\n\n## Testing\n\nRedis must be installed.\n\n    $ pip install -r requirements.txt\n    $ pip install -r tests/requirements.txt\n    $ tests/run\n\n## License\n\nosmo is MIT licensed. See [the LICENSE file][] for full details.\n\n[the LICENSE file]: (https://github.com/cdown/osmo/blob/master/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdown%2Fosmo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcdown%2Fosmo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdown%2Fosmo/lists"}