{"id":15204313,"url":"https://github.com/wivik/am-writing-hugo-theme","last_synced_at":"2026-02-05T20:11:07.073Z","repository":{"id":210376496,"uuid":"726406835","full_name":"Wivik/am-writing-hugo-theme","owner":"Wivik","description":"A Hugo theme for a writer who wants to expose their books","archived":false,"fork":false,"pushed_at":"2024-09-11T17:04:02.000Z","size":4393,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-10T07:13:01.252Z","etag":null,"topics":["author","books","hugo-theme","library","writer"],"latest_commit_sha":null,"homepage":"https://wivik.github.io/am-writing-hugo-theme/","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/Wivik.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"ko_fi":"wivik","liberapay":"Wivik"}},"created_at":"2023-12-02T09:56:47.000Z","updated_at":"2024-03-16T11:08:47.000Z","dependencies_parsed_at":"2024-01-28T13:01:37.088Z","dependency_job_id":"7e03fa0f-2985-4c00-b186-eb9fbf260305","html_url":"https://github.com/Wivik/am-writing-hugo-theme","commit_stats":{"total_commits":66,"total_committers":1,"mean_commits":66.0,"dds":0.0,"last_synced_commit":"5f02c626f0d824b082d1bbf754787e1f3f5773d7"},"previous_names":["wivik/am-writing-hugo-theme"],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Wivik%2Fam-writing-hugo-theme","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Wivik%2Fam-writing-hugo-theme/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Wivik%2Fam-writing-hugo-theme/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Wivik%2Fam-writing-hugo-theme/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Wivik","download_url":"https://codeload.github.com/Wivik/am-writing-hugo-theme/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247257106,"owners_count":20909408,"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":["author","books","hugo-theme","library","writer"],"created_at":"2024-09-28T05:41:32.732Z","updated_at":"2026-02-05T20:11:07.042Z","avatar_url":"https://github.com/Wivik.png","language":"HTML","funding_links":["https://ko-fi.com/wivik","https://liberapay.com/Wivik"],"categories":[],"sub_categories":[],"readme":"# Am Writing - A Hugo Theme for a writer's website\n\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=Wivik_am-writing-hugo-theme\u0026metric=alert_status)](https://sonarcloud.io/summary/new_code?id=Wivik_am-writing-hugo-theme)\n\nAm Writing is a theme made for [Hugo](https://gohugo.io) for writers who desire to create an easy website.\n\n[![Screenshot](https://raw.githubusercontent.com/Wivik/am-writing-hugo-theme/main/images/tn.png)](https://raw.githubusercontent.com/Wivik/am-writing-hugo-theme/main/images/screenshot.png)\n\n## Features\n\nAm Writing supports :\n\n- Several different color themes\n- Multilingual (French and English by default)\n- Mastodon Feed integration\n- Link to your Patreon, Mastodon, Ko-fi profile\n- Various book metadata for a standard display page\n- Fully customizable\n- Display by book genre\n- Your personal author blog\n- RSS support\n\n![Screenshot2](https://raw.githubusercontent.com/Wivik/am-writing-hugo-theme/main/images/screenshot2.png)\n\n## Installation\n\nIn your hugo website root folder, add the theme :\n\n```\ngit clone https://github.com/Wivik/am-writing-hugo-theme themes/am-writing\n```\n\nOr as a sub-module :\n\n```\ngit submodule add https://github.com/Wivik/am-writing-hugo-theme themes/am-writing\n```\n\nThen, proceed to configuration.\n\n## Configuration\n\n### Enable the theme\n\nChange in `hugo.yaml` (or `toml`) the theme :\n\n```yaml\ntheme: am-writing\n```\n\nAdd the following taxonomies for the books list :\n\n```yaml\ntaxonomies:\n  genres: genres\n\n```\n\nAdd the default content language and indicate it's in a subdir.\n\n```yaml\ndefaultContentLanguage: fr\ndefaultContentLanguageInSubdir: true\n```\n\nThen, add the two langues settings :\n\nDo not change `mainSections: ['books']`\n\n```yaml\nlanguages:\n  fr:\n    contentDir: content/fr\n    disabled: false\n    languageCode: fr-FR\n    languageName: Français\n    title: Demo Author\n    params:\n      subtitle: Auteur d'un Site Demo\n      mainSections: ['books']\n    weight: 1\n    menu:\n      main:\n        - identifier: home\n          name: 'Accueil'\n          url: /fr/\n          weight: 10\n        - identifier: books\n          name: 'Livres'\n          url: /fr/books/\n          weight: 20\n        - identifier: tags\n          name: 'Genres'\n          url: /fr/genres/\n          weight: 30\n        - identifier: legal\n          name: 'Mentions légales'\n          url: /fr/legal/\n          weight: 40\n  en:\n    contentDir: content/en\n    languageCode: en-GB\n    languageName: English\n    title: Demo Author\n    disabled: false\n    params:\n      subtitle: Writer of a Demo Website\n      mainSections: ['books']\n    weight: 2\n    menu:\n      main:\n        - identifier: home\n          name: 'Home'\n          url: /en/\n          weight: 10\n        - identifier: books\n          name: 'Books'\n          url: /en/books/\n          weight: 20\n        - identifier: tags\n          name: 'Genres'\n          url: /en/genres/\n          weight: 30\n        - identifier: legal\n          name: 'Legal Notice'\n          url: /en/legal/\n          weight: 40\n\n```\n\nAdapt it with you choices.\n\n### Specific settings\n\nThe theme supports the following settings :\n\n| Setting | Required | Default value | Description |\n| ------- | -------- | ------------- | ----------- |\n| `params.amazonAuthorProfile` | No | `none` | URL to your Amazon Author profile |\n| `params.author` | No | `none` | Your author name, your should set it. |\n| `params.avatar` | No | `none` | A picture expected to be in the `/static` folder. |\n| `params.blog` | No | `false` | Enable or disable the blog feature.\u003cbr\u003eSupported parameters :\u003cbr\u003e - `true`\u003cbr\u003e- `false` (default)\u003cbr\u003eSee [Blog feature](#Blog) for how to use. |\n| `params.bookListType` | No | `grid` | Change the book list style, default is thumbnail `grid` with description. Other option is `list` for the previous display way.\u003cbr\u003ePossible values :\u003cbr\u003e- `grid` (default)\u003cbr\u003e- `list` |\n| `params.books2readProfile` | No | `none` | URL to your Books2Read profile |\n| `params.commission` | No | `false` | Display a button showing you're open for commissions. Possible values : `true` (commissions opened), `false` (commissions closed) |\n| `params.commissionLink` | No | `none` | The link to your commission platform. |\n| `params.contentLicense` | No | `none` | Display the license used for the website in the footer. Ex : CC BY-SA 4.0 |\n| `params.displaySubscribeButton` | No | `false` | Along with the usage of the `subscribe-example.md` page you would put in your `content` direct and rename, this option will enable a 'Subscribe' button redirecting to the subscribe page. See [Subscribe to the site's content](#subscribe-to-the-sites-content) for more details. |\n| `params.displaySubscribeRSS` | No | `true` | Display the RSS subscribe buttons on the About left section. The RSS link is for the books release. If the blog is enabled, another button will be display too. Same for the newsletter link. |\n| `params.goodreads` | No | `none` | Your GoodReads profile URL |\n| `params.googlePlayAuthorProfile` | No | `none` | URL to your Google Play Books profile |\n| `params.kofi` | No | `none` | Your Ko-fi profile URL |\n| `params.liberapay` | No | `none` | Your Liberapay support URL |\n| `params.mastodon` | No | `none` | The URL of your Mastodon profile. |\n| `params.mastodonMaxItems` | No | `5` | How much posts you want to display in your feed. |\n| `params.neovelAuthorProfile` | No | `none` | URL to your Neovel profile |\n| `params.newsletterIntegrationCode` | No | `none` | Using the multiline yaml syntax to paste here the integration code for your newsletter subscription. |\n| `params.newsletterSubscriptionLink` | No | `none` | The link to your Newsletter subscription page. **This setting has the precedence over the newsletter integration in the Susbcription page.** Meaning if you set both, the link to the newsletter subscription will be displayed but not the integrated form. |\n| `params.pageCountisEstimated` | No | `false` | If set to true, this will add a small pop-up on the number of Pages displayed on the book details indicating the page count is an estimation. This is recommended if you only publish epub files because unlike physical copies, they does not have actual defined pages layout. \u003cbr\u003eThe default estimation is said to be based on 280 words per pages (see my [epub metadata exporter tool](https://github.com/Wivik/epub-metadata-exporter) for more). You may adapt this message in the `i18n` translation. |\n| `params.patreon` | No | `none` | Your Patreon profile URL. You need a picture for the homepage, save it as `patreon.jpg` in the `static/` folder. |\n| `params.theme` | No | `nord` | Use one of the built-in themes :\u003cbr\u003e- `nord`\u003cbr\u003e- `catpuccin-latte`\u003cbr\u003e- `catpuccin-frappe` |\n| `params.themeFont` | No | `serif` | Use the Serif or Sans Serif font. Available options :\u003cbr\u003e- `serif`\u003cbr\u003e- `sans-serif` |\n| `params.xinxiiAuthorProfile` | No | `none` | URL to your Xinxii profile |\n\n### Themes showcase\n\nNord (defaut)\n\n[![Nord](https://raw.githubusercontent.com/Wivik/am-writing-hugo-theme/main/images/nord-tn.png)](https://raw.githubusercontent.com/Wivik/am-writing-hugo-theme/main/images/nord.png)\n\nCatpuccin Latte\n\n[![Catpuccin Latte](https://raw.githubusercontent.com/Wivik/am-writing-hugo-theme/main/images/catpuccin-latte-tn.png)](https://raw.githubusercontent.com/Wivik/am-writing-hugo-theme/main/images/catpuccin-latte.png)\n\nCatpuccin Frappe\n\n[![Catpuccin Frappe](https://raw.githubusercontent.com/Wivik/am-writing-hugo-theme/main/images/catpuccin-frappe-tn.png)](https://raw.githubusercontent.com/Wivik/am-writing-hugo-theme/main/images/catpuccin-frappe.png)\n\nDark\n\n[![Dark](https://raw.githubusercontent.com/Wivik/am-writing-hugo-theme/main/images/dark-tn.png)](https://raw.githubusercontent.com/Wivik/am-writing-hugo-theme/main/images/dark.png)\n\n### Book list layout\n\nThe theme supports two layouts for the book list : grid (default) and list.\n\nGrid layout :\n\n[![Grid](https://raw.githubusercontent.com/Wivik/am-writing-hugo-theme/main/images/grid-layout-tn.png)](https://raw.githubusercontent.com/Wivik/am-writing-hugo-theme/main/images/grid-layout.png)\n\nList layout (previous one) :\n\n[![List](https://raw.githubusercontent.com/Wivik/am-writing-hugo-theme/main/images/list-layout-tn.png)](https://raw.githubusercontent.com/Wivik/am-writing-hugo-theme/main/images/list-layout.png)\n\n### Override default profile\n\nThe short bio available on the left is configured in the translation files. To override it, create a translation file `\u003chugo site root dir\u003e/i18n` named according to the language (ex : English : `en.yaml`).\n\nInside, you can override the builtin translations :\n\n```yaml\ngenres:\n  short-story: \"Short Story\"\n  science-fiction: \"Science Fiction\"\n\nabout:\n  author: |\n    Insert here your author's bio\n\n  legal-notice: |\n    The stories and characters in \u003cYOUR NAME HERE\u003e's books are purely fictional. Any resemblance to existing or former persons is purely coincidental.\n\n```\n\n### Blog\n\nThis theme can also be your blog. It's a very simple feature so don't expect fancy use cases.\n\n[![blog](https://raw.githubusercontent.com/Wivik/am-writing-hugo-theme/main/images/blog-tn.png)](https://raw.githubusercontent.com/Wivik/am-writing-hugo-theme/main/images/blog.png)\n\nTo use the blog feature, follow these steps :\n\n1. Enable the feature in your hugo site config\n\n```yaml\nparams:\n  blog: true\n```\n\nI recommend to reduce the article summary. Add the following setting in hugo config too :\n\n`summaryLength: 20`\n\n2. Add the menu entry\n\n```yaml\n        - identifier: blog\n          name: 'Blog'\n          url: /blog/\n          weight: 30\n```\n\nOr if you use multilingual :\n\n```yaml\n        - identifier: blog\n          name: 'Blog'\n          url: /fr/blog/\n          weight: 30\n```\n\n```yaml\n        - identifier: blog\n          name: 'Blog'\n          url: /en/blog/\n          weight: 30\n```\n\nWarning : in case of multilingual support, the article will have to be in all languages folders if they're intended to be display for each of them. Refer to the [Multilingual mode](https://gohugo.io/content-management/multilingual/) Hugo documentation.\n\n3. Create your first blog entry.\n\n```bash\nhugo new --kind blog blog/my-first-post.md\n```\n\n### Subscribe to the site's content\n\nThis feature was made to generate a \"how to subscribe to this content\" page. Basically, it's an agregate of your various communication channels for your audience.\n\nTo enable this feature, first you need to set `params.displaySubscribeButton` to `true` in `hugo.yaml`. The following button will appear :\n\n[![subscribe](https://raw.githubusercontent.com/Wivik/am-writing-hugo-theme/main/images/subscribe-button.png)](https://raw.githubusercontent.com/Wivik/am-writing-hugo-theme/main/images/subscribe-button.png)\n\nThen, mode `subscribe-example.md` available in with this theme to your `content/` folder and name it `subscribe.md`. Attention, if your site is multilingual, you need to copy it in each language folder. Such as `content/fr/subscribe.md` and `content/en/subscribe.md`.\n\n[![subscribe](https://raw.githubusercontent.com/Wivik/am-writing-hugo-theme/main/images/subscribe-page-tn.png)](https://raw.githubusercontent.com/Wivik/am-writing-hugo-theme/main/images/subscribe-page.png)\n\nThis page is basically a list of Hugo Shortcodes that will display the following elements :\n\n- `this_site` : a simple explanation about registering the site in the user's bookmarks.\n- `rss_books` : a RSS feed for the books only\n- `rss_blog` : a RSS feed for the [Blog](#blog) feature. Will be displayed only if the blog is enabled.\n- `newsletter` : the integration code for your newsletter provider. Will integrate the code provided in `params.newsletterIntegrationCode`.\n- `fediverse` : a link to your Mastodon account if defined in the settings.\n\nAll descriptions displayed in these pages can be overrided in the related `i18n` file.\n\n## Books management\n\n### Books page content\n\nAll the books pages are managed by metadata, no actual content inside the markdown file.\n\nPlease refer to the [archetype/book.md](https://github.com/Wivik/am-writing-hugo-theme/blob/main/archetypes/book.md?plain=1) file for comprehensive reference.\n\nVariables documentation :\n\n| Name | Required | Default value | Description |\n| ---- | -------- | ------------- | ----------- |\n| `amazon` | No | `none` | The link to Amazon KDP entry. If you publish only on Amazon, ignore this field and put the link in `link`. |\n| `author` | Yes | `{{ .Site.Params.author }}` | Author's name, in case it would be a different person. |\n| `authorsnote` | No | `none` | If you want to add a personal comment about your book. |\n| `book` | Yes | `true` | Do not remove or change, it's used by the template. |\n| `cover` | No but recommended |  `{{ printf \"%s.jpg\" .File.ContentBaseName }}` | The name of the cover file. This file is expected to be in the `/static` folder. |\n| `date`| Yes | `{{ .Date }}` | The book's publication date. This is defined by Hugo as page creation, so modify it to reflect the actual release date. |\n| `description` | No but recommended | `none` | The book's description. Could be the synopsis or whatever else you want. Markdown is supported. |\n| `draft` | No | `false` | Set true if you don't want to publish this entry yet. |\n| `epub` | No | `false` | You can directly propose an epub file, put in this field the epub filename (ex : something.epub). It must be placed in the `/static/free-books` folder. |\n| `free` | No | `false` | If you publish your book for free, will change the value of the main link button to \"Free book\". |\n| `freepreview` | No | `false` | If you have a free preview for your book, put here the name of the `.epub` file. The file is expected to be in the `/static/books-preview/` folder. |\n| `genres` | No | `none` | A list of your book's genres. Use the technical name available in the `i18n` files to have the labels translated. |\n| `googlePlay` | No | `none` | The link to Google Play Books if you publish there. |\n| `isbn` | No | `1234567891237` | Your book's ISBN |\n| `language` | Yes | `EN` | The book's language. Required if multilingual and the book has a translation. |\n| `link` | No | `none`  | The link of your main selling place. Book2Read for example.\u003cbr\u003eIf missing, the page will display \"Unavailable\". |\n| `neovel` | No | `none` | The link to Neovel if you publish there. |\n| `pages` | No | `70` | How much pages the book contains. You can use [a tool](https://github.com/Wivik/epub-metadata-exporter) I've made for this information. |\n| `patreon` | No | `none`  | The link to Patreon if you publish there. |\n| `publishedOn` | No | `{{ .Date }}` | The publication date of your book. Default to the page creation date if not provided. |\n| `title` | Yes | `{{ replace .File.ContentBaseName \"-\" \" \" \\| title }}` | The Book's title |\n| `words` | No | `18k` | How much words the book contains. You can use [a tool](https://github.com/Wivik/epub-metadata-exporter) I've made for this information. |\n| `xinxii` | No | `none` | The link to XinXii if you publish there. |\n\n\n### Create a new book\n\nUse hugo with the right kind.\n\n```\nhugo new content books/my-book.md --kind book\n```\n\nThen, edit the new file accordingly.\n\n### Concerns about translated books\n\nThe book file (ex : `my-book.md`) *must* have the same name for eveyr languages. Change the title inside the file. So Hugo will be able to match the various languages for your content.\n\nEx :\n\n- `en/books/my-book.md` =\u003e `title: My Book`\n- `fr/books/my-book.md` =\u003e `title: Mon Livre`\n\n\n## License\n\nAm Writing is licensed under MIT. See [LICENSE](https://github.com/Wivik/am-writing-hugo-theme/blob/main/LICENSE).\n\n### Third party content license\n\n- Droid Serif is licensed under Apache 2.0\n- Droid Sans is licensed under Apache 2.0\n- Using Remix Icons licensed under Apache 2.0\n- Uses Catpuccin color scheme licensed under MIT license\n- Uses Nord Theme color scheme licensed under MIT license\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwivik%2Fam-writing-hugo-theme","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwivik%2Fam-writing-hugo-theme","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwivik%2Fam-writing-hugo-theme/lists"}