315 Advanced Ruby: Metaprogramming and DSLs [3d]

Ruby metaprogramming and DSL design for readable configuration, dynamic methods, and parameterized modules; weighs flexibility against maintainability and scope limitations.

316 Advanced Ruby: More metaprogramming with Modularity and ActiveSupport::Concern [2d]

Ruby method lookup, prepend, extend, and ActiveSupport::Concern shape monkey patches and virtual attribute APIs; argument forwarding and source lookup help with metaprogramming.

320 State machines [3d]

Movie submissions need moderation before publication: drafts can be reviewed, declined, or published, with visibility and validation rules changing by state.

325 Consuming external APIs with JavaScript [2d]

Build JavaScript integrations for map geocoding and gender lookup, then verify them with end-to-end tests using real or fake external APIs.

326 Consuming external APIs with Ruby [1d]

Add external movie data to MovieDB: show a random upcoming title from an XML feed and fetch new film years from The Movie Database automatically.

328 Testing JavaScript with Jasmine [1.5d]

Jasmine enables fast unit tests for JavaScript components without browser-end-to-end workflows, using mocked DOM events, timers, and HTTP requests.

335 Secure storage of file attachments [2d]

Secure file attachments need access control and upload validation to prevent unauthorized downloads and malicious content.

350 UI design basics [2.5d]

UI design basics help create clearer, more polished interfaces with better color, typography, spacing, and visual hierarchy.

353 CSS Grids [2d]

Grid layouts suit two-dimensional page structures, while Flexbox fits one-dimensional flows. display: grid can simplify card and gallery layouts and reduce wrapper elements.

355 Requirements analysis and minimum viable UIs [3d]

Requirements analysis for a web app with incomplete UI design, focused on deriving CRUD models, ER diagrams, mockups, and role-based screens from client prose.

370 Bonus: Technology choice [0.5d]

Choosing web technologies shapes long-term maintainability, upgrade effort, and team productivity. Balancing proven tools against new trends helps avoid costly stack changes.

372 Dealing with legacy applications [0.75d]

Legacy Rails apps need stability work: add safety tests, reduce setup and deployment friction, and keep improving the most failure-prone parts.

385 Rack and Middlewares

Rack middleware enables cross-cutting Rails behavior such as request handling and exception notification outside controllers.

395 Background processing [2d]

Web requests should not block on long-running or retryable work; cronjobs and Sidekiq move those tasks to background processing.

396 Internationalization (I18n) [2d]

Rails locale handling centralizes labels, formats, and error text, making apps DRY and easier to switch between languages while keeping tests manageable.

397 Rails: Sending e-mail [2d]

Validating recipients, preventing accidental sends in non-production, and improving deliverability and HTML styling keep Rails e-mail features reliable.

400 Bonus: Buzzwords and staying up to date [1d]

A broad web technology glossary helps you follow client and developer discussions and judge which trends matter in daily consultancy work. Periodic feeds, newsletters, blogs and podcasts support staying current.

910 Bonus: Rake [0.75d]

Rake tasks automate Rails maintenance and can depend on setup tasks like :environment; Capistrano uses the same DSL but not the same task system.

940 Bonus: Persisting trees [2d]

Store movie inspiration as a tree, select only valid predecessors in the form, and render the full inspiration tree efficiently with ancestry.

965 Bonus: Writing documentation

Clear project docs help engineers understand core features and technical details quickly; a strong README complements self-explanatory code and supports onboarding.

985 Modern build pipelines with Webpack [3d]

Webpacker adds ES6 modules and npm packages to Rails builds, replacing global window JavaScript and shifting asset handling from Sprockets to webpack.

990 Static site generators

Static site generators can reduce maintenance and security risk for content sites while keeping development simple. Middleman is used here as a Rails alternative for building and previewing pages.

995 Bonus: Images [1.5d]

Raster and vector image formats differ in quality, compression, and scalability; high-density displays need responsive image strategies to avoid pixelation and wasted bandwidth.