Skip to content
CAI
Software that uses CAICheck a score

2d-inc/HistoryOfEverything

45.5

Weak · 23 September 2026

5.6k

lines of production code

Dart

primary language

5

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a cross-platform mobile application designed for exploring historical and scientific knowledge through an interactive timeline. It allows users to browse eras, search for specific topics, and read detailed articles with markdown support. The app features animated character interactions, a favorites management system for saving content, and a unified codebase supporting both Android and iOS platforms.

Features

Add FavoritesBloc for managing and persisting user favorites

A new FavoritesBloc class has been introduced to handle the logic for storing, retrieving, and persisting user favorites. This component manages a list of TimelineEntry objects, utilizing the shared\_preferences library to save and load favorites across app restarts. It provides methods to add and remove favorites, automatically sorting them by start time, and ensures data is persisted to disk.

app/lib/blocs · high confidence

Added full-quality article content for the knowledge base

Added a new 'full\_quality' directory containing over 30 new text files in the 'Articles' subdirectory. These files provide detailed, high-quality encyclopedic content on a wide range of topics, including history (e.g., World War I, Cold War), science (e.g., Big Bang, Dinosaurs), biographies (e.g., Marie Curie, Nelson Mandela), and general knowledge (e.g., Animals, Internet). This expands the available reference material for users seeking in-depth information.

_app/full\quality, tools · high confidence

Added interactive animation controllers for article pages

Introduced new controller classes to enable touch-based interactivity for animated characters in the Amelia and Newton article pages. The diff adds \FlareInteractionController\ and \NimaInteractionController\ abstract base classes, along with concrete implementations (\AmeliaController\ and \NewtonController\) that handle touch input to drive specific animation nodes (face elements and tree trunk, respectively). This change implements the logic required to map user touch coordinates to in-game object movements, allowing users to interact with the animations on these specific pages.

app/lib/article/controllers · high confidence

Added new historical and scientific articles to the timeline

The app now includes a new set of informational articles covering topics such as the Big Bang, dinosaurs, World War I and II, and various historical figures and events. These articles provide deeper context for the timeline, allowing users to read about specific events and subjects directly from the app.

app/assets · high confidence

Article view with markdown support

The app now displays articles using a new ArticleWidget that renders markdown content via the flutter\_markdown package. The view includes a header with title and subtitle, a scrollable column containing the TimelineEntryWidget for interactive animations, and the formatted article text. The widget also supports favoriting articles and handles device padding for proper layout.

app/lib/article · high confidence

Initial Android project scaffolding and configuration

The Android portion of the app has been initialized with standard Flutter scaffolding, including the AndroidManifest.xml defining the app package, launcher activity, and internet permissions, alongside the MainActivity Java class that registers Flutter plugins. A white launch splash screen and corresponding styles are configured, and the project is set up with Gradle 4.4 for the Android build system.

app/android · high confidence

Introduce interactive timeline with animated entries and era-based styling

Users can now browse a fully interactive timeline featuring animated assets (Flare and Nima), clickable bubbles that navigate to article pages, and a favorites sidebar. The timeline dynamically adjusts its background colors and header styling based on the current era, and supports pinch-to-zoom, long-press zooming, and smooth scrolling with momentum.

app/lib/timeline · high confidence

Introduce main menu, search, and favorites features

The app now features a main menu with three expandable sections, each containing links to timeline entries. A search bar allows users to find specific events, with results displayed as a list of thumbnails and titles. Users can also view their saved favorites, which are stored in the app's state. The about page provides information about the app, including links to the developers and tools used. Additionally, the main menu includes a share button and a favorites button that navigates to the favorites page.

_app/lib/main\menu · high confidence

Introduces core app infrastructure and search capabilities

The application now initializes with a \BlocProvider\ that loads the timeline data and favorites state, making them accessible throughout the widget tree. A new \SearchManager\ is introduced, which pre-processes all timeline entry labels into a substring index to enable efficient search queries. Additionally, a \colors.dart\ file defines the app's visual theme, including specific colors for text, background, and the favorites gutter accent.

app/lib · high confidence

iOS app launch and configuration files added

The iOS native project files for the app have been added, including the main entry point, application delegate, and storyboard layouts. The app's display name is set to 'History' in the Info.plist, and the app icon assets are configured for iPhone and iPad across multiple resolutions.

app/ios/Runner · high confidence

Behavioural changes

iOS build configuration and workspace structure added

