Bridgetown

Bridgetown

Bridgetown is a next-generation, progressive site generator & fullstack framework, powered by Ruby. Bridgetown takes your local content and external data loaded from APIs; renders templates in Markdown, ERB, and many other formats; automatically compiles frontend assets via esbuild; and exports a complete website ready to be served by fast CDNs like Render or traditional web servers. Bridgetown also integrates closely with Roda for fullstack, dynamic web application functionality—but only when and where you need it. [![Build Status](https://github.com/bridgetownrb/bridgetown/workflows/build/badge.svg)](https://github.com/bridgetownrb/bridgetown/actions?query=workflow%3Abuild+branch%3Amain) [![Gem Version](https://img.shields.io/gem/v/bridgetown.svg)](https://rubygems.org/gems/bridgetown) [![Licensed MIT](https://img.shields.io/badge/license-MIT-yellowgreen.svg)](LICENSE) [![Join the Discord Chat](https://img.shields.io/discord/711236503493148733?color=forestgreen&logo=discord)](https://discord.gg/4E6hktQGz4) [![PRs welcome!](https://img.shields.io/badge/PRs-welcome-blue.svg)](https://github.com/bridgetownrb/bridgetown/blob/main/CONTRIBUTING.md) ---- ## Sponsor Bridgetown Development 🙏 [Your direct financial assistance is greatly appreciated!](https://www.bridgetownrb.com/sponsor) Every penny goes towards enabling steady and comprehensive improvement and promotion of the Bridgetown framework and ensuring its success for years to come. ## Commercial Support Bridgetown development is spearheaded by Portland-based web studio [Whitefusion](https://www.whitefusion.studio). Contact us if you need commercial support for your Bridgetown content strategy, site design, or deployment. Also providing commercial support: [Radioactive Toy](https://radioactivetoy.tech) based in the UK. ## Star History [![Star History Chart](https://api.star-history.com/svg?repos=bridgetownrb/bridgetown&type=Date)](https://star-history.com/#bridgetownrb/bridgetown&Date) ---- ## Start Here * [Install](https://www.bridgetownrb.com/docs/) the Bridgetown gem * Familiarize yourself with the [Command Line Usage](https://www.bridgetownrb.com/docs/command-line-usage/) and [Site Configuration](https://bridgetownrb.com/docs/configuration/) * Explore the best options for [Deploying Your Site](https://www.bridgetownrb.com/docs/deployment) when it's ready to go live * Have questions? Check out our new [Community discussion site](https://community.bridgetown.pub) or [chat on Discord](https://discord.gg/4E6hktQGz4) * [Fork Bridgetown](https://github.com/bridgetownrb/bridgetown/fork) and contribute your own improvements! ## Get Up to Speed * Explore the [Folder Structure](https://www.bridgetownrb.com/docs/structure) of a Bridgetown website * Start adding content to your site in the form of [Resources](https://www.bridgetownrb.com/docs/resources/) * Learn how [Front Matter](https://www.bridgetownrb.com/docs/front-matter/) works for adding metadata to resources * Add extra information to your site with [Data Files](https://www.bridgetownrb.com/docs/datafiles/) * Customize the [Permalinks](https://www.bridgetownrb.com/docs/content/permalinks/) your resources are generated with * Use [Template Engines](https://www.bridgetownrb.com/docs/template-engines) like Liquid, ERB, and Serbea to author sophisticated template designs * Extend with [Custom Plugins](https://www.bridgetownrb.com/docs/plugins/) to generate and manipulate content specific to your site * Discover how to add [Frontend Assets](https://www.bridgetownrb.com/docs/frontend-assets/) using esbuild for a modern Javascript & CSS build pipeline ## Testing Locally If you'd like to hack away on Bridgetown directly, you'll need to clone this repo and ensure the test suite passes. Note that this is a "monorepo", meaning that multiple Rubygem codebases are stored within a single repo. ```shell $ git clone git@github.com:bridgetownrb/bridgetown.git $ cd bridgetown $ bundle # install development gems $ bundle exec rake # run the full test suite ``` After making changes in one of the gems, say `bridgetown-core`, if you want to run a single unit test, you can use the command: ```shell $ script/test test/test_foo.rb ``` Or run `script/test` to run the full test suite. You can also run `script/cibuild` to include Rubocop linting, etc., and at the root level of the repo, run `bundle exec rake test_all` to test the entire monorepo. To switch one of your own website repos to using the local gem, add the local gem path to the site's Gemfile as follows: ```ruby gem "bridgetown-core", path: "/path/to/bridgetown/bridgetown-core" # additional gems as needed ``` ## Need help? If you don't find the answer to your problem in our [docs](https://www.bridgetownrb.com/docs/), ask the [community](https://www.bridgetownrb.com/community) for help. ## Code of Conduct In order to have a more open and welcoming community, Bridgetown adheres to a [code of conduct](CODE_OF_CONDUCT.md) adapted from the Contributor Covenant. Please adhere to this code of conduct in any interactions you have in the Bridgetown community. It is strictly enforced on all official Bridgetown repositories, websites, and resources. If you encounter someone violating these terms, please let one of our [core team members](mailto:maintainers@bridgetownrb.com) know and we will address it as soon as possible. ## Contributors > [!NOTE] > Interested in joining the Bridgetown Core Team? Send a DM to Jared in [Discord](https://discord.gg/4E6hktQGz4) and let's chat! Bridgetown is built by: |jaredcwhite|jaredmoody|andrewmcodes|ParamagicDev|MikeRogers0| |:---:|:---:|:---:|:---:|:---:| |@jaredcwhite|@jaredmoody|@andrewmcodes|@ParamagicDev|@MikeRogers0| |Portland, OR|Portland, OR|Chandler, AZ|Providence, RI|Ny-Ålesund, Svalbard| |wout|codemargaret|julianrubisch|ianbayne|ayushn| |:---:|:---:|:---:|:---:|:---:| |@wout|@codemargaret|@julianrubisch|@ianbayne|@ayushn21| |Brighton, UK|Portland, OR|Vienna, Austria|Tokyo, Japan|London, UK| ||pascalwengerter|marketerly|juanvqz|katafrakt| |:---:|:---:|:---:|:---:|:---:| |@bkmgit|@pascalwengerter|@marketerly|@juanvqz|@katafrakt| ||Lisbon, Portugal|Tripoli, Libya|Oaxaca, México|Wrocław, PL| |erikyuzwa|eclectic-coding|collindonnell|juhat|| |:---:|:---:|:---:|:---:|:---:| |@erikyuzwa|@eclectic-coding|@collindonnell|@juhat|@debashis-biswal| |Calgary, AB|North Carolina, US|Portland, OR|Budapest, Hungary|| |nachoal|deivid-rodriguez|Eric-Guo|jacobherrington|| |:---:|:---:|:---:|:---:|:---:| |@nachoal|@deivid-rodriguez|@Eric-Guo|@jacobherrington|@fpsvogel| |CDMX, México|Madrid, Spain|Shanghai, China|Fayetteville, AR|Lexington, KY| |vvveebs|rickychilcott|tommasongr|tombruijn|svoop| |:---:|:---:|:---:|:---:|:---:| |@vvveebs|@rickychilcott|@tommasongr|@tombruijn|@svoop| |London, UK|Ohio, US|Amsterdam, The Netherlands|Milan, IT|Europe| |michaelherold|joemasilotti|ikass|jw81|jw81 |:---:|:---:|:---:|:---:|:---:| |@michaelherold|@joemasilotti|@ikass|@jw81|@MSILycanthropy| |Omaha, NE|Portland, OR|Latvia|Kansas City, MO|Kansas City, MO| |jeremyevans|Yegorov|| |:---:|:---:|:---:| |@jeremyevans|@Yegorov|You Next?| |Sacramento, CA||Anywhere| ## License The gem is available as open source under the terms of the [MIT LICENSE](./LICENSE) file. ---- ## Current Sponsors 🙏 🎉 Sincere thanks to those currently supporting ongoing Bridgetown development! |andrewmcodes|wout|| |:---:|:---:|:---:| |@andrewmcodes|@wout|You Next?| |Website|Website|| ---- ## Special Thanks to Our GitHub Sponsors! 🙏 🎉 We are eternally grateful for all our past sponsors of Bridgetown via GitHub. |svoop|rahoulb|joshuap|skvk|monfresh| |:---:|:---:|:---:|:---:|:---:| |@svoop|@rahoulb|@joshuap|@skvk|@monfresh| |Website|Website|Website||Website| |renuo|subsevenx|collindonnell|nbkkb7x|bpo| |:---:|:---:|:---:|:---:|:---:| |@renuo|@subsevenx|@collindonnell|@nbkkb7x|@bpo| |Website||Website|Website|Website| |DRBragg|andrewmcodes|karloscarweber|swilgosz|ttilberg| |:---:|:---:|:---:|:---:|:---:| |@DRBragg|@andrewmcodes|@karloscarweber|@swilgosz|@ttilberg| |Website|Website|Website|Website|Website| |Brem-LLC|posiczko|fuzzygroup|maxveldink|oleingemann| |:---:|:---:|:---:|:---:|:---:| |@Brem-LLC|@posiczko|@fuzzygroup|@maxveldink|@oleingemann| |Website|Website|Website|Website|Website| |onurozer|joelhawksley|coreyaus|johlym|pascallaliberte| |:---:|:---:|:---:|:---:|:---:| |@onurozer|@joelhawksley|@coreyaus|@johlym|@pascallaliberte| |Website|Website|Website|Website|Website| |luctus|AbuMareBear|rootnoob|matoni109|jc00ke| |:---:|:---:|:---:|:---:|:---:| |@luctus|@AbuMareBear|@rootnoob|@matoni109|@jc00ke| |Website||||Website| |jespr|MikeRogers0|existentialmutt|jr180180|eclectic-coding| |:---:|:---:|:---:|:---:|:---:| |@jespr|@MikeRogers0|@existentialmutt|@jr180180|@eclectic-coding| ||||Website|Website| |williamkennedy|adrianvalenz|scoutapm-sponsorships|asaaki|leastbad| |:---:|:---:|:---:|:---:|:---:| |@williamkennedy|@adrianvalenz|@scoutapm-sponsorships|@asaaki|@leastbad| |Website|Website|Website|Website|| |jasoncharnes|pascalwengerter|wout|johnchambers|mtomov| |:---:|:---:|:---:|:---:|:---:| |@jasoncharnes|@pascalwengerter|@wout|@johnchambers|@mtomov| |Website|Website|||Website| |marcoroth|miatrinity|pilotcph|| |:---:|:---:|:---:|:---:| |@marcoroth|@miatrinity|@pilotcph|You Next?| |Website||Website||