{"id":17399048,"url":"https://github.com/cdata/bound-old","last_synced_at":"2025-03-27T22:17:07.228Z","repository":{"id":137294388,"uuid":"3049148","full_name":"cdata/bound-old","owner":"cdata","description":"Bound is a static-file website generator, similar to Jekyll.","archived":false,"fork":false,"pushed_at":"2012-03-05T16:30:26.000Z","size":116,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-02T00:32:02.164Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/cdata.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}},"created_at":"2011-12-25T20:57:07.000Z","updated_at":"2013-07-20T13:22:54.000Z","dependencies_parsed_at":"2023-03-13T10:57:49.205Z","dependency_job_id":null,"html_url":"https://github.com/cdata/bound-old","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdata%2Fbound-old","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdata%2Fbound-old/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdata%2Fbound-old/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdata%2Fbound-old/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cdata","download_url":"https://codeload.github.com/cdata/bound-old/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245931897,"owners_count":20695964,"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":[],"created_at":"2024-10-16T15:04:08.473Z","updated_at":"2025-03-27T22:17:07.193Z","avatar_url":"https://github.com/cdata.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bound\n\nBound is a static-file blog management utility, inspired by [Jekyll][1]. Bound aims to provide similar static-file blogging support, with a focus on simplicity and ease of deployment.\n\n## Installing\n\nYou can not yet install Bound through NPM, but soon you will be able to like this:\n\n    npm install -g bound\n\nIf you wish to hack on Bound, fork / clone the repository and run the bootstrap script:\n\n    chris-410s bound/ (master) シ ./bootstrap\n    Git is available..\n    NodeJS is available..\n    NPM is available..\n    Mocha is available..\n    Installing NPM dependencies..\n    Creating local clone of the sample blog for testing..\n    Cloning into bare repository ./sample-blog.git...\n    remote: Counting objects: 33, done.\n    remote: Compressing objects: 100% (23/23), done.\n    remote: Total 33 (delta 4), reused 32 (delta 3)\n    Unpacking objects: 100% (33/33), done.\n    Bound is ready to go!\n\nPlease note that the bootstrap script is designed to run a sanity check on your environment, and generally won't install things for you (except for NPM dependencies and the sample git repository used by tests).\n\n## How does it work?\n\nOn your web server, you make a bare clone of your blog's git repository. You tell Bound two things: 1) the bare repository to use as your input, and 2) the location for Bound where bound should publish the repository (typically this would be your web root). Bound creates a post-receive hook in your repository so that it can automatically update when you push to it from elsewhere.\n\n## How about an example?\n\nFirst, make a bare clone of your blog repository:\n\n    cdata-410s tmp/ シ git clone --bare git@github.com:cdata/bound-sample-blog.git\n    Cloning into bare repository bound-sample-blog.git...\n    remote: Counting objects: 26, done.\n    remote: Compressing objects: 100% (18/18), done.\n    remote: Total 26 (delta 3), reused 26 (delta 3)\n    Receiving objects: 100% (26/26), done.\n    Resolving deltas: 100% (3/3), done.\n\nThen, compile it down to a static website with Bound:\n\n    cdata-410s tmp/ シ bound -r ./bound-sample-blog.git -o ./blog-www -h\n    Binding ./bound-sample-blog.git\n    Creating post-receive hook at bound-sample-blog.git/hooks/post-receive\n    ./bound-sample-blog.git has been bound.\n\nNote that a post-receive hook as been created in the bare repo. This hook will activate Bound and republish the blog per the options in the original command every time you push to the git repository. Inspecting the specified output directory shows that the static output has already been created:\n\n    chris-410s blog-www/ シ tree\n    .\n    ├── a-sample-page.html\n    ├── entries\n    │   ├── 2012\n    │   │   └── 02\n    │   │       ├── 19\n    │   │       │   └── a-sample-post.html\n    │   │       └── 20\n    │   │           └── second-post.html\n    │   └── index.html\n    ├── humans.txt\n    ├── robots.txt\n    └── unbound\n        ├── a-sample-page.json\n        ├── entries\n        │   ├── 2012\n        │   │   └── 02\n        │   │       ├── 19\n        │   │       │   └── a-sample-post.json\n        │   │       └── 20\n        │   │           └── second-post.json\n        │   └── index.html\n        └── templates\n            ├── archive.html\n            ├── atom.xml\n            ├── entry.html\n            ├── index.html\n            ├── page.html\n            └── partials\n                └── head.html\n\n    13 directories, 16 files\n\n## How do I build my blog?\n\nThis will be documented further soon. For now, only the critical details will be available, as Bound is still in weekend project status. If you are the curious type, please refer to [the sample blog][3].\n\n### Entries\n\nPresently, Markdown is the only supported dialect for Bound entries. Support for more dialects will probably be added eventually.\n\n#### Metadata\n\nWhen Bound parses the markdown of an entry, it looks to see if the first item is a code block. If it is, it will parse it as newline-seperated key-value field. Consider this markdown \"code\" block:\n\n    Title: Remember, remember\n    Date: November 5th, 2012\n    Author: V\n\nIf this were to appear at the top of an entry, Bound will parse it as metadata, remove it from the entry, and feed it to the entry's template as it is being compiled. The metadata would is represented to the template as:\n\n    {\n        title: \"Remember, remember\",\n        date: \"November 5th, 2012\",\n        author: \"V\"\n        content: {\n            html: \"...\",            /* HTML parsed from entry markdown */\n            markdown: \"...\",        /* Raw markdown as read from the original entry */\n            date: Date,             /* Date object created by parsing the date key provided */\n            filename: \"filename.md\" /* The original filename of the document */\n        }\n    }\n\n### Templates\n\nThe current templating mechanism supported by Bound is [Swig][4], although support for multiple templating mechanisms is in the works. Three templates, index.html, entry.html and archive.html, are required. The entire templates directory structure will be walked and any templates found there will also be compiled. Please refer to [Swig's documentation][4] if you have questions about how templating works.\n\n## Why should I use this instead of WordPress?\n\nThe static blogging workflow provided by [Jekyll][1] is awesome. You author your content in a format like [Markdown][2] You push to a git repository, and a post-receive hook in your git repository causes your git repository to be compiled down to a static HTML website. You can write articles with any text editor on any platform, and publish from anywhere without any of the server-side overhead of a dynamic, database driven framework. Among other benefits, tools like this allow one to host a really rich, easily-managed website within very tight hardware constraints (like a cheap cloud server, for instance).\n\n## Why should I use this instead of Tumblr / Posterous / Xanga?\n\nYou can hand over syndication and / or ownership of your content to whoever you deem worthy.\n\n[1]: http://tom.preston-werner.com/jekyll/\n[2]: http://daringfireball.net/projects/markdown/\n[3]: http://github.com/cdata/bound-sample-blog/\n[4]: http://paularmstrong.github.com/swig/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdata%2Fbound-old","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcdata%2Fbound-old","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdata%2Fbound-old/lists"}