finds.dev← search

// the find

TheOdinProject/theodinproject

★ 4,477 · Ruby · MIT · updated Jun 2026

Main website for The Odin Project

The website powering theodinproject.com — a free, structured curriculum for learning full-stack web development. This is the Rails app that tracks user progress, hosts lesson content (pulled from a separate curriculum repo), and handles project submissions and community features. Not the curriculum itself, just the delivery vehicle.

- ViewComponent is used consistently across the UI — sidebar, cards, charts, notifications all have dedicated component classes with paired templates, which keeps the view layer from becoming a mess of partials

- Stimulus controllers are scoped tightly to their components (sidebar_toggle_controller.js lives next to the sidebar component), so the JS surface is small and auditable without a build pipeline that fights you

- CI/CD and contributing infrastructure is solid — issue templates cover bug/chore/feature separately, dependabot is configured, and there are linting rules for Ruby (RuboCop), ERB, and CSS all enforced in CI

- The admin section is properly namespaced with its own base controller, separate session handling, and 2FA support — not bolted on as an afterthought

- Heroku-specific deployment artifacts are baked in (.slugignore, .slugcleanup, heroku-review-app workflow) — migrating off Heroku would require more than just pointing at a new host

- The actual curriculum content lives in a separate repo and gets pulled in; if you want to run a fork with modified lessons, you're maintaining two repos and wiring them together yourself

- The API surface appears minimal (one points endpoint visible in the directory), so if you wanted to build a mobile client or external tooling against lesson/progress data, there's almost nothing there

- No evidence of background job infrastructure in the directory tree — for a site with webhooks (github/webhooks_controller.rb) and notifications, the absence of a visible job queue setup (Sidekiq config, etc.) is a gap worth investigating before contributing anything async

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →