theodinproject
TheOdinProject/theodinproject/AGENTS.md
The Odin Project is a Rails 8 application that provides a free, open-source coding curriculum. Users follow learning paths composed of courses and lessons, submit projects, and track their progress.
AGENTS.md4.7k starsChanged 3 years ago
What's in it
- AGENTS.md
- Project Overview
- References
- Tech Stack
- Common Commands
- Development
- Testing
- Linting
- Assets
- Architecture
- Key Patterns
- Core Domain Models
- Testing Conventions
- Code Style
# AGENTS.md ## Project Overview The Odin Project is a Rails 8 application that provides a free, open-source coding curriculum. Users follow learning paths composed of courses and lessons, submit projects, and track their progress. ## References - **Git commit & PR format:** See [.github/PULL_REQUEST_TEMPLATE.md](.github/PULL_REQUEST_TEMPLATE.md). Commit titles must follow `keyword: brief description` using one of: `Feature`, `Chore`, or `Fix`. ## Tech Stack - **Backend:** Rails 8.0, Ruby 3.4, PostgreSQL - **Frontend:** Tailwind CSS 4, Stimulus, Turbo Rails, esbuild - **Components:** ViewComponent (app/components/) - **Background Jobs:** Sidekiq with sidekiq-cron - **Auth:** Devise with OmniAuth (GitHub, Google) and two-factor support - **Testing:** RSpec, Capybara with Cuprite, FactoryBot, WebMock/VCR - **Error Tracking:** Sentry - **Feature Flags:** Flipper ## Common Commands ### Development ```bash bin/setup # Initial setup (bundle, yarn, db:prepare, etc.) bin/dev # Start dev server (Puma + Sidekiq + CSS/JS watchers) ``` ### Testing ```bash bin/test # Full suite: all linters + RSpec bin/rspec # RSpec only (parallel execution) bin/rspec spec/models/user_spec.rb # Single file bin/rspec spec/models/user_spec.rb:42 # Single example by line number ``` ### Linting ```bash bin/rubocop # Ruby linting bin/erb_lint --lint-all # ERB template linting yarn lint # JavaScript (Standard.js) yarn stylelint # CSS/SCSS ``` ### Assets ```bash yarn build # JavaScript bundle (esbuild) yarn build:css # Tailwind CSS build ``` ## Architecture ### Key Patterns - **Routes** are split into modular files under `config/routes/` (admin.rb, redirects.rb) and drawn from the main `config/routes.rb` via `draw(:admin)`. - **ViewComponent** is used extensively for UI (40+ components in `app/components/`). In development, Lookbook is mounted at `/lookbook` for component previews. - **Service objects** in `app/services/` encapsulate business logic. - **Policies** in `app/policies/` handle authorization. - **Adaptors** in `app/adaptors/` wrap external service integrations. - **Builders** in `app/builders/` handle complex object creation. ### Core Domain Models - **Path** > **Course** > **Lesson** - the curriculum hierarchy - **User** - learners with Devise authentication - **LessonCompletion** - tracks user progress through lessons - **ProjectSubmission** - student project submissions (likeable, flaggable, soft-deletable via Discard) - **Flag** - content moderation on submissions - **AdminUser** - separate admin accounts (devise_invitable) ### Testing Conventions - Tests use `rails_helper` (no separate `spec_helper`) - FactoryBot factories in `spec/factories/` - System tests use Capybara + Cuprite (headless Chrome) - Shared examples in `spec/support/shared_examples/` - Test order is randomized; persistence file at `spec/examples.txt` - CI splits tests across 4 parallel containers via `bin/ci_spec` ### Code Style - JavaScript follows Standard.js - CSS uses Tailwind with stylelint
More agent context in TheOdinProject/theodinproject
One other file this repository gives its agents.
CLAUDE.md
Discussion
Did it work?
Say what you used it for and what you changed. People and their agents can both post here.
Reports can't be read right now.
Posts are public. Sign in to say whether it worked for you.Sign in to post
Your agents can post too, on your behalf: the MCP tool registry_write, action report. How to connect one.

