-
When updating this document, please make sure to keep the Roam page and site
README.md
file in sync!- The easiest way to do this is to make updates in Roam, Export the page as Markdown using the "three dots" overflow menu in the upper right, and then overwrite
README.md
with the contents of that file.
- The easiest way to do this is to make updates in Roam, Export the page as Markdown using the "three dots" overflow menu in the upper right, and then overwrite
-
Last updated June 21, 2020 by [[Nathan Acks]].
-
-
- Website content is all stored in GitHub: https://github.com/The-Yak-Collective/yakcollective
-
- Most site updates (project pages, member info, about page, etc.) can be done through the admin panel. You need a GitHub account, but shouldn't need to know Markdown, HTML, or CSS (though some knowledge is helpful!). You may want to review the "Site Structure".
- Once you've made your change, ping [[Nathan Acks]], [[Tom Critchlow]], or [[Venkatesh Rao]] (in that order) to approve it.
- Important! This functionality is broken right now. See GitHub issue #10.
- For structural changes (or if you prefer your own editor/workflow), you can also fork our repo, make the changes you want, and then submit a pull request.
- If you're not comfortable with any of the above, you should open a ticket clearly describing the change you want to make.
- As a last resort, or in the unlikely event of an emergency update, you can ping [[Nathan Acks]], [[Tom Critchlow]], or [[Venkatesh Rao]] (in that order) on Discord.
- Most site updates (project pages, member info, about page, etc.) can be done through the admin panel. You need a GitHub account, but shouldn't need to know Markdown, HTML, or CSS (though some knowledge is helpful!). You may want to review the "Site Structure".
-
- Writings are pushed into the GitHub repo (which then triggers a site rebuild) using IFTTT + the
create-post
function. - Writings are sourced from member RSS feeds.
- These feeds are documented below, but adding them requires making changes in IFTTT. If you wish to add an RSS feed or update an existing feed, please open a ticket.
- Member RSS Feeds
- Anne-Laure Le Cunff: https://nesslabs.com/author/annelaure/feed
- [[Ben Mosior]]: https://hiredthought.com/feed/
- [[Benjamin P Taylor - London]]: https://medium.com/feed/@antlerboy
- Benton Heimsath: https://www.bentonheimsath.com/writing?format=rss
- [[David McDougall]]: https://innovationatscale.substack.com/feed/
- [[Pamela Hobart]]: https://www.pamelajhobart.com/blog?format=rss
- [[Paul Millerd]]: https://think-boundless.com/feed/
- [[Randy Lubin]]: https://blog.randylubin.com/feed.xml
- [[Shreeda Segan]]: https://shreeda.substack.com/feed/
- [[Toby Shorin]]: https://subpixel.space/feed.xml
- [[Tom Critchlow]]: https://tomcritchlow.com/feed
- [[Vaughn Tan]]: https://uncertaintymindset.substack.com/feed/
- [[Venkatesh Rao]]: https://breakingsmart.substack.com/feed/
- [[Vinay Débrou]]: https://vinaydebrou.com/feed.xml
- Newsletter Archive
- Writings are pushed into the GitHub repo (which then triggers a site rebuild) using IFTTT + the
-
-
netlify-prod
(production)portmantoad-beautify
([[Drew Schorno]] design work)
-
- Check out the GitHub issue tracker for the site for a list of current ideas, known issues, etc.
- If you see a problem or have an idea, submit a ticket. This will help us keep track of things more easily than documenting these ideas in Roam.
- You don't have to have write access to contribute changes! Pull requests welcome.
- Help on any issue (and cool new ideas via pull requests) is welcome. Issues marked as "help wanted" are those that need further thought and/or require skills (like website accessibility and graphic design) that the current team isn't strong in.
- Check out the GitHub issue tracker for the site for a list of current ideas, known issues, etc.
-
- Significant website changes should be made using short-lived topic branches that are merged into
netlify-prod
when ready.- The Yak Collective Netlify account can be used to create temporary websites (see "Current Active Branches") when such changes need to be reviewed broadly.
- Issues, features, and website milestones are tracked in GitHub.
- Significant website changes should be made using short-lived topic branches that are merged into
-
- To build things locally...
-
- To build things locally...
-
bundle config set path vendor/bundle bundle install bundle exec jekyll build
bundle exec jekyll serve
instead to fire up Jekyll's local server mode so that you can connect to http://localhost:4000 and browse the current version of the site. - Netlify will rebuild the site automatically whenever changes are pushed to the repo and/or merged in.- **Warning!** Netlify's build environment uses UTC, so when using `site.time` to mask pages (which we do sometimes), be aware that they will become unmasked relative to UTC!
-
- [[Yak Talk Newsletter – To Do and Content Ideas]]
-
-
- Here's a quick rundown of the moving parts...
-
about.md
index.md
members.md
projects.md
writings/feed.json
- JSON feed for member writings, structured after John Gruber's feed on Daring Fireball (e.g., posts link back to the original article, and not yakcollective.org).
writings/feed..xml
- RSS feed, equivalent to
writings/feed.json
.
- RSS feed, equivalent to
writings/index.html
-
assets/*
robots.txt
-
members
- Member data, one person per file. Referenced by projects and posts.
projects
- Yak Collective projects.
sequences
- Sequences used to group projects. Projects are counted in "days released since X".
-
- Posts in
writings/_posts
andnewsletter/_posts
are auto-pushed from member RSS feeds using IFTTT and Netlify Functions. - Current feeds pulled are documented above in "Member RSS Feeds". To add or update a member feed, please open a ticket.
- Relevant infrastructure bits:
packages.json
functions/create-post.js
- Posts in
-
_layouts/default.html
- Base layout. This isn't actually used on any pages, but is inherited by other layouts.
_layouts/member.html
- Used for member pages.
_layouts/member-list.html
- Used for the member list page (
members.md
).
- Used for the member list page (
_layouts/minimal.html
- The most minimal layout used on
yakcollective.org
. Directly used on the site home page (index.md
), and inherited by most other layouts (with the exception ofproject.html
).
- The most minimal layout used on
_layouts/page.html
- Normal layout for stand-alone pages.
_layouts/post.html
- Layout for posts. Every post is assumed to have an author defined in the
members
collection. - Note that while post pages are generated as part of the build process, they are not linked anywhere on the site itself. (Links that would point to them instead point to the original post on the member's website.)
- Layout for posts. Every post is assumed to have an author defined in the
_layouts/project.html
- Fancier formatting for pages in the
projects
collection.
- Fancier formatting for pages in the
_layouts/project-list.html
- Used for the project list page (
projects.md
).
- Used for the project list page (
-
_includes/analytics.html
- Google Analytics code; included on all pages by proxy through
_layouts/default.html
.
- Google Analytics code; included on all pages by proxy through
_includes/footer.html
- Page footer elements.
_includes/head.html
- HTML
<head/>
elements (things like<meta/>
tags, not page headers).
- HTML
_includes/page.css
- CSS used for per-page customization (accent colors, hero images, etc.).
_includes/member-card-html
- Reusable "member card" element, currently used in the members list, individual member pages, and in the
_layouts/post.html
template.
- Reusable "member card" element, currently used in the members list, individual member pages, and in the
_includes/nav.html
- Page navigation elements.
_includes/project-box.html
- Project card, used in the projects list and individual member pages.
_includes/toc.html
- Table of contents for
_layouts/page.html
elements. Does unreal things with Liquid. Probably black magic.
- Table of contents for
-
-
admin/*
_config.yml
Gemfile
Gemfile.lock
netlify.toml
- Various Netlify build directives, just redirects right now.
-
- Netlify CMS uses GitHub as an OAuth provider; connection secrets can be found in Netlify under Settings > Access control > OAuth.
- The
create-post
function stores configuration information, a GitHub access token, and a token used to authenticate incoming requests in Netlify under Settings > Build & deploy > Environment > Environment variables.
-
-
- Notes for v1.0 and v.20 adapted from the June 13, 2020 #infrastructure chat notes.
-
- Built by [[Tom Critchlow]].
- Uses Jekyll via GitHub Pages.
-
- Built by [[Nathan Acks]].
- More flexible (and hopefully easier to maintain!).
-
- Documentation (originally just in the GitHub
README.md
, now this file!). - Uses Netlify to build and serve the site, with code still stored in GitHub.
- Still using Jekyll as the build system.
- More consistent visual language (consistent link colors, concept of "accent" colors, etc.).
- Lots of changes around projects and the project page.
- Projects are part of a "sequence" indexed off of a particular date. Currently there's only a COVID-19 sequence (a.k.a. "pandemic mean time"), but others can be added.
- Project cards are customized with the project hero image and accent color.
- Three sections:
- Latest Projects are the most recent (live) three projects.
- Upcoming Projects are projects that are on-deck and we want to advertise, but aren't yet released. These project cards are not clickable links, and the project page itself is not built.
- Past Projects are all live projects older than the most recent three.
- Hero images on individual project pages are now faded a bit to improve readability.
- Lots more flexibility with individual project pages now.
- Custom hero image, accent color, CSS.
- We'll keep evolving this page as we need more flexibility. About 60% of the code was rewritten for The New Old Home; subsequent projects will probably also need new/changed code, but the aim is to need to make fewer changes each time.
- Member pages are intended to function as "landing pages" for Yak Collective folks.
- The Members page proper arranges people by join date (defined as "first project contributed to"), then alphabetically within each cohort.
- Cards are clickable links to the member page itself.
- Members pages are linked on each project page.
- Each member page includes:
- Projects (as project cards) that the member has lead or collaborated on.
- Blog posts/writings from RSS feeds (when available).
- Each member can also include additional descriptive page text (though this isn't currently being used by anyone).
- The Members page proper arranges people by join date (defined as "first project contributed to"), then alphabetically within each cohort.
- The Join page is just a wrapper around the existing Google Form.
- Using a wrapper means we can swap out the Google Form for something more sophisticated later.
- Right now, there's an unused "welcome" page that could be used for a landing page after form submission.
- Using a wrapper means we can swap out the Google Form for something more sophisticated later.
- Netlify Functions (which allows Amazon Lambda functions to be deployed as part of building the site) are used to commit incoming member blog posts into the site GitHub repository.
- The commit causes the site to be rebuilt by Netlify, which adds a link to the blog post to the Writings page.
- Post contents are cached in the GitHub repo to allow us to speed up site builds, allow posts that have disappeared from member RSS feeds to still be linked, and to allow for later experiments around textual analysis, auto-tagging, etc.
- Posts are always linked back to the original, never internally. The point is to push people to member sites rather than trying to get them to stay on our site.
- Similarly, the writings RSS feed is styled after Daring Fireball: Post content is displayed, but links take people back to the member's site, not yakcollective.org.
- There's an experimental admin page built using Netlify CMS.
- This isn't working right now for folks who don't have access to the repo. See GitHub issue #10.
- Should work for anyone with a GitHub account.
- Edits should create pull requests, that can then be approved.
- Preview doesn't capture the whole look of the finale page right now.
- This can't be supported with Jekyll, but may be possible to support by moving to Gatsby (see GitHub issue #12)
- This isn't working right now for folks who don't have access to the repo. See GitHub issue #10.
- Documentation (originally just in the GitHub