{"id":80355,"url":"https://github.com/fpsvogel/learn-ruby","name":"learn-ruby","description":"Learning resources for Ruby, Rails, and related skills.","projects_count":227,"last_synced_at":"2026-04-02T11:00:34.119Z","repository":{"id":40335757,"uuid":"368956146","full_name":"fpsvogel/learn-ruby","owner":"fpsvogel","description":"Learning resources for Ruby, Rails, and related skills.","archived":false,"fork":false,"pushed_at":"2026-02-16T14:53:08.000Z","size":405,"stargazers_count":836,"open_issues_count":0,"forks_count":83,"subscribers_count":26,"default_branch":"main","last_synced_at":"2026-02-20T16:03:05.142Z","etag":null,"topics":["awesome-list","awesome-rails","awesome-ruby","book-list","books","bookshelf","curriculum","learning","practice","programming","rails","resources","ruby","ruby-on-rails","study-materials","tutorial","web-development"],"latest_commit_sha":null,"homepage":"https://letslearnruby.com","language":"Ruby","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/fpsvogel.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,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-05-19T17:53:36.000Z","updated_at":"2026-02-18T09:11:13.000Z","dependencies_parsed_at":"2026-02-20T14:00:22.775Z","dependency_job_id":null,"html_url":"https://github.com/fpsvogel/learn-ruby","commit_stats":{"total_commits":685,"total_committers":3,"mean_commits":"228.33333333333334","dds":0.1284671532846715,"last_synced_commit":"70d7277e9dd2a286b1325ba31e5fff07c3ad1f97"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/fpsvogel/learn-ruby","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fpsvogel%2Flearn-ruby","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fpsvogel%2Flearn-ruby/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fpsvogel%2Flearn-ruby/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fpsvogel%2Flearn-ruby/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fpsvogel","download_url":"https://codeload.github.com/fpsvogel/learn-ruby/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fpsvogel%2Flearn-ruby/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30121059,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T10:44:24.758Z","status":"ssl_error","status_checked_at":"2026-03-05T10:44:15.079Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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"}},"readme":"\u003c!-- omit in toc --\u003e\n# Learn Ruby: a resource list\n\nHi! This road map has helped me as a self-taught developer. I hope it helps you too.\n\nNotice a broken link? [Open an issue!](https://github.com/fpsvogel/learn-ruby/issues/new)\n\n\u003c!-- omit in toc --\u003e\n## Table of contents\n\n- [Preliminaries](#preliminaries)\n  - [What's the best single learning resource?](#whats-the-best-single-learning-resource)\n  - [Why Ruby?](#why-ruby)\n- [Basics](#basics)\n  - [Front-end basics](#front-end-basics)\n  - [Ruby basics](#ruby-basics)\n  - [Rails basics](#rails-basics)\n  - [Getting hired](#getting-hired)\n- [Foundations](#foundations)\n  - [SQL and databases](#sql-and-databases)\n  - [Git](#git)\n- [Front end](#front-end)\n  - [CSS](#css)\n  - [JavaScript](#javascript)\n  - [Usability](#usability)\n  - [Accessibility](#accessibility)\n  - [Web standards](#web-standards)\n  - [Hotwire](#hotwire)\n- [Advanced Ruby and Rails](#advanced-ruby-and-rails)\n  - [Advanced Ruby](#advanced-ruby)\n  - [Advanced Rails](#advanced-rails)\n- [Miscellaneous](#miscellaneous)\n  - [Community](#community)\n  - [Ruby that is not web development](#ruby-that-is-not-web-development)\n  - [Rails codebases to study](#rails-codebases-to-study)\n\n## Preliminaries\n\n### What's the best single learning resource?\n\nI suggest the free [Odin Project](https://www.theodinproject.com/paths) if you're looking for one resource that can take you from zero to potentially hireable. If you want more variety and more depth on certain topics, keep reading!\n\n### Why Ruby?\n\nInitially I looked into full-stack JS, but the JS ecosystem was confusing to me as a solo learner. I found Ruby to be more straightforward and enjoyable.\n\n## Basics\n\n### Front-end basics\n\n- [x] Learn some HTML, CSS, and JS: [The Odin Project - Foundations path](https://www.theodinproject.com/paths/foundations/courses/foundations) or [MDN - Learn web development](https://developer.mozilla.org/en-US/docs/Learn_web_development) or [web.dev - Learn web development](https://web.dev/learn/). \u003c!-- https://avatars.githubusercontent.com/u/4441966?s=400 --\u003e\n- [x] Build a blog from scratch. [GitHub Pages](https://pages.github.com) is an accessible way to do this. (Choose the option \"Project site\", then \"Start from scratch\".) \u003c!-- https://letslearnruby.com/images/html-blog.png --\u003e\n\n### Ruby basics\n\n- **Basics:**\n  - [x] [The Odin Project - Ruby](https://www.theodinproject.com/paths/full-stack-ruby-on-rails/courses/ruby) \u003c!-- https://avatars.githubusercontent.com/u/4441966?s=400 --\u003e\n  - [x] [GoRails - Ruby for Beginners](https://gorails.com/series/ruby-for-beginners) if you prefer videos. \u003c!-- https://letslearnruby.com/images/gorails.jpg --\u003e\n  - [x] [Try Ruby](https://try.ruby-lang.org/) and [BigBinary Academy](https://academy.bigbinary.com/learn-ruby), if you like an interactive approach. \u003c!-- https://www.globalnerdy.com/wordpress/wp-content/uploads/2009/08/chunky_bacon.jpg --\u003e\n  - [ ] [Eloquent Ruby, 2nd ed.](https://pragprog.com/titles/eruby2/eloquent-ruby-second-edition) (beta)\n- **Guided practice:**\n  - [x] [Exercism - Ruby](https://exercism.org/tracks/ruby) \u003c!-- https://avatars.githubusercontent.com/u/5624255?s=400 --\u003e\n  - [x] [Advent of Code](https://adventofcode.com) with other people's Ruby solutions to compare yours to. One way to do this is [my Advent of Ruby gem](https://github.com/fpsvogel/advent_of_ruby). \u003c!-- https://letslearnruby.com/images/aoc.png --\u003e\n- **OOP (object-oriented programming):**\n  - [x] 💲[Sandi Metz - Practical Object-Oriented Design](https://www.poodr.com) \u003c!-- https://images.squarespace-cdn.com/content/v1/5527cdbae4b0ee7b897c2111/1530279450483-K5BJ5TZGMYSWYA3QQA63/POODR_2e_cover_low_res.jpg --\u003e\n  - [x] 💲[Sandi Metz \u0026 Katrina Owen - 99 Bottles of OOP](https://sandimetz.com/99bottles-sample-ruby) \u003c!-- https://images-na.ssl-images-amazon.com/images/S/compressed.photo.goodreads.com/books/1477514056i/31183020.jpg --\u003e\n- **Build stuff with Ruby.** Here are some ideas:\n  - A CLI (command-line interface) app. I made [one that gives statistics on a reading log](https://fpsvogel.com/posts/2021/my-first-ruby-app-lessons-learned). \u003c!-- https://miro.medium.com/v2/resize:fit:774/1*PGxvXulYR1Zp3TPx7FjMsQ.png --\u003e\n  - A game. A text-based game is the most straightforward option, but [there are Ruby game engines](#beyond-web-development) for graphical games. \u003c!-- https://letslearnruby.com/images/game.svg --\u003e\n  - A static site with [Bridgetown](https://github.com/bridgetownrb/bridgetown), which is simpler than building a web app with Rails. Maybe rebuild your blog? Be sure to [join the Bridgetown Discord server](https://discord.gg/Cugms94QFM). \u003c!-- https://www.bridgetownrb.com/images/bridgetown-avatar.png --\u003e\n\n### Rails basics\n\nOnly books and courses are listed below, but be sure to *build things* as you learn. I found it most helpful to build a bunch of little throwaway apps and write about each learning experience ([1](https://fpsvogel.com/posts/2021/gpt3-ai-story-writer), [2](https://fpsvogel.com/posts/2021/wiki-stumble-wikipedia-explorer), [3](https://fpsvogel.com/posts/2021/pass-the-story-collaborative-writing-game), [4](https://fpsvogel.com/posts/2022/doctor-lookup-health-provider-search-tool)).\n\n- **Basics:**\n  - [x] [Getting started with Rails](https://rails-tutorial.evilmartians.io/), an interactive quick start. \u003c!-- https://avatars.githubusercontent.com/u/46581?s=400 --\u003e\n  - [x] [typecraft - Rails New](https://www.youtube.com/playlist?list=PLHFP2OPUpCeZcPutT9yn4-e0bMmrn5Gd1) and/or [GoRails - Build a Blog with Rails 7](https://gorails.com/series/build-a-blog-with-rails-7) if you like videos. \u003c!-- https://i.ytimg.com/vi/_lRlOGS8Bgo/hqdefault.jpg --\u003e\n  - [x] [The Odin Project - Rails](https://www.theodinproject.com/paths/full-stack-ruby-on-rails) \u003c!-- https://avatars.githubusercontent.com/u/4441966?s=400 --\u003e\n- **Testing:**\n  - [x] [thoughtbot - Testing Rails](https://github.com/thoughtbot/testing-rails) or [the summary blog post](https://thoughtbot.com/blog/how-we-test-rails-applications). (In the book, ignore controller specs because [they have been superseded by request specs](https://stackoverflow.com/a/46500842).) \u003c!-- https://public-files.gumroad.com/g2f7k3fkbdgvubnh1b2cmsdcsenc --\u003e\n  - [x] 💲[Effective Testing with RSpec 3](https://pragprog.com/titles/rspec3/effective-testing-with-rspec-3/) \u003c!-- https://pragprog.com/titles/rspec3/effective-testing-with-rspec-3/rspec3.jpg --\u003e\n  \u003c!-- minitest:\n  - https://chriskottom.com/minitestcookbook\n  - https://testdrivingrails.com\n  --\u003e\n- **Miscellaneous:**\n  - [x] [Beginners Guide to Ruby on Rails Performance](https://henry.bearblog.dev/beginners-guide-to-ruby-on-rails-performance-part-1) \u003c!-- https://bear-images.sfo2.cdn.digitaloceanspaces.com/henry/performance.webp --\u003e\n  - [x] [Style guides](https://ruby.style/) for Ruby, Rails, and RSpec \u003c!-- https://avatars.githubusercontent.com/u/10871348?s=400 --\u003e\n\n### Getting hired\n\n- **Get real-world experience to put on your resume:**\n  - Contribute to open-source projects. I've written [a short guide on how to get started](https://fpsvogel.com/posts/2021/how-to-contribute-to-open-source-ruby-rails). \u003c!-- https://imgs.xkcd.com/comics/dependency_2x.png --\u003e\n  - [Ruby Central - Scholars and Guides Program](https://rubycentral.org/scholars_guides_program/) \u003c!-- https://rubycentral.org/content/images/size/w256h256/format/png/2022/11/Ruby-Central-logo.svg --\u003e\n- **Mentorship:**\n  - [First Ruby Friend](https://firstrubyfriend.org) where aspiring and first-year developers are connected with a mentor. \u003c!-- https://firstrubyfriend.org/images/ruby-plus-one.svg --\u003e\n  - [r/rails](https://www.reddit.com/r/rails). Examples: [1](https://www.reddit.com/r/rails/comments/rvs7f2/rails_mentoring/), [2](https://www.reddit.com/r/rails/comments/lvwn41/finding_a_mentor/). \u003c!-- https://letslearnruby.com/images/reddit.svg --\u003e\n- **The job search:**\n  - [RubyOnRemote](https://rubyonremote.com) \u003c!-- https://styles.redditmedia.com/t5_7xqhrm/styles/communityIcon_pjfyocxjx1ja1.png --\u003e\n  - [Welcome to the Jungle](https://www.welcometothejungle.com) \u003c!-- https://letslearnruby.com/images/welcome-to-the-jungle.jpg --\u003e\n  \u003c!-- Of unverified usefulness:\n  - https://railshotwirejobs.com\n  - https://weworkremotely.com/remote-jobs/search?term=ruby\n  - https://remoteok.com/remote-ruby-jobs?order_by=date\n  - for behavioral and system interview prep: https://www.hellointerview.com\n  --\u003e\n\n## Foundations\n\nIn addition to the topics below, it's also good to know the basic workings of the Internet and the Web. Resources for that are listed in [my \"Learn Computer Science\" list](https://github.com/fpsvogel/learn-cs#networking--the-web).\n\n### SQL and databases\n\n\u003c!-- - [ ] [SQL Noir](https://www.sqlnoir.com/) (WIP, only 6 cases so far) --\u003e\n- [x] [SQL Teaching](https://www.sqlteaching.com) \u003c!-- https://www.sqlteaching.com/database.png --\u003e\n- [x] [SQLBolt](https://sqlbolt.com) \u003c!-- https://letslearnruby.com/images/sql-bolt.png --\u003e\n- [x] [Select Star SQL](https://selectstarsql.com) \u003c!-- https://selectstarsql.com/imgs/favicon-256.png --\u003e\n- [x] [SQL Practice](https://www.sql-practice.com/) \u003c!-- https://cdn-icons-png.flaticon.com/512/4299/4299956.png --\u003e\n- [x] [PostgreSQL Exercises](https://pgexercises.com/) \u003c!-- https://opengraph.githubassets.com/5dc8f962a8ff3a00a68a35d74a38b117b653d05e8891b85360df152f6755b4b9/AlisdairO/pgexercises --\u003e\n- [x] [Next-Level Database Techniques for Developers](https://sqlfordevs.com/ebook) \u003c!-- https://sqlfordevs.com/build/assets/ebook-BaM0l9I6.png --\u003e\n- [x] [Use the Index, Luke!](https://use-the-index-luke.com/sql/preface) \u003c!-- https://use-the-index-luke.com/static/util_squirrel.og.fMeqdSQq.png --\u003e\n\u003c!-- - [ ] [Advent of SQL](https://adventofsql.com/) (extra practice doesn't feel necessary at this point) \u003c!-- https://letslearnruby.com/images/aoc.png --\u003e\n\n### Git\n\n- [x] [Oh My Git!](https://ohmygit.org/) or [Learn Git Branching](https://learngitbranching.js.org/) \u003c!-- https://ohmygit.org/assets/images/oh-my-git.png --\u003e\n- [x] [Oh Shit, Git!?!](https://ohshitgit.com/) or for more detail, [Git Flight Rules](https://github.com/k88hudson/git-flight-rules) \u003c!-- https://upload.wikimedia.org/wikipedia/commons/5/50/Fxemoji_u2049.svg --\u003e\n- [x] [Git Katas](https://github.com/eficode-academy/git-katas)\n- [x] [The Git Parable](https://youtube.com/watch?v=ANNboouhNHE) \u003c!-- https://i.ytimg.com/vi/jm7QsI-nNjk/hqdefault.jpg --\u003e\n\u003c!-- - **Git internals:**\n  - [ ] [Git from the Bottom Up](https://jwiegley.github.io/git-from-the-bottom-up/)\n  - [ ] [thoughtbot - Rebuilding Git in Ruby](https://thoughtbot.com/blog/rebuilding-git-in-ruby)\n  - [ ] Others: [1](https://wyag.thb.lt), [2](https://www.leshenko.net/p/ugit), [3](https://tonystr.net/blog/git_immitation)\n  - [ ] 💲[Building Git](https://shop.jcoglan.com/building-git)\n  - [ ] [\"Git Internals\" chapter of Pro Git](https://git-scm.com/book/en/v2/Git-Internals-Plumbing-and-Porcelain) \u003c!-- https://m.media-amazon.com/images/I/417jkTBWA3L._SX342_SY445_PQ78_.jpg --\u003e\n\n## Front end\n\n### CSS\n\n\u003c!-- https://github.com/micromata/awesome-css-learning --\u003e\n- [x] [CSS Nouveau](https://www.spicyweb.dev/css-nouveau/1-vanilla-has-never-tasted-so-hot/) \u003c!-- https://letslearnruby.com/images/spicy-web.png --\u003e\n- [ ] [Modern CSS](https://modern-css.com/)\n- [ ] 💲[Every Layout](https://every-layout.dev/)\n\n### JavaScript\n\n- **Basics:**\n  - [x] [Exploring JavaScript](https://exploringjs.com/js/) or [MDN - JavaScript](https://developer.mozilla.org/en-US/docs/Web/JavaScript) \u003c!-- https://exploringjs.com/js/img/cover-homepage.jpg --\u003e\n  - [x] [Modern JavaScript Explained For Dinosaurs](https://peterxjang.com/blog/modern-javascript-explained-for-dinosaurs.html) plus [MDN - import maps](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script/type/importmap) \u003c!-- https://peterxjang.com/img/1__H8PH__HaV43gZyBJz0mJHxA.png --\u003e\n  - [x] [What the heck is the event loop anyway?](https://youtube.com/watch?v=8aGhZQkoFbQ) \u003c!-- https://i.ytimg.com/vi/8aGhZQkoFbQ/maxresdefault.jpg --\u003e\n  - [x] [The Modern JavaScript Tutorial - Browser: Document, Events, Interfaces](https://javascript.info/ui) \u003c!-- https://javascript.info/img/site_preview_en_512x512.png --\u003e\n- **Web components:**\n  - [ ] [Lit docs](https://lit.dev/docs/)\n  - [ ] [Lit - Learn](https://lit.dev/learn/)\n  - [ ] [Open Web Components (Lit) - Codelabs](https://open-wc.org/guides/developing-components/codelabs/) and [Code Examples](https://open-wc.org/guides/developing-components/code-examples/)\n  - [ ] [Google - From Web Component to Lit Element](https://codelabs.developers.google.com/codelabs/the-lit-path) and [Lit for React Developers](https://codelabs.developers.google.com/codelabs/lit-2-for-react-devs)\n  - [ ] Explore source code of [Heartml Reciprocate](https://thathtml.blog/2025/09/reciprocate-reactivity-for-html-web-components/), [QuietUI](https://quietui.org/), [Web Awesome](https://webawesome.com/)\n- **Other vanilla JS:**\n  - [ ] Signals: [Ryan Carniato explains JavaScript Signals](https://www.youtube.com/watch?v=l-0fKa0w4ps), [alien-signals](https://github.com/stackblitz/alien-signals), [Preact Signals](https://github.com/preactjs/signals)\n  - [ ] [Declarative HTML binding with Signals](https://thathtml.blog/2025/08/declarative-html-binding-with-signals/)\n  - [ ] [nimble-html](https://thathtml.blog/2025/10/nimble-html-adds-great-dx-to-ui-components/)\n- **Build your own front-end framework:**\n  - [ ] General: [Let's learn how modern JavaScript frameworks work by building one](https://nolanlawson.com/2023/12/02/lets-learn-how-modern-javascript-frameworks-work-by-building-one/), [Frontend framework](https://mfrachet.github.io/create-frontend-framework/), 💲[Build a Frontend Web Framework](https://www.manning.com/books/build-a-frontend-web-framework-from-scratch)\n  - [ ] React: [Implementing React From Scratch](https://www.rob.directory/blog/react-from-scratch), [Build your own React](https://pomb.us/build-your-own-react/), [Creating Our Own React From Scratch](https://itnext.io/creating-our-own-react-from-scratch-82dd6356676d), [Let's build a React from scratch](https://geekpaul.medium.com/lets-build-a-react-from-scratch-part-1-virtualdom-and-renderer-14f4f716de62)\n  - [ ] Other frameworks: [Building AlpineJS](https://laracasts.com/series/building-alpinejs), [Create Your Own Vue.js From Scratch](https://dev.to/themarcba/coding-a-vue-js-like-framework-from-scratch-part-1-introduction-3nbf), [A Hands-on Introduction to Fine-Grained Reactivity](https://dev.to/ryansolid/a-hands-on-introduction-to-fine-grained-reactivity-3ndf) and [SolidJS: Reactivity to Rendering](https://angular.love/solidjs-reactivity-to-rendering), [Compile Svelte 5 in your head](https://lihautan.com/compile-svelte-5-in-your-head)\n  \u003c!-- maybe:\n    \u003c!-- -\tincomplete: [Effectual JS](https://dttw.tech/posts/WPLtwgai6)\n    \u003c!-- - incomplete: [how to build your own JS framework](https://mikeguoynes.medium.com/part-1-build-your-own-js-framework-from-scratch-f4e35d0dffa6)\n    \u003c!-- - too basic: [Let's Build a Custom JavaScript Framework](https://medium.com/@lfoster49203/lets-build-a-custom-javascript-framework-97a01080d1bb)\n    \u003c!-- - too specific?: [Client Side Routing](https://jessedit.netlify.app/blog/client-side-routing), https://www.freecodecamp.org/news/learn-javascript-reactivity-build-signals-from-scratch, https://newsletter.unstacked.dev/p/dev-101-custom-javascript-signals\n  --\u003e\n- **TypeScript:**\n  \u003c!-- https://github.com/itsdouges/awesome-typescript-ecosystem --\u003e\n  - [x] [Total TypeScript VS Code extension](https://www.totaltypescript.com/vscode-extension) \u003c!-- https://mattpocock.gallerycdn.vsassets.io/extensions/mattpocock/ts-error-translator/0.10.1/1694612358825/Microsoft.VisualStudio.Services.Icons.Default --\u003e\n  - [x] [Total TypeScript essentials](https://www.totaltypescript.com/books/total-typescript-essentials/kickstart-your-typescript-setup) \u003c!-- https://res.cloudinary.com/total-typescript/image/upload/v1676015688/core-volume_2x_wt7jnc.png --\u003e\n  - [ ] [The TypeScript Handbook](https://www.typescriptlang.org/docs/handbook/intro.html)\n  - [ ] [The Concise TypeScript Book](https://gibbok.github.io/typescript-book/book/the-concise-typescript-book/)\n  - [ ] [Execute Program - TypeScript courses](https://www.executeprogram.com/courses/typescript)\n  - [ ] [Official docs](https://www.typescriptlang.org/)\n  - [ ] [Tackling TypeScript](https://exploringjs.com/tackling-ts/index.html)\n  - [ ] [Type Challenges](https://tsch.js.org/)\n  - [ ] [TypeHero](https://typehero.dev/)\n  - [ ] Type | Treat [2020](https://dev.to/typescript/type-treat-challenge-1-829), [2021](https://devblogs.microsoft.com/typescript/type-treat-2021-day-1/)\n  - [ ] [Codeless Code - posts on TypeScript](https://code.lol/tags/typescript/) e.g. [Higher Kinded Types in TypeScript](https://code.lol/post/programming/higher-kinded-types/) and [Point-free Programming via HKTs](https://code.lol/post/programming/hkt-tacit/)\n  - [ ] TypeScript libraries: [TS-Pattern](https://github.com/gvergnaud/ts-pattern), [Zod](https://github.com/colinhacks/zod), [type-fest](https://github.com/sindresorhus/type-fest), [Effect](https://effect.website/)\n  - [ ] 💲[TypeScript Cookbook](https://typescript-cookbook.com/)\n  - [ ] 💲[Effective TypeScript](https://effectivetypescript.com/)\n  - [ ] [Google TypeScript Style Guide](https://google.github.io/styleguide/tsguide.html) and [TypeScript Style Guide](https://mkosir.github.io/typescript-style-guide/)\n- **New web APIs:**\n  - [View Transitions](https://developer.mozilla.org/en-US/docs/Web/API/View_Transition_API) \u003c!-- https://upload.wikimedia.org/wikipedia/commons/9/98/MDN_Web_Docs.svg --\u003e\n  - [Speculation Rules](https://developer.mozilla.org/en-US/docs/Web/API/Speculation_Rules_API) \u003c!-- https://upload.wikimedia.org/wikipedia/commons/9/98/MDN_Web_Docs.svg --\u003e\n  - [Invoker Commands](https://developer.mozilla.org/en-US/docs/Web/API/Invoker_Commands_API) \u003c!-- https://upload.wikimedia.org/wikipedia/commons/9/98/MDN_Web_Docs.svg --\u003e\n  - [Popover](https://developer.mozilla.org/en-US/docs/Web/API/Popover_API) \u003c!-- https://upload.wikimedia.org/wikipedia/commons/9/98/MDN_Web_Docs.svg --\u003e\n  - [IntersectionObserver](https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API) \u003c!-- https://upload.wikimedia.org/wikipedia/commons/9/98/MDN_Web_Docs.svg --\u003e\n\n\u003c!-- TypeScript curiosities:\n  - https://www.learningtypescript.com/articles/extreme-explorations-of-typescripts-type-system\n  - https://mattrickard.com/typescript-type-system-hacks\n--\u003e\n\n\u003c!-- - [Alpine.js](https://alpinejs.dev/). Add [Alpine AJAX](https://alpine-ajax.js.org/) for functionality like i-html/htmx. \u003c!-- https://avatars.githubusercontent.\ncom/u/59030169?s=400 --\u003e\n  \u003c!-- Other Alpine plugins:\n        \"Plugins\" nav section at https://alpinejs.dev/start-here\n        https://github.com/markmead/alpinejs-form-validation\n        https://github.com/0wain/alpinejs-requests\n        https://github.com/ryangjchandler/alpine-clipboard\n        https://github.com/marcreichel/alpine-autosize\n        https://github.com/marcreichel/alpine-auto-animate\n        https://github.com/mvolkmann/alpine-plugins --\u003e\n  \u003c!-- Alpine reads:\n        https://awesomealpine.com\n        https://lobste.rs/s/nx57oo/why_i_switched_from_htmx_datastar#c_gjzjag\n  --\u003e\n\n### Usability\n\n- [ ] [Vercel - Web Interface Guidelines](https://vercel.com/design/guidelines)\n- [ ] [Laws of UX](https://lawsofux.com/articles/)\n- [x] 💲[Don't Make Me Think](https://sensible.com/dont-make-me-think/) \u003c!-- https://m.media-amazon.com/images/I/51sdCuqMwWL._AC_UF1000,1000_QL80_.jpg --\u003e\n- [x] 💲[The Design of Everyday Things](https://www.nngroup.com/books/design-everyday-things-revised/) \u003c!-- https://m.media-amazon.com/images/I/416Hql52NCL.jpg --\u003e\n- [x] [Victor Ponamariov - 100 UI/UX Tips](https://vpon.me/hundred) \u003c!-- https://optim.tildacdn.one/tild6639-3864-4563-a666-623739336438/-/resize/640x/-/format/webp/Group_18_Copy.png.webp --\u003e\n- [ ] 💲[User Interface Design: A Software Engineering Perspective](https://www.amazon.com/dp/0321181433)\n\n### Accessibility\n\n- [ ] [Accessibility Developer Guide](https://www.accessibility-developer-guide.com/)\n- [ ] [MDN - Accessibility](https://developer.mozilla.org/en-US/docs/Learn/Accessibility) or [web.dev - Learn Accessibility](https://web.dev/learn/accessibility/)\n- [ ] [Responsible Web Applications](https://responsibleweb.app/)\n- [ ] 💲[Inclusive Components](https://book.inclusive-components.design/)\n- [ ] [RailsConf talks on accessibility](https://www.youtube.com/results?search_query=railsconf+accessibility)\n- [ ] Examples of accessible components: [Deque University Code Library](https://dequeuniversity.com/library/), [Scott O'Hara's Accessible Components](https://github.com/scottaohara/accessible_components)\n\n### Web standards\n\nReferences for when you want to stick to native Web technologies and patterns.\n\n- [Plain Vanilla](https://plainvanillaweb.com/index.html) \u003c!-- https://letslearnruby.com/images/plain-vanilla.png --\u003e\n- [Under-Engineered Patterns](https://adrianroselli.com/2023/05/under-engineered-patterns-for-wcbuf.html) \u003c!-- https://adrianroselli.com/wp-content/uploads/2022/08/cthulhu-selfie-300x300.jpg --\u003e\n- [Stephanie Eckles - SmolCSS](https://smolcss.dev/) \u003c!-- https://smolcss.dev/smolcss.png --\u003e\n- [Stephanie Eckles - Modern CSS Solutions](https://moderncss.dev/) \u003c!-- https://moderncss.dev/img/social/home.jpeg --\u003e\n\n### Hotwire\n\n- **News:**\n  - [Hotwire Weekly](https://www.hotwireweekly.com) \u003c!-- https://assets.buttondown.email/images/1bdac043-d137-4e4f-86ef-4df5c3b34029.png --\u003e\n- **Basics:**\n  - [ ] 💲[Master Hotwire](https://masterhotwire.com/) \u003c!-- https://letslearnruby.com/images/master-hotwire.png --\u003e\n  - [ ] [30 days of Hotwire tips](https://twitter.com/ilrock__/status/1631315562390519809)\n  - [ ] [Hotwire Cheatsheet](https://cheatsheetshero.com/user/igor-kasyanchuk/930-hotwire-for-ruby-on-rails-developers-cheatsheet?ref=shortruby.com#page-3609)\n  - [ ] [Turbo 8 Cheatsheet](https://radanskoric.com/cheatsheet/)\n  - [ ] 💲[Hotwire Native for Rails Developers](https://pragprog.com/titles/jmnative/hotwire-native-for-rails-developers/) \u003c!-- https://pragprog.com/titles/jmnative/hotwire-native-for-rails-developers/jmnative-500.jpg --\u003e\n- **Turbo 8:**\n  - [ ] [Turbo 8 in 8 minutes](https://fly.io/ruby-dispatch/turbo-8-in-8-minutes)\n  - [ ] [A happier happy path in Turbo with morphing](https://dev.37signals.com/a-happier-happy-path-in-turbo-with-morphing/)\n  - [ ] [Turbo Music Drive](https://github.com/palkan/turbo-music-drive) app demonstrating upcoming features of Turbo 8, along with accompanying blog posts (pt. 1 [on morphing](https://evilmartians.com/chronicles/the-future-of-full-stack-rails-turbo-morph-drive), pt. 2 [on view transitions](https://evilmartians.com/chronicles/the-future-of-full-stack-rails-turbo-view-transitions))\n- **Reference:**\n  - [Hotwire.io](https://hotwire.io) (more extensive than [the official docs](https://hotwired.dev/)) \u003c!-- https://hotwire.io/apple-touch-icon.png --\u003e\n  - [turbo-rails \"Usage\" README section](https://github.com/hotwired/turbo-rails#usage)\n  - [thoughtbot - Hotwire examples](https://github.com/thoughtbot/hotwire-example-template/branches/all) \u003c!-- https://avatars.githubusercontent.com/u/6183?s=400 --\u003e\n  - [Betterstimulus](https://www.betterstimulus.com) \u003c!-- https://raw.githubusercontent.com/github/explore/b0f7ffc5ee5bc1b6dfc1bbc4d75dd2587a243c14/topics/stimulus/stimulus.png --\u003e\n  - [Stimulus-Use](https://stimulus-use.github.io/stimulus-use) \u003c!-- https://avatars.githubusercontent.com/u/65528542?s=400 --\u003e\n  - [Stimulus Components](https://www.stimulus-components.com/) \u003c!-- https://avatars.githubusercontent.com/u/72915408?s=400 --\u003e\n\n## Advanced Ruby and Rails\n\nSee also [my GitHub star lists](https://github.com/fpsvogel?tab=stars) for handy Ruby gems.\n\n### Advanced Ruby\n\n- **Concurrency:**\n  - [ ] [Jesse Storimer - Working with Ruby Threads](https://workingwithruby.com/wwrt/intro)\n  - [ ] [Jesse Storimer - Working with Unix Processes](https://workingwithruby.com/wwup/intro)\n  - [ ] [JP Camara - series on concurrency, parallelism and asynchronous programming in Ruby](https://jpcamara.com/2024/06/04/your-ruby-programs.html)\n  - [ ] [Ruby, Ractors, and Lock-Free Data Structures](https://iliabylich.github.io/ruby-ractors-and-lock-free-data-structures/intro.html)\n  - [ ] Explore gems: [async](https://github.com/socketry/async), [concurrent-ruby](https://github.com/ruby-concurrency/concurrent-ruby), [parallel](https://github.com/grosser/parallel)\n- **Miscellaneous:**\n  - [ ] [Blended Ruby](https://alchemists.io/books) (WIP)\n  - [ ] [Victor Shepelev (zverok) - The Ruby Reference](https://rubyreferences.github.io/rubyref/) plus [Ruby Changes](https://rubyreferences.github.io/rubychanges/3.0.html) (covering Ruby 3+). [Ruby Evolution](https://rubyreferences.github.io/rubychanges/evolution.html) is also great.\n  - [ ] [RuboCop performance rules](https://docs.rubocop.org/rubocop-performance/cops.html)\n  - [ ] 💲[Ruby Under a Microscope](https://patshaughnessy.net/2025/1/28/updating-ruby-under-a-microscope) (WIP)\n\n### Advanced Rails\n\n- **Reference:**\n  - [ ] 💲[The Rails 8 Way](https://leanpub.com/therails8way)\n  - [ ] [Rails Guides](https://guides.rubyonrails.org/)\n  - [ ] [Rails API docs](https://api.rubyonrails.org/)\n- **Rails internals:**\n  - [ ] [The Rails Companion](https://books.writesoftwarewell.com/8/rails-companion)\n  - [x] 💲[Noah Gibbs - Rebuilding Rails](https://noahgibbs.gumroad.com/l/rebuilding_rails) \u003c!-- https://public-files.gumroad.com/84806cmcnanyrmtnxfxvruodap1n --\u003e\n- **Architecture:**\n  - [x] 💲[Layered Design for Ruby on Rails Applications](https://www.packtpub.com/product/layered-design-for-ruby-on-rails-applications/9781801813785) \u003c!-- https://m.media-amazon.com/images/I/41MAUvi--4L.jpg --\u003e\n  - [ ] 💲[Maintainable Rails](https://leanpub.com/maintain-rails)\n  - [ ] 💲[Gradual Modularization for Ruby and Rails](https://leanpub.com/package-based-rails-applications) and [Gusto engineering blog posts on modularity](https://engineering.gusto.com/all?topic=modularization)\n- **Background jobs:**\n  - [x] [Sidekiq wiki](https://github.com/sidekiq/sidekiq/wiki)\n  - [x] [How does Sidekiq work?](https://www.mikeperham.com/how-sidekiq-works) \u003c!-- https://avatars.githubusercontent.com/u/124714131?s=400 --\u003e\n  - [x] 💲[Nate Berkopec - Sidekiq in Practice](https://nateberk.gumroad.com/l/sidekiqinpractice) \u003c!-- https://public-files.gumroad.com/3x0fwqyo139zgcyn5bwcdsi9jas0 --\u003e\n- **Performance:**\n  - [ ] [BigBinary - Scaling Rails series](https://www.bigbinary.com/blog/scaling-rails-series)\n  - [ ] [RorVsWild blog](https://www.rorvswild.com/blog/) is largely about performance\n  - [ ] 💲[Nate Berkopec - The Complete Guide to Rails Performance](https://www.railsspeed.com/)\n  - [ ] 💲[Nate Berkopec - The Ruby on Rails Performance Apocrypha](https://www.speedshop.co/2021/01/14/announcing-apocrypha.html)\n  - [ ] [Mature Optimization Handbook](https://carlos.bueno.org/optimization/) (not Rails-specific)\n  - [ ] 💲[Rails Scales!](https://pragprog.com/titles/cprpo/rails-scales/)\n- **PostgreSQL:**\n  - [ ] [Postgres Playground](https://www.crunchydata.com/developers/tutorials)\n  - [ ] [Yeah, Postgres can do that](https://dev.to/efertsch/series/20415)\n  - [ ] 💲[High Performance PostgreSQL for Rails](https://pragprog.com/titles/aapsql/high-performance-postgresql-for-rails/)\n  - [ ] Blog posts on Rails + Postgres: [lots on Paweł Urbanek's blog](https://pawelurbanek.com/blog), [this one at Honeybadger](https://www.honeybadger.io/blog/rails-postgresql-queries/), [this one at thoughtbot](https://thoughtbot.com/blog/advanced-postgres-performance-tips).\n  - [ ] 💲[The Art of PostgreSQL](https://theartofpostgresql.com/)\n  - [ ] 💲[PostgreSQL Query Optimization: The Ultimate Guide to Building Efficient Queries](https://link.springer.com/book/10.1007/978-1-4842-6885-8)\n  - [ ] [PostgreSQL docs](https://www.postgresql.org/docs/current/)\n- **SQLite:**\n  - [ ] 💲[SQLite on Rails](https://fractaledmind.gumroad.com/l/sqlite-on-rails)\n- **Deployment:**\n  - [ ] 💲[Josef Strzibny - Deployment from Scratch](https://deploymentfromscratch.com/)\n  - [ ] 💲[Julia Evans - How Containers Work](https://wizardzines.com/zines/containers/)\n  - [ ] [Ruby on Whales: Dockerizing Ruby and Rails development](https://evilmartians.com/chronicles/ruby-on-whales-docker-for-ruby-rails-development)\n  - [ ] 💲[The Docker Book](https://dockerbook.com/)\n  - [ ] [Using Kamal 2.0 in Production](https://rubys.github.io/kamal-in-production/)\n  - [ ] 💲[Josef Strzibny - Kamal Handbook](https://kamalmanual.com/handbook/)\n- **Miscellaneous:**\n  - [ ] [Perfecting Your Rails Forms](https://alexbarret.com/blog/2024/perfecting-your-rails-form-part-1/)\n  - [ ] 💲[Frictionless Generators](https://garrettdimon.com/products/frictionless-generators)\n\n## Miscellaneous\n\n### Community\n\n- [Awesome Ruby Blogs](https://github.com/Yegorov/awesome-ruby-blogs) for blogs, newsletters, podcasts, screencasts, and livestreams\n- [Bluesky starter packs for Ruby developers](https://blueskystarterpack.com/ruby-developers) \u003c!-- https://upload.wikimedia.org/wikipedia/commons/thumb/7/7a/Bluesky_Logo.svg/543px-Bluesky_Logo.svg.png --\u003e\n- [Discord: Ruby](https://discord.com/invite/ruby-518658712081268738) \u003c!-- https://cdn.prod.website-files.com/6257adef93867e50d84d30e2/636e0a6a49cf127bf92de1e2_icon_clyde_blurple_RGB.png --\u003e\n- [Lobsters](https://lobste.rs/) is not Ruby-specific, but it's a way to widen your horizons and the discussions are of high quality. It's like Hacker News but smaller and more focused on programming. \u003c!-- https://letslearnruby.com/images/lobsters.png --\u003e\n- [Mastodon: Ruby.social](https://ruby.social) \u003c!-- https://upload.wikimedia.org/wikipedia/commons/d/d5/Mastodon_logotype_%28simple%29_new_hue.svg --\u003e\n- Reddit: [r/ruby](https://www.reddit.com/r/ruby) and [r/rails](https://www.reddit.com/r/rails) \u003c!-- https://letslearnruby.com/images/reddit.svg --\u003e\n- [Slack: Ruby on Rails Link](https://www.rubyonrails.link/) \u003c!-- https://www.rubyonrails.link/assets/railslink-icon-10c1d749590f731efcb92fc4ffb599a6171cfd89e2eb2080b925d247060017db.png --\u003e\n\n### Ruby that is not web development\n\n- 💲[DragonRuby Game Toolkit](https://dragonruby.itch.io/dragonruby-gtk) for game development. See [their Discord](https://discord.dragonruby.org/) and [community site](https://www.dragonriders.community/). Other Ruby game libraries: [GMR](https://github.com/ColdGlassOMilk/GMR), [Gosu](https://www.libgosu.org/), [MiniGL](https://github.com/victords/minigl), [mruby-cute](https://github.com/pusewicz/mruby-cute), [Raylib Ruby](https://www.raylib-ruby.com/), [Reight](https://github.com/xord/reight), [Ruby 2D](https://www.ruby2d.com/), [Taylor](https://www.taylormadetech.dev), [TIC-80](https://tic80.com/) \u003c!-- https://img.itch.zone/aW1nLzIzNjU2MzQucG5n/original/WFWBHQ.png --\u003e\n- [Gamefic](https://gamefic.com/) for building text-based games and interactive fiction. See [Getting Started](https://gamefic.com/guides/getting-started) and [examples](https://github.com/castwide/gamefic-sdk/tree/master/examples). \u003c!-- https://gamefic.com/assets/goony-6ea3e43a0283cf3bacced44d7f9e0486f27e845415b64350481592e2c1939abf.png --\u003e\n- [SC2AI](https://sc2ai.pages.dev/) for StarCraft II botting \u003c!-- https://gitlab.com/uploads/-/system/project/avatar/60342720/logo.png?width=400 --\u003e\n- [Sonic Pi](https://sonic-pi.net/) for live music coding \u003c!-- https://avatars.githubusercontent.com/u/67760337 --\u003e\n- [Ronin](https://ronin-rb.dev/) for security development \u003c!-- https://ronin-rb.dev/images/logo.svg --\u003e\n- Scripting and text processing: [Ruby One-Liners Guide](https://learnbyexample.github.io/learn_ruby_oneliners/), [Ruby Regexp](https://learnbyexample.github.io/Ruby_Regexp), 💲[Text Processing with Ruby](https://pragprog.com/titles/rmtpruby/text-processing-with-ruby) \u003c!-- https://learnbyexample.github.io/learn_ruby_oneliners/images/ruby_oneliners.png --\u003e\n\u003c!-- Keep an eye on https://github.com/hadashiA/MRubyCS because it could enable Ruby scripting in any game engine that supports C#, though there may be a wrinkle: https://news.ycombinator.com/item?id=43467382 --\u003e\n\u003c!-- Older text-based game libraries:\n\u003c!--     https://github.com/jaywengrow/tuvi\n\u003c!--     https://github.com/MikeTaylor/scottkit\n\u003c!--     + https://github.com/MikeTaylor/scottkit/blob/master/docs/tutorial.md --\u003e\n\n### Rails codebases to study\n\nI've chosen the codebases below based on a these criteria:\n\n* Is active, with recent commits.\n* Does not use a JS framework on the front end, though I made exceptions.\n* Is well-known *or* solves a problem that's interesting to me.\n\nIf you want to explore more widely, here are other places to find open-source Ruby projects:\n\n* [Real World Rails](https://github.com/steveclarke/real-world-rails) (and [how to search through it manually](https://www.hexdevs.com/posts/massive-list-of-open-source-ruby-on-rails-applications-you-can-use-as-a-reference/))\n* [Ruby projects on CodeTriage](https://www.codetriage.com/?language=Ruby), though not all of them are Rails apps\n* [Awesome Ruby and Rails Open Source Apps](https://github.com/asyraffff/Open-Source-Ruby-and-Rails-Apps)\n\nWithout further ado…\n\n- **Small codebases:** Less than 50k lines of Ruby code.\n  - [github.com/nshki/naisho](https://github.com/nshki/naisho). \u003c2k lines. *Send personal data deletion request emails to hundreds of data brokers at once.*\n  - [github.com/carsoncole/workypad](https://github.com/carsoncole/workypad). 2k lines. *App for managing job prospecting.*\n  - [once.com/writebook](https://once.com/writebook). 3k lines. *App for publishing books to the web.* \u003c!-- https://once.com/assets/images/logo-writebook.png --\u003e\n  - [github.com/garyharan/fresh](https://github.com/garyharan/fresh) plus [github.com/garyharan/FreshAppIOS](https://github.com/garyharan/FreshAppIOS) and [github.com/garyharan/FreshAppAndroid](https://github.com/garyharan/FreshAppAndroid). 4k lines. *Dating app using Hotwire Native.*\n  - [github.com/ChaelCodes/MeetAnotherDay](https://github.com/ChaelCodes/MeetAnotherDay). 4k lines. *Helps you find and meet up with your friends at conferences.*\n  - [github.com/SpinaCMS/Spina](https://github.com/SpinaCMS/Spina). 6k lines. *CMS (Content Management System).*\n  - [github.com/eigenfocus/eigenfocus](https://github.com/eigenfocus/eigenfocus/). 5k lines. *Self-hosted project/time management app.*\n  - [github.com/basecamp/once-campfire](https://github.com/basecamp/once-campfire). 6k lines. *Self-hosted chat application similar to Slack.*\n  - [github.com/codetriage/codetriage](https://github.com/codetriage/codetriage). 6k lines. *Issue tracker for open-source projects.*\n  - [github.com/demingfactor/calagator](https://github.com/demingfactor/calagator). 9k lines. *Community calendar platform.*\n  - [github.com/rubyevents/rubyevents](https://github.com/rubyevents/rubyevents). 11k lines. *Index of Ruby events and videos.*\n  - [github.com/lookbook-hq/lookbook](https://github.com/lookbook-hq/lookbook). 11k lines. *UI development environment for Rails apps.*\n  - [github.com/thoughtbot/upcase](https://github.com/thoughtbot/upcase). 14k lines. *Learning platform for developers.*\n  - [github.com/joemasilotti/railsdevs.com](https://github.com/joemasilotti/railsdevs.com). 14k lines. *The reverse job board for Ruby on Rails developers.*\n  - [github.com/galahq/gala](https://github.com/galahq/gala). 15k lines. *Collaborative learning platform.*\n  - [github.com/CircuitVerse/CircuitVerse](https://github.com/CircuitVerse/CircuitVerse). 15k lines. *Digital logic circuit simulator. Has a Vue.js front end.*\n  - [github.com/docusealco/docuseal](https://github.com/docusealco/docuseal). 15k lines. *Open source DocuSign alternative.*\n  - [github.com/rubyforgood/homeward-tails](https://github.com/rubyforgood/homeward-tails). 15k lines. *Connects adopters/fosters with pets.*\n  - [github.com/TheOdinProject/theodinproject](https://github.com/TheOdinProject/theodinproject). 16k lines. *Main website for The Odin Project web development learning platform.*\n  - [github.com/AllYourBot/hostedgpt](https://github.com/AllYourBot/hostedgpt). 16k lines. *Self-hosted ChatGPT alternative.*\n  - [github.com/RailsEventStore/ecommerce](https://github.com/RailsEventStore/ecommerce). 17k lines. *Example app showing DDD (Domain-Driven Design), CQRS, and Event Sourcing.*\n  - [github.com/lobsters/lobsters](https://github.com/lobsters/lobsters). 18k lines. *Hacker News clone.*\n  - [github.com/maybe-finance/maybe](https://github.com/maybe-finance/maybe). 19k lines. *Personal finance app.*\n  - [github.com/rauversion/rauversion](https://github.com/rauversion/rauversion). 20k lines. *Music platform.*\n  - [github.com/ifmeorg/ifme](https://github.com/ifmeorg/ifme). 21k lines. *Mental health communication web app to share experiences with loved ones.*\n  - [github.com/openSUSE/osem](https://github.com/openSUSE/osem). 24k lines. *Event management tool tailored to Free and Open Source Software conferences.*\n  - [github.com/chicago-tool-library/circulate](https://github.com/chicago-tool-library/circulate). 26k lines. *A lending library management system.*\n  - [github.com/feedbin/feedbin](https://github.com/feedbin/feedbin). 31k lines. *RSS reader.*\n  - [github.com/AlchemyCMS/alchemy_cms](https://github.com/AlchemyCMS/alchemy_cms). 37k lines. *CMS (Content Management System).*\n  - [github.com/huginn/huginn](https://github.com/huginn/huginn). 37k lines. *Web task automation.*\n  - [github.com/rubyforgood/casa](https://github.com/rubyforgood/casa). 44k lines. *Volunteer management system for the nonprofit CASA.*\n  - [github.com/rubyforgood/human-essentials](https://github.com/rubyforgood/human-essentials). 47k lines. *An inventory management system for essentials supply banks.*\n- **Larger codebases:** More than 50k lines of Ruby code.\n  - [github.com/rubygems/rubygems.org](https://github.com/rubygems/rubygems.org). 56k lines. *Where Ruby gems are hosted.*\n  - [github.com/WikiEducationFoundation/WikiEduDashboard](https://github.com/WikiEducationFoundation/WikiEduDashboard). 59k lines. *Wikipedia course dashboard system. Has a React front end.*\n  - [github.com/chatwoot/chatwoot](https://github.com/chatwoot/chatwoot). 74k lines. *Customer engagement suite. Has a Vue.js front end.*\n  - [github.com/solidusio/solidus](https://github.com/solidusio/solidus). 98k lines. *E-commerce platform.*\n  - [github.com/alphagov/whitehall](https://github.com/alphagov/whitehall). 110k lines. *Publishes government content on [gov.uk](https://www.gov.uk/).*\n  - [github.com/mastodon/mastodon](https://github.com/mastodon/mastodon). 117k lines. *Like Twitter but self-hosted and federated.*\n  - [github.com/redmine/redmine](https://github.com/redmine/redmine). 118k lines. *Project management app.*\n  - [github.com/forem/forem](https://github.com/forem/forem). 126k lines. *Powers the blogging site [dev.to](https://dev.to/). Uses Preact on the front end.*\n  - [github.com/openfoodfoundation/openfoodnetwork](https://github.com/openfoodfoundation/openfoodnetwork). 129k lines. *An online marketplace for local food.*\n  - [github.com/decidim/decidim](https://github.com/decidim/decidim). 294k lines. *The participatory democracy framework.*\n  - [github.com/zammad/zammad](https://github.com/zammad/zammad). 299k lines. *Helpdesk/customer support system.*\n  - [github.com/antiwork/gumroad](https://github.com/antiwork/gumroad). 323k lines. *E-commerce platform.*\n  - [github.com/opf/openproject](https://github.com/opf/openproject). 479k lines. *Project management software.*\n  - [github.com/discourse/discourse](https://github.com/discourse/discourse). 514k lines. *Discussion forum platform. Has an Ember.js front end.*\n  - [github.com/instructure/canvas-lms](https://github.com/instructure/canvas-lms). 891k lines. *A popular LMS (learning management system).*\n  - [gitlab.com/gitlab-org/gitlab](https://gitlab.com/gitlab-org/gitlab). 3 million lines. *Like GitHub but with CI/CD and DevOps features built in. Uses Vue.js on the front end. Has [docs on architecture](https://docs.gitlab.com/ee/development/architecture.html).* \u003c!-- https://letslearnruby.com/images/gitlab.png --\u003e\n","created_at":"2024-11-29T18:04:28.858Z","updated_at":"2026-04-02T11:00:34.119Z","primary_language":null,"list_of_lists":false,"displayable":true,"categories":["Front end","Ruby media","Miscellaneous","Foundations","Basics","Advanced Ruby and Rails","Beyond web development","Preliminaries","Foundational tools","Rails codebases to study"],"sub_categories":["JavaScript","Podcasts","CSS","HTML and CSS basics","Community","Ruby that is not web development","SQL and databases","Rails basics","Git","Advanced Rails","Getting hired","Front-end basics","SQL","The Web","Topical screencasts","Web standards","Usability","Ruby basics","Accessibility","Hotwire","What's the best single learning resource?","Rails codebases to study","Advanced Ruby","How the Internet works","Chat / social media","\"Let's build\" screencasts","Live streams"],"projects_url":"https://awesome.ecosyste.ms/api/v1/lists/fpsvogel%2Flearn-ruby/projects"}