Skip to main content
← All work
December 2023–April 2024Engagement completedProfessional work / open-source contributionLogistics

Fleetbase

Becoming useful inside somebody else’s architecture

Entered an unfamiliar logistics OSS ecosystem and authored 46 pull requests—40 merged—across ten repositories, from SDK and release work to cross-repository product changes.

Role
Software Engineer
Period
December 2023–April 2024
Status
Engagement completed
Ownership
Professional work / open-source contribution

Overview

Personal projects let me choose the language, architecture, repository boundary, and definition of done. Fleetbase removed all four advantages.

I entered an open-source logistics platform spread across Laravel services, Ember applications, JavaScript/TypeScript SDKs, React Native mobile work, storefront products, and separate release paths. I did not have prior Ember experience.

The useful question was not how quickly I could learn Ember syntax. It was whether I could understand the system well enough for its maintainers to accept work across the boundaries they had already chosen.

My role

I contributed as a Software Engineer from December 2023 to April 2024. I did not create Fleetbase or own its full architecture.

The public boundary is unusually exact: GitHub records 46 pull requests authored by tortuvshin across ten Fleetbase repositories. Forty were merged; six closed without merge.

01 · By the numbers

Contribution numbers

Authored pull requests
46
Merged pull requests
40
Closed without merge
6
Repositories touched
10
Largest PR groups
storefront-app 10, navigator-app 7, storefront 7, core-api 6
Additional repositories
fleetbase-js, storefront-js, ember-core, fleetops, fleetbase, pallet

02

First, learn how the product travelled through repositories

My earliest pull requests were small and infrastructural: dependency and formatting cleanup in fleetbase-js, organization lookup, a package-publishing workflow, a release, and a Node adapter fix. The next work moved through storefront-js, the Navigator mobile application, and Storefront’s application architecture.

That sequence built a map:

  • SDK packages defined contracts used by products;
  • applications consumed those packages on different runtimes;
  • Laravel services held domain behavior and validation;
  • Ember packages supplied shared components and extension points;
  • release automation determined whether a fix actually reached a user.

Without that map, a local fix could be correct in one repository and incomplete in the product.

03

A dashboard change crossed three layers

One February change is a clear example. A customizable widget-based dashboard required coordinated work in three repositories:

  • ember-core added widget registration behavior;
  • core-api added dashboard and widget services;
  • fleetbase connected the capability to the product.

The visible feature lived in the application, but its contract and persistence belonged elsewhere. Treating it as one frontend ticket would have left the system split across incompatible assumptions.

This was the practical value of learning the repository topology: knowing which part of the change should not be implemented in the file currently open.

04

Shared code needed a real home

Another group of March pull requests moved component-context utilities into ember-core, then removed duplicate local versions from FleetOps and Pallet.

The code change was modest. The architecture decision mattered more. Shared behavior belonged in the package that owned the convention, not copied into every application that happened to need it.

The same principle appeared in SDK typing, storefront rules, model reflection, package releases, Android fixes, customer/order views, permissions, and boot-screen behavior: follow the product behavior across repositories, then make the smallest coherent change at each boundary.

05

Accepted work was the test

In my own repository, I can merge my interpretation of the system. In external open source, the change must fit maintainers’ constraints, release direction, and review.

Forty merged pull requests show that the learning became useful to Fleetbase. The six unmerged requests are part of the record too. Contribution includes proposals that are superseded, rejected, or no longer worth the change they require.

That is a healthier feedback loop than measuring learning by the amount of code produced.

06 · Outcome

Result

The public record shows accepted work across SDKs, package publishing, Laravel domain code, Ember extension points, storefront products, React Native fixes, dashboard behavior, shared utilities, permissions, and releases during a four-month engagement.

It does not prove sole ownership of any Fleetbase product. It proves that I could enter an unfamiliar, multi-repository system and become useful across its actual boundaries.

07 · Reflection

What I learned

The fastest way to understand a foreign codebase is not to read every directory in order. Trace one real product behavior through every repository it touches, make one change small enough to review, and let the maintainers correct your model.

Breadth becomes credible only when the work lands.

Links

Next case study

Open Apps