{"id":22800158,"url":"https://github.com/nrako/fresh_blog_plugin","last_synced_at":"2026-01-23T12:19:49.862Z","repository":{"id":222034868,"uuid":"741599954","full_name":"nrako/fresh_blog_plugin","owner":"nrako","description":"A 🍋 Fresh plugin designed to add blog functionalities with simple markdown files powered by MyST.","archived":false,"fork":false,"pushed_at":"2024-10-09T21:40:53.000Z","size":349,"stargazers_count":0,"open_issues_count":4,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-30T19:42:48.192Z","etag":null,"topics":["blog","blogging","deno","fresh","markdown","myst"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nrako.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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":"2024-01-10T18:19:28.000Z","updated_at":"2024-10-09T21:40:57.000Z","dependencies_parsed_at":"2024-07-21T17:17:33.783Z","dependency_job_id":"3f233917-5316-471f-b183-9b1c2879c50b","html_url":"https://github.com/nrako/fresh_blog_plugin","commit_stats":null,"previous_names":["nrako/fresh_blog_plugin"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nrako/fresh_blog_plugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nrako%2Ffresh_blog_plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nrako%2Ffresh_blog_plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nrako%2Ffresh_blog_plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nrako%2Ffresh_blog_plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nrako","download_url":"https://codeload.github.com/nrako/fresh_blog_plugin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nrako%2Ffresh_blog_plugin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28691031,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-23T11:01:27.039Z","status":"ssl_error","status_checked_at":"2026-01-23T11:00:26.909Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["blog","blogging","deno","fresh","markdown","myst"],"created_at":"2024-12-12T07:11:30.656Z","updated_at":"2026-01-23T12:19:49.844Z","avatar_url":"https://github.com/nrako.png","language":"TypeScript","funding_links":[],"categories":["Tools"],"sub_categories":["Documentation System Integrations"],"readme":"🚧 Work in Progress! This is still an early-stage project. Engage with it or\ncontribute at your own risk.\n\n# Fresh Blog Plugin\n\n**A [🍋 Fresh](https://fresh.deno.dev) plugin designed to add blog\nfunctionalities with markdown files powered by [MyST](https://mystmd.org)**.\n\n## Core Features\n\n- **Robust [MyST Markdown Syntax](https://mystmd.org)**: Expands authoring\n  capabilities with a syntax that caters to technical and scientific authoring\n  as well as any other blogging needs. Fully compatible with\n  [CommonMark](https://mystmd.org/guide/commonmark), the most known and used\n  Markdown specification.\n\n- **Code \u0026 Math**: Integrates [Shiki](https://shiki.style) for code highlighting\n  and [Katex](https://www.npmjs.com/package/rehype-katex) for Tex Math,\n  delivering out-of-the-box functionality for technical content.\n\n- **Feed Syndication**: Automatically generates feeds for JSON, Atom, and RSS,\n  making content easily accessible and ensuring wide reach.\n\n- **Modular Components**: Offers minimal, reusable components for custom route\n  and layout design, providing unmatched flexibility in blog presentation.\n\n## How It Works\n\nThis plugin exposes multiple configurable routes:\n\n- Blog Index Route (default `/blog`): listing all posts sorted by their `date`\n- Blog Post Route (default `/blog/:slug`): showing the detail of a post\n  identified by the `:slug` which is inferred from the markdown file name\n- Atom 1.0 Feed Route (default `/blog/atom`)\n- JSON Feed 1.0 Feed Route (default `/blog/json`)\n- RSS 2.0 Feed Route (default `/blog/rss`)\n- Provide an optional and minimal CSS (default `/freshblog.css`)\n\nThis plugin is meant to integrate into any existing Fresh website, it doesn't\nmake any assumption about your styles, layouts (i.e `_layout.tsx`) or your App\nWrapper (i.e `routes/_app.tsx`).\n\nFor customization of the default routes path and other options, please refer to\nthe\n\"[Options](https://github.com/nrako/fresh_blog_plugin?tab=readme-ov-file#options)\"\nsection below or browse the\n[`./example/`](https://github.com/nrako/fresh_blog_plugin/tree/main/example)\ndirectory.\n\n## Getting Started\n\n### Quick Setup\n\nIncorporate the plugin with a simple update to `fresh.config.ts`. Starting a\nblog is a matter of adding a few lines of code to an existing Fresh project.\n\n```typescript\nimport { defineConfig } from '$fresh/server.ts'\nimport blogPlugin from 'https://deno.land/x/fresh_blog_plugin/mod.ts'\n\nexport default defineConfig({\n  plugins: [blogPlugin()],\n})\n```\n\n✨ That's it, by default your blog is now accessible on the `/blog` path and\nmarkdown files can be added to the `./posts/` directory.\n\n### Include Client-Side Javascript (Recommended)\n\nA minimal Javascript used for progressive enhancement providing polyfill for\nfuture HTML/CSS features not yet available on all modern browsers.\n\n```html\n\u003c!-- Add to your App Wrapper `routes/_app.tsx` --\u003e\n\u003cscript src=\"/freshblog.js\" type=\"module\" defer /\u003e\n```\n\nThe `/freshblog.js` file is served during development and automatically exported\nto your static files at build time. You can inspect its content in\n[`./src/client.js`](https://github.com/nrako/fresh_blog_plugin/blob/main/src/client.js).\n\n### Include Default Styles (Optional)\n\nMinimal CSS is included with this plugin which you're free to adopt or use as\nthe basis for your own CSS.\n\nThis include styles for various components and the code syntax highlighting.\n\n```html\n\u003c!-- Add to your App Wrapper `routes/_app.tsx` --\u003e\n\u003clink rel=\"stylesheet\" href=\"/freshblog.css\" /\u003e\n```\n\nThe `/freshblog.css` file is served during development and automatically\nexported to your static files at build time. You can inspect its content in\n[`./src/styles.css`](https://github.com/nrako/fresh_blog_plugin/blob/main/src/styles.css).\n\n### TailwindCSS: Configuration \u0026 Gotchas (Optional)\n\n[TailwinCSS)(https://fresh.deno.dev/docs/examples/migrating-to-tailwind) and in\nparticular its\n[`@tailwindcss/typography`](https://tailwindcss.com/docs/typography-plugin)\nplugin offer a straighforward path to visually style the content of your posts.\n\nThe [`./example/`](https://github.com/nrako/fresh_blog_plugin/tree/main/example)\nfolder demonstrate the usage of TailwindCSS and the `.prose` CSS utilities\nclasses; size variants, color scale or modifiers.\n\n#### Example of a `tailwind.config.ts`:\n\n```typescript\nimport { type Config } from 'tailwindcss'\nimport typographyPlugin from 'npm:@tailwindcss/typography'\n\nexport default {\n  plugins: [typographyPlugin],\n  content: [\n    '{routes,islands,components}/**/*.{ts,tsx}',\n    'posts/*.md', // this must match `options.contentDir`\n  ],\n} satisfies Config\n```\n\n**Gotcha**: It's advisable to align the last rule with your\n*`options.contentDir`(s) to ensure any TailwindCSS utilities used within your\nmarkdown files don't get pruned.\n\n## Options\n\nhttps://github.com/nrako/fresh_blog_plugin/blob/8c065f16088328e9e3f43300d2bafea9c9df84cb/mod.ts#L7-L67\n\n## API\n\nThe API documentation is available on https://nrako.github.io/fresh_blog_plugin/\n\n## Example\n\nExplore the\n[`./example/`](https://github.com/nrako/fresh_blog_plugin/tree/main/example)\ndirectory to understand how `blogPlugin()` can be implemented. The example\ndemonstrates that a Fresh website can host multiple blogs.\n\nYou can also run the example with `deno task example`.\n\n## Provisional License Statement\n\n### Current License\n\nThis project is licensed under the\n[GNU Lesser General Public License (LGPLv3)](LICENSE.md), selected for its\nframework that encourages open contributions to the project while facilitating\nthe use of this library/project in both open source and proprietary software.\nThis licensing approach aims to foster a collaborative development environment\nand maximize the library's/project's applicability and impact across diverse\nsoftware ecosystems.\n\n### Future Licensing\n\nUpon reaching maturity and stability milestones, consideration will be given to\nadopting a more permissive license, such as the\n[ISC License](https://en.wikipedia.org/wiki/ISC_license). Such change would aim\nto eliminate obligations and extend permissions, fully unleashing the project's\npotential. Meanwhile, contributors are encouraged to work within the current\nLGPLv3 licensing framework, ensuring that enhancements and modifications\ncontinue to serve the greater good.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnrako%2Ffresh_blog_plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnrako%2Ffresh_blog_plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnrako%2Ffresh_blog_plugin/lists"}