{"id":13851856,"url":"https://github.com/BurntCaramel/lokum","last_synced_at":"2025-07-13T03:32:45.164Z","repository":{"id":86336278,"uuid":"71350434","full_name":"BurntCaramel/lokum","owner":"BurntCaramel","description":"Manage a website’s content using Trello","archived":false,"fork":false,"pushed_at":"2017-07-15T08:31:47.000Z","size":1032,"stargazers_count":25,"open_issues_count":1,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-03-31T05:08:55.235Z","etag":null,"topics":["content","content-management","content-management-system","hashtag","nodejs","redirects","trello","trello-board"],"latest_commit_sha":null,"homepage":"https://lokum.icing.space/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BurntCaramel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2016-10-19T11:30:40.000Z","updated_at":"2021-10-20T21:03:01.000Z","dependencies_parsed_at":null,"dependency_job_id":"ab59309f-1677-4bb5-b2f4-f212d2c6c98e","html_url":"https://github.com/BurntCaramel/lokum","commit_stats":null,"previous_names":["royalicing/lokum"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BurntCaramel%2Flokum","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BurntCaramel%2Flokum/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BurntCaramel%2Flokum/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BurntCaramel%2Flokum/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BurntCaramel","download_url":"https://codeload.github.com/BurntCaramel/lokum/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225855329,"owners_count":17534962,"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":["content","content-management","content-management-system","hashtag","nodejs","redirects","trello","trello-board"],"created_at":"2024-08-04T22:00:43.752Z","updated_at":"2024-11-22T06:30:37.972Z","avatar_url":"https://github.com/BurntCaramel.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"![Lokum logo](docs/lokum-128.png)\n\n# lokum\n\nManage your website’s content using a Trello board. [Watch it in action here.](https://www.youtube.com/watch?v=GThjBRCbiBk)\n\n## Deploy with [Now](https://zeit.co/now)\n\n1. Install Now: https://zeit.co/now\n2. Find your public Trello board’s ID (e.g. mQ6WXDAQ)\n3. Run, passing your board ID: `now RoyalIcing/lokum -e TRELLO_BOARD_ID=mQ6WXDAQ`\n\n## Live online preview\n\nYou can preview your boards here: https://lokum.icing.space — just paste the URL of your public Trello board.\n\n- My portfolio: https://lokum.icing.space/#mQ6WXDAQ/ · [Made from this board](https://trello.com/b/mQ6WXDAQ/burntcaramel-com)\n- Royal Icing home page: https://lokum.icing.space/#YJxWDVRO/ · [board](https://trello.com/b/YJxWDVRO/icingspace)\n- Collected home page: https://lokum.icing.space/#kIL3DloM/ · [board](https://trello.com/b/kIL3DloM/collecteddesign)\n\n## Download a website zip\n\n### Static HTML\n\n```\nhttps://us-central1-royal-icing.cloudfunctions.net/serveWebFromTrelloBoard/YOUR_BOARD_ID.zip\n```\n\n### [Next.js 3](https://github.com/zeit/next.js)\n```\nhttps://us-central1-royal-icing.cloudfunctions.net/serveWebFromTrelloBoard/YOUR_BOARD_ID.next.zip\n```\n\n## How to make a website board in Trello\n\nLokum uses the lofi format of hashtagging text. Any trailing **#hashtags** are added as booleans, and any trailing **#hashtag: any text you like** become key-value pairs.\n\n### Create a board in Trello, and make it public.\n\n### Add a list for each page\n- The list’s name will become the page’s title\n- The **#path** tag pair lets you specify the absolute path for this page.\n- The **#class** tag pair lets you specify custom classes for this page.\n\n### Add cards to each page list for the content on the page\n- A card’s title becomes an `\u003ch2\u003e`.\n- The card’s description is parsed as markdown, and follows the `\u003ch2\u003e`.\n- Attached images become `\u003cimg\u003e` above the content\n\n#### Links\n- Use the **#link** tag pair to make the subheading link out to a URL.\n\n#### Main heading\n- Add **#primary** to the subheading you want to make a `\u003ch1\u003e` instead of an `\u003ch2\u003e`. Similarly **#tertiary** can be used for `\u003ch3\u003e`.\n\n#### Posts\n- Use the **#slug** tag pair to specify a child-page. The content stays part of the parent page, but also appears solely as a page at its slug’s path. The `\u003ch2\u003e` then links out to the child-page.\n\n#### Navigation\n- Add a card with name **#nav** to specify that the cards following should be together grouped in a `\u003cnav\u003e`.\n\n#### Article\n- Add a card with name **#article** to specify that the cards following should be each an `\u003carticle\u003e`.\n\n#### Metatags, CSS, etc\n- Add a card with name **#meta** to add `\u003cmeta\u003e` and `\u003clink\u003e` tags from the card’s description as HTML to the `\u003chead\u003e`. \n\n### Other lists can also be added for additional behaviour\n\n#### Share on all pages\n- A list named **#all** will have its cards used across all pages, e.g. shared meta tags.\n- Use a card named **#above** for HTML that will be added above every page.\n\n### Path redirects\n- A list with name **#redirects**\n- Each card must have **#from** and **#to** tag pairs for the original _(from)_ path and destination _(to)_ path for a redirect.\n\n## Reloading with Google Authenticator\n\nLokum supports live-reloading of a site with the latest content from the source Trello board:\n\n1. [Generate a secret](https://sedemo-mktb.rhcloud.com), and scan the QR code into your Google Authenticator app.\n2. Use that secret as environment variable `RELOAD_SECRET` (`-e RELOAD_SECRET=XXX` with Now).\n3. Visit `/-reload/:latest-token` to reload with fresh data from Trello.\n\n## API\n\n### `startServerForBoard(boardID, { seo = true, reloadSecret, host, port })`\n- boardID (String): The ID (not full URL) of the Trello Board to use as a content source\n- seo (Boolean): Whether to enable a /robots.txt route\n- reloadSecret (String): The OTP secret\n- host (String): Domain to use as host, usually fine to omit\n- port (String): Port to start the server on\n- Returns a Promise which resolves once the content has loaded and the server is ready\n\n```\nimport { startServerForBoard } from 'lokum'\n\nconst boardID = 'mQ6WXDAQ' // From public Trello board https://trello.com/b/mQ6WXDAQ/burntcaramel-com\n\nstartServerForBoard(boardID, { port: process.env.PORT })\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FBurntCaramel%2Flokum","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FBurntCaramel%2Flokum","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FBurntCaramel%2Flokum/lists"}