# IKEA Foundation - Week 2026 Project This project is a Ruby on Rails application developed for the IKEA Foundation. It appears to be a multi-lingual, interactive game or educational tool ("Week 2026") where players progress through various stages, making choices or facing "chance" events. ## Key Features - **Multi-lingual Support:** Uses the `mobility` gem for translating content into numerous languages (en, zh, hr, cs, da, nl, fi, fr, fr-CA, de, hu, it, ja, ko, nb, pl, pt, ro, sr, sk, sl, es, sv, uk). - **Content Management:** A hierarchical "Node" system (using `ancestry`) for managing pages, stages, and interactive elements. - **Player Progression:** Tracks player progress, scores, and decisions across different stages. - **Interactive Stages:** Includes mechanics for "flipping" between "chance" and "choice" outcomes, sampling random results, and advancing through a sequence of stages. - **Admin Interface:** A backend for managing nodes, assets (using Active Storage), users, and translations. - **Background Jobs:** Uses `sidekiq` and `redis` for asynchronous processing. - **Search:** Integrates `pg_search` for full-text search capabilities within the node/content system. ## Technical Stack - **Framework:** Ruby on Rails 8.1.2 - **Language:** Ruby 3.4.9 - **Database:** PostgreSQL - **Asset Pipeline:** Propshaft with Importmap-rails and Stimulus/Turbo. - **Task Management:** Sidekiq with Redis. - **Styling/UI:** Custom CSS/JS (Stimulus controllers for interactivity). ## Core Models - `Node`: The central model for content, representing pages, stages, and interactive components in a tree structure. - `Player`: Represents a session/user playing the game, tracking their `progress`, `current_stage`, and `score`. - `Asset` & `Attachment`: Manage files and their association with nodes. - `User`: Handles admin authentication and roles. - `VerificationCode`: Likely used for secure admin login or two-step authentication. ## Project Structure - `app/controllers/admin/`: Admin backend logic. - `app/controllers/stages_controller.rb`: Main logic for the interactive game stages. - `app/controllers/site_controller.rb`: Logic for rendering content nodes as pages. - `config/locales/`: Translation files for all supported languages. - `db/migrate/`: Database schema evolutions.