|
|
@ -0,0 +1,38 @@ |
|
|
|
|
|
# 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. |