{"id":16096330,"url":"https://github.com/sio/microblog-server","last_synced_at":"2025-09-17T11:00:26.932Z","repository":{"id":46731078,"uuid":"510449699","full_name":"sio/microblog-server","owner":"sio","description":"Backend server for my microblog","archived":false,"fork":false,"pushed_at":"2023-08-21T09:19:42.000Z","size":56,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-11T04:43:20.854Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","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/sio.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}},"created_at":"2022-07-04T17:34:56.000Z","updated_at":"2022-07-07T08:45:45.000Z","dependencies_parsed_at":"2024-12-19T03:26:16.800Z","dependency_job_id":"f895f7fc-1fd5-4972-b13e-35da6d4340ff","html_url":"https://github.com/sio/microblog-server","commit_stats":{"total_commits":69,"total_committers":1,"mean_commits":69.0,"dds":0.0,"last_synced_commit":"51c850ff41b4e85123d3adc24985eeb95286a0a3"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/sio/microblog-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sio%2Fmicroblog-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sio%2Fmicroblog-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sio%2Fmicroblog-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sio%2Fmicroblog-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sio","download_url":"https://codeload.github.com/sio/microblog-server/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sio%2Fmicroblog-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275583378,"owners_count":25490651,"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","status":"online","status_checked_at":"2025-09-17T02:00:09.119Z","response_time":84,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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-09T17:13:26.216Z","updated_at":"2025-09-17T11:00:26.897Z","avatar_url":"https://github.com/sio.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Microblog server\n\nPython backend for a low-volume personal microblog.\n\nInput server (Telegram bot) waits for user to post new microblog entries and\nsaves them to storage (git repo). Entries can be fetched from storage via\nprovided Python library. There is also a plugin for Pelican to render\nmicroblog entries on a static web site.\n\nInput server and storage engine should be easy to replace or add new\nimplementations in future.\n\n\n## Installation\n\n- Python package is published at PyPI: \u003chttps://pypi.org/project/microblog-server/\u003e\n    - Install with `pip install microblog-server`\n    - Make sure that `git` is available in $PATH\n\n- Ready to go [Docker image] is also available\n\n[Docker image]: container/README.md\n\n\n## Usage\n\n#### Running input server\n\n- Commandline entrypoint: `microblog`\n- Configuration is done via environment variables:\n    - `MICROBLOG_STORAGE`: Path to a local checkout of git repository that\n      stores the microblog\n    - `MICROBLOG_TOKEN`: Telegram bot token\n    - `MICROBLOG_USERS`: Comma-separated list of Telegram accounts allowed to\n      interact with the bot\n\n#### Using Python library to read microblog from storage\n\nSee the [source code](src/microblog/storage.py)\n\n#### Rendering static web site\n\nSee [Pelican docs] for general information on using static site generator.\n\nPlugin configuration:\n\n```python3\n# pelicanconf.py\nimport microblog.pelican\nimport microblog.storage\nPLUGINS = [\n    microblog.pelican,\n]\nMICROBLOG = microblog.storage.GitStorage('./path/to/local/copy/of/git/repo/')\n```\n\nYour theme is expected to provide the following templates:\n\n- `micros` for paginated microblog index\n  ([example](https://github.com/sio/potyarkin.com/blob/5afe24bd07f3f065b3ab8f7026960757748d0bfc/content/templates/micros.html))\n- `micro` for individual microblog entries\n  ([example](https://github.com/sio/potyarkin.com/blob/5afe24bd07f3f065b3ab8f7026960757748d0bfc/content/templates/micro.html))\n\nCheck [plugin source] for further information.\nSee author's site [configuration] for further examples.\n\n[Pelican docs]: https://docs.getpelican.com/en/latest/\n[plugin source]: src/microblog/pelican.py\n[configuration]: https://github.com/sio/potyarkin.com/blob/5afe24bd07f3f065b3ab8f7026960757748d0bfc/pelicanconf.py#L146-L148\n\n\n## License and copyright\n\nCopyright 2022 Vitaly Potyarkin\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n\n        http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsio%2Fmicroblog-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsio%2Fmicroblog-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsio%2Fmicroblog-server/lists"}