The iOS build configuration files (AppFrameworkInfo.plist, Debug.xcconfig, Release.xcconfig) and the Xcode workspace structure (contents.xcworkspacedata, WorkspaceSettings.xcsettings) have been added to the app directory. These changes establish the necessary metadata and build settings for the Flutter iOS target, ensuring the app can be built and linked with its dependencies.

app/ios/Flutter, app/ios/Runner.xcworkspace · high confidence

iOS build configuration updated

The iOS project configuration has been updated, including the addition of a profile build target and adjustments to the Xcode scheme for building and archiving the Runner application.

app/ios/Runner.xcodeproj · medium confidence

Test coverage

Added initial widget test scaffold

Added a new widget test file (widget\_test.dart) containing a basic empty test case using the Flutter WidgetTester utility, establishing the foundation for future widget interaction tests.

app/test · high confidence

Dependencies

Added Flare and Nima Flutter dependencies

The project now includes Flare and Nima as submodules, enabling the use of Flare and Nima animation libraries in the Flutter application. This allows for the integration of vector animations and interactive graphics into the app's UI.

dependencies · high confidence

Initial Flutter project configuration and dependency setup

This change introduces the foundational build configuration for the Android and iOS platforms, along with the Dart package dependencies for the application. It adds the \app/android/app/build.gradle\ and \app/android/build.gradle\ files to configure the Android build system, including SDK versions and dependencies like JUnit and Espresso for testing. For iOS, it adds a \Podfile\ to manage CocoaPods dependencies, specifically linking Flutter and plugin pods. The \app/pubspec.yaml\ file defines the app's metadata, including the \nima\ and \flare\_flutter\ libraries for animations, as well as other dependencies like \flutter\_markdown\, \share\, and \url\_launcher\. Additionally, it includes the \tools/pubspec.yaml\ and \tools/pubspec.lock\ files, which specify the \image\ package and its transitive dependencies.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 46 → 46 (-0.3)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 93 → 72 (-21.1)
  • Architecture 100 → 96 (-4.1)
  • Maturity 34 → 45 (+11.5)
  • Readiness 22 → 22 (+0.0)
  • Security 98 → 98 (+0.5)
  • Domain Modelling 100 → 100 (+0.0)

Resolved (7)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • High CVE: [GHSA redacted] (tools/pubspec.lock)
  • No exposed public API
  • Test reliability not included
  • complexity unreadable for .dart, .java — churn × complexity hotspots could not be measured
  • dormant codebase — no living knowledge left to concentrate

New (52)

  • ClassTooLong: Timeline (app/lib/timeline/timeline.dart)
  • ClassTooLong: TimelineRenderObject (app/lib/timeline/timeline_render_widget.dart)
  • Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
  • Documentation: no architecture or design documentation (README.md)
  • Duplicated block (12–13 lines × 2) (app/lib/main_menu/about_page.dart)
  • Duplicated block (14 lines × 2) (app/lib/timeline/timeline_render_widget.dart)
  • Duplicated block (17 lines × 3) (app/lib/main_menu/main_menu.dart)
  • Duplicated block (23–28 lines × 2) (app/lib/timeline/timeline_render_widget.dart)
  • Duplicated block (40–42 lines × 4) (app/lib/timeline/timeline_render_widget.dart)
  • Duplicated block (8–11 lines × 2) (app/lib/timeline/timeline_render_widget.dart)
  • Duplicated block (8–14 lines × 2) (app/lib/timeline/timeline_render_widget.dart)
  • Duplicated block (9 lines × 4) (app/lib/timeline/timeline_render_widget.dart)
  • High CVE: [GHSA redacted] (tools/pubspec.lock)
  • Hotspot: app/lib/article/timeline_entry_widget.dart (app/lib/article/timeline_entry_widget.dart)
  • Low cohesion: MenuVignetteRenderObject (LCOM4 4) (app/lib/main_menu/menu_vignette.dart)
  • Low cohesion: _TimelineWidgetState (LCOM4 5) (app/lib/timeline/timeline_widget.dart)
  • MenuData.loadFromBundle (cognitive 54) (app/lib/main_menu/menu_data.dart)
  • MenuVignetteRenderObject.beginFrame (cognitive 33) (app/lib/main_menu/menu_vignette.dart)
  • MenuVignetteRenderObject.beginFrame (cyclomatic 18) (app/lib/main_menu/menu_vignette.dart)
  • MenuVignetteRenderObject.paint (cognitive 16) (app/lib/main_menu/menu_vignette.dart)
  • …and 32 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

2d-inc/HistoryOfEverything was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 23 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 1864cfb7f2e6e045733d034fdc067e6e4f0c7d1c — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-955b9cee9818.