205 Basic file uploads and image versions [2d]

ActiveRecord-style file uploads with image resizing, cropping, validation, caching, and forced downloads for movie posters in Rails using CarrierWave.

210 Cucumber in depth [2d]

Advanced Cucumber features, cucumber_factory, and DRY scenario design help reduce duplicated step definitions and improve maintainability.

215 Browser automation with Capybara and Selenium WebDriver [2d]

Real-browser integration tests with Capybara and Selenium often become flaky because of driver differences, JavaScript dialogs, cookies, downloads, and browser state.

224 Advanced git [2d]

Advanced Git workflows for rewriting history, splitting commits, rebasing branches, and handling remote pushes, conflicts, and recovery after mistakes.

225 Event bubbling and delegation [1.5d]

Event bubbling and delegation reduce handler count while affecting propagation control and dynamically created elements. stopPropagation(), stopImmediatePropagation() and preventDefault() behave differently.

230 Unobtrusive JavaScript components [3d]

Reusable JavaScript components need clear scope, multiple instances, dynamic activation, and cleanup to avoid brittle page-specific behavior.

235 Cookies and Rails Sessions [1d]

Cookies and Rails sessions differ in scope, lifetime, and security properties. Signed, encrypted, and SameSite cookies shape how state survives requests and browser storage.

237 Web application security [4d]

Web application security centers on common attack vectors, Rails protections, dependency checks, and HTTPS limits for preventing XSS, CSRF, SQL injection, and session theft.

240 Authentication [3d]

User identity verification in Rails needs secure session handling and password storage; Clearance or Devise avoid custom authentication pitfalls while supporting sign-in, sign-out, and protected pages.

245 Authorization [2.5d]

Fine-grained access control in Rails can depend on role, ownership, and per-resource permissions. Consul and assignable_values help model custom authorization rules and restricted choices in forms.

247 Nested forms [2d]

Rails nested attributes keep child records in one transaction, while form helpers encode names so additions, removals, and ignored blank entries map correctly.

250 Form models [2d]

Form models separate user-facing input handling from domain models, especially for sign-up, login, and merge screens. They help manage validation and interaction-specific code without overloading ActiveRecord.

255 Parsing text with regular expressions [1d]

Regular expressions can extract structured data from simple Ruby code, including class names, superclasses, and methods, when a full parser would be overkill.

260 Network basics [0.5d]

Web requests depend on HTTP, TLS, DNS and routing; headers, certificates and name resolution determine how browsers reach and secure sites.

270 More Software design [2d]

Software design review topics focus on code smells, technical debt, and architecture antipatterns in existing repos such as Cards and MovieDB.

275 The HTML5 platform [1.5d]

Browser support varies for HTML, CSS, and JavaScript features; older Safari lags, and BrowserStack, feature detection, transpilation, and polyfills help keep apps working.

285 Frontend build pipelines in Rails [3d]

Rails frontend asset systems differ in bundling, fingerprinting, package support, and postprocessing; esbuild is the current preferred approach, while Sprockets and Webpacker remain relevant in older apps.

287 The asset pipeline [1d]

Rails serves stylesheets, JavaScript, and images through the asset pipeline, with preprocessing, bundling, minification, and fingerprinting needed for production caching.

288 50% Milestone

Halfway through the curriculum deck, with foundational stack basics complete and a transition into advanced topics plus repetition reminders for retention.

290 Structuring CSS with the BEM pattern [4d]

BEM brings consistent, reusable CSS structure to new and legacy projects, making block-based styling easier to maintain and reuse across screens.

295 Advanced JavaScript [2.5d]

ES6+ JavaScript requires solid understanding of prototypes, modules, equality, closures, and let/const to read and write more complex code correctly.

300 JavaScript: Writing asynchronous code [2.5d]

Asynchronous JavaScript avoids blocking the event loop and is essential for network requests, animations, and error handling; Promises, async/await, and callbacks shape control flow.

301 Using external JavaScript libraries [1.5d]

Browser apps often need third-party UI and utility libraries; choosing maintained, lightweight packages with compatible dependencies avoids bloat and integration problems.

305 Internal APIs and client-side rendering

Server-rendered search results and client-side rendering patterns for a movie list, shifting from HTML snippets to JSON and safe DOM construction.