{"id":19673105,"url":"https://github.com/andrew-bedford/re-blog","last_synced_at":"2026-05-15T14:33:52.668Z","repository":{"id":220907415,"uuid":"738221414","full_name":"andrew-bedford/re-blog","owner":"andrew-bedford","description":"Simple webassembly-based blog","archived":false,"fork":false,"pushed_at":"2025-05-21T20:41:01.000Z","size":2012,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-21T21:36:15.722Z","etag":null,"topics":["blazor","blog","csharp","webassembly"],"latest_commit_sha":null,"homepage":"http://blog.andrew-bedford.ca","language":"HTML","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/andrew-bedford.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}},"created_at":"2024-01-02T18:03:58.000Z","updated_at":"2025-04-02T19:54:09.000Z","dependencies_parsed_at":"2024-02-05T05:25:08.869Z","dependency_job_id":"0e85946c-96df-480b-a11d-021b00c9b3c4","html_url":"https://github.com/andrew-bedford/re-blog","commit_stats":null,"previous_names":["andrew-bedford/re-blog"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/andrew-bedford/re-blog","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrew-bedford%2Fre-blog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrew-bedford%2Fre-blog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrew-bedford%2Fre-blog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrew-bedford%2Fre-blog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andrew-bedford","download_url":"https://codeload.github.com/andrew-bedford/re-blog/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrew-bedford%2Fre-blog/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33069973,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-15T11:35:32.926Z","status":"ssl_error","status_checked_at":"2026-05-15T11:35:31.362Z","response_time":103,"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":["blazor","blog","csharp","webassembly"],"created_at":"2024-11-11T17:14:04.516Z","updated_at":"2026-05-15T14:33:52.662Z","avatar_url":"https://github.com/andrew-bedford.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# re/blog\nA simple client-side markdown blog engine, built for fun!\n\nChoosing WebAssembly for a blog may appear strange, after all most search engines would have difficulty indexing its content, but this is actually a feature of re/blog. It is perfect for those who want to maintain a public blog, perhaps for their friends and family, while still retaining some privacy by making it less discoverable. It also has the advantage of being deployable to static file hosts like GitHub Pages.\n\nIf you are interested in making it more search engine-friendly, one option would be to convert your re/blog into a hosted application and enabling server-side prerendering. Or adding a post-build task that generates a `sitemap.xml` file.\n\n## Features\nClean default interface with a content navigation pane, which allows users to skip to specific sections.\n![](wwwroot/images/interface.png)\n\nNavigate posts using a timeline, previous/next buttons, or left/right keyboard arrows.\n![](wwwroot/images/timeline.png)\n\n## Usage\nAdd markdown files to the `wwwroot/posts` folder and update `index.json`. Posts are expected to have the following YAML header:\n```\n---\nid: lorem-ipsum\ntitle: Lorem Ipsum\nabstract: Optional abstract\ncreated: 2024-01-01\ntags: tag1, tag2\n---\n```\nWhere `id` corresponds to the url slug to be used, so it should not contain any spaces.\n\nAfter customizing `Pages/Index.razor` (e.g., specifying avatar), the blog can be published using:\n```\ndotnet publish\n```\nFor development:\n```\ndotnet watch run\n```\n\n### Example\nAn example of a more complete re/blog can be found in the [andrew-bedford.ca](https://github.com/andrew-bedford/re-blog/tree/andrew-bedford.ca) branch ([personal re/blog](https://blog.andrew-bedford.ca/)). It has some features that are not yet in the `main` branch, like support for comments/reactions through Giscus and sitemap generation.\n\n## Hosting\nSince this is a WebAssembly application that runs entirely on the client-side, it can be hosted pretty much anywhere. Note however that for direct links to work, the server's 404 page must point to the blog's `index.html`. This is due to the way that Blazor WebAssembly does routing (see [Host and deploy ASP.NET Core Blazor WebAssembly](https://learn.microsoft.com/en-us/aspnet/core/blazor/host-and-deploy/webassembly?view=aspnetcore-8.0#rewrite-urls-for-correct-routing) for explanation).\n\nHere is how this can be done using nginx and apache httpd.\n\n### nginx\n```\nserver {\n    listen 80;\n\n    server_name blog.url.com;\n\n    root /path/to/blog/wwwroot;\n    index index.html;\n    error_page 404 /index.html;\n\n    location / {\n        try_files $uri $uri/ =404;\n    }\n}\n```\n\n### httpd\nUsing a `.htaccess` page:\n```\nErrorDocument 404 /index.html\n```\n\n## Tasks\n - [-] Add support for comments (see branch [andrew-bedford.ca](https://github.com/andrew-bedford/re-blog/tree/andrew-bedford.ca) for giscus integration). Still needs to be integrated into the main branch, ideally through some kind of plugin system.\n - [ ] Add build tasks that would make it easier to publish/deploy the blog.\n - [ ] Create global configuration file to allows users to do things such as set the avatar image, blog name.\n - [ ] Add a plugin system that would allow users to easily customize it.\n - [ ] (?) Add metainformation panel.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrew-bedford%2Fre-blog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandrew-bedford%2Fre-blog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrew-bedford%2Fre-blog/lists"}