← All case studies
TSheets logo
Case study · TSheets

A Chrome Packaged App for time tracking

TSheets needed a product in the desktop app space and wanted outside feedback on building a web app against its public API. We created an offline-capable Chrome Packaged App.

A Chrome Packaged App for time tracking
Client
TSheets
Engagement
Product build
Platform
Chrome Packaged App
Offline-first
Works offline and syncs with the TSheets API
New channel
Opened the Chrome Web Store as a marketing channel
Cross-platform sync
Stays in sync with web, Android, and iOS apps

Their attention to detail and thorough weekly updates go above and beyond anything we have ever received… We wouldn't use anyone else.

J.D. Mullin · VP of Engineering
About the client

About TSheets

TSheets was an innovative SaaS company and one of the best places to work in Idaho. There was actually a vote, and they won. They built industry-shifting time-tracking technology on the strength of the many smart, talented people who worked there.

The challenge

A desktop app, and a test of the public API

TSheets needed to create a product offering in the desktop app space and was evaluating the Chrome Web Store as a new marketing channel. They also wanted feedback from an outside developer about using their public API to build a web application, which faces similar design challenges to their mobile apps.

With those goals in mind, we created a Chrome Packaged App for TSheets.

What we built

Web technology, desktop-app behavior

Full time-card management

View the current clocked-in time card and add, edit, or delete existing timesheets.

Offline by design

Work offline with IndexedDB and sync with the TSheets API when back online.

Background sync

Separate background and foreground processes communicate by message-passing, like a native mobile app.

Feedback built in

Users submit feedback directly, with debug data attached to help fix issues.

Initial view of desktop app meant to have a similar feel to existing mobile/web apps.
Initial view of desktop app meant to have a similar feel to existing mobile/web apps.
We plug into existing TSheets API to get setup info on jobs, custom fields, etc.
We plug into existing TSheets API to get setup info on jobs, custom fields, etc.
Full real time sync engine in place, clocking in/out and editing can happen anywhere at any time.
Full real time sync engine in place, clocking in/out and editing can happen anywhere at any time.
Our role

Software architecture and design.

Coding all HTML, CSS, and JavaScript.

Implementing a design spec provided by the TSheets UX design team.

Day-to-day project management in Pivotal Tracker with weekly sprints and biweekly progress reports.

Technologies used
UI
AngularBootstrapHTML5LESS/CSS
Platform
Chrome Packaged AppIndexedDBOAuth2TSheets API
Tooling
GruntGitHubPivotal TrackerGoogle Analytics
Technology details

We chose Angular as the front-end framework. The Chrome App developer docs had Angular examples, and Angular can run in Content Security Policy (CSP) mode, which is required for a Chrome Packaged App. With our experience building Angular front-ends, this was a straightforward path.

Chrome Apps bring unique challenges. To run offline, every file has to be available at all times, which means bundling everything with your code: fonts, images, icons, and third-party libraries included.

A Chrome App also needs both a background and a foreground process. All API communication and sync work lives in the background so it keeps running even when the app is minimized or idle; the two halves coordinate by passing messages, since they share no memory.

Have an idea on a deadline?

We turn ambitious ideas into shipped products, and leave your team able to run them.

Start a project