LearnNewsExamplesServices
Frontmatter
id9147
titleRefactor Contributor Model: CamelCase & New Schema Sync
stateClosed
labels
enhancementairefactoring
assigneestobiu
createdAtFeb 13, 2026, 3:47 PM
updatedAtFeb 13, 2026, 3:55 PM
githubUrlhttps://github.com/neomjs/neo/issues/9147
authortobiu
commentsCount1
parentIssue9106
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtFeb 13, 2026, 3:55 PM

Refactor Contributor Model: CamelCase & New Schema Sync

Closed v12.0.0 enhancementairefactoring
tobiu
tobiu commented on Feb 13, 2026, 3:47 PM

Refactor the DevIndex.model.Contributor class to adhere to Neo.mjs coding conventions (camelCase) and synchronize with the latest backend schema changes.

Objective: Eliminate snake_case fields (technical debt) and expose new data points (heuristics, metadata) to the frontend.

Changes:

  1. Rename Fields:

    • total_contributions -> totalContributions
    • country_code -> countryCode
    • first_year -> firstYear
    • last_updated -> lastUpdated
    • linkedin_url -> linkedinUrl
    • total_commits -> totalCommits
  2. Add New Fields:

    • heuristics (mapping: hm, type: Object, default: null)
    • isHireable (mapping: h, type: Boolean, default: false)
    • hasSponsors (mapping: s, type: Boolean, default: false)
    • topRepo (mapping: tr, type: Array, default: null)
    • privateContributions (mapping: py, type: Array, default: [])
    • twitter (mapping: t, type: String, default: null)
    • website (mapping: w, type: String, default: null)
  3. Update References:

    • apps/devindex/view/home/GridContainer.mjs (sorters, renderers)
    • apps/devindex/view/home/ControlsContainer.mjs (filters)
    • apps/devindex/store/Contributors.mjs (sorters)
    • apps/devindex/services/LocationNormalizer.mjs (if referenced)

Safety: Ensure all new fields handle undefined values gracefully to support the rolling update of users.jsonl.

tobiu added the enhancement label on Feb 13, 2026, 3:47 PM
tobiu added the ai label on Feb 13, 2026, 3:47 PM
tobiu added the refactoring label on Feb 13, 2026, 3:47 PM
tobiu added parent issue #9106 on Feb 13, 2026, 3:47 PM
tobiu referenced in commit 92254f2 - "refactor(devindex): CamelCase Model & Schema Sync (#9147) on Feb 13, 2026, 3:54 PM
tobiu
tobiu Feb 13, 2026, 3:54 PM

Input from Gemini 3 Pro:

✦ Refactored DevIndex.model.Contributor and associated Views to use camelCase and sync with the new backend schema.

Changes:

  1. Model (Contributor.mjs):

    • Renamed total_contributions -> totalContributions
    • Renamed country_code -> countryCode
    • Renamed first_year -> firstYear
    • Renamed last_updated -> lastUpdated
    • Renamed linkedin_url -> linkedinUrl
    • Renamed commits_array -> commitsArray
    • Renamed total_commits -> totalCommits
    • Added heuristics (hm), isHireable (h), hasSponsors (s), topRepo (tr), privateContributions (py), twitter (t), website (w).
  2. Store (Contributors.mjs):

    • Updated sorters and filters to use new camelCase names.
  3. Views (GridContainer.mjs, ControlsContainer.mjs):

    • Updated column dataField references.
    • Updated filter name references.
    • Updated onSortColumn interception logic.

Verification:

  • Country filter logic in ControlsContainer updated (name: 'countryCode').
  • Grid column renderers updated to access new field names.

This modernizes the frontend codebase and prepares it to display the new AI/Heuristics data.

tobiu assigned to @tobiu on Feb 13, 2026, 3:54 PM
tobiu closed this issue on Feb 13, 2026, 3:55 PM