GET STARTED
Published:Nov 19, 2020

7pace Timetracker Officially Running on .Net Core

For the first time in our history, 7pace Timetracker is no longer running in a Windows-exclusive environment. We’re stoked to share that we’ve made the switch to .NET Core!

When 7pace Timetracker officially launched in 2012, the ASP.NET MVC 3 framework was an obvious choice for us to work with. Since then, a lot has changed, and at 7pace, we pride ourselves on being adaptive to and on top of not only time tracking, but time changing! So, our team has been working hard behind-the-scenes to not only bring you 7pace for GitHub (currently in beta testing) but to also update our existing systems to .NET Core.

What is .Net Core?

Well, if you’ve been living under a proverbial rock (or perhaps been in quarantine long before it was necessary!), in a nutshell, .NET Core is a free, open-source cross-platform framework from Microsoft used to create server applications that run on Windows, Linux, macOS, and mobile devices (via Xamarin). With a lot of third-party packages suspending support of (or never having had support in the first place) the .NET framework, our team knew the time to make the switch to “the most loved” framework had come.

The Nitty Gritty

When we pronounced earlier that we “switched to .NET Core”, it wasn’t quite as easy as just flipping a switch! Our devs anticipated that the process of updating 7pace Timetracker to .NET Core would take time, trial and error – and patience! – so, they got to work.

Tackling 7pace Timetracker business logic would be the easy part (with most of the work focusing on changing project targets and fixing references), while updating the web application (that included the most legacy code) itself would be the most challenging. 

All of the above was moved to our middleware. Everything – OAuth for authentication and authorization, API versioning, routing, SignalR connectivity and more – had to be re-written and transformed from an in-house solution to an open-source, fully-supported, well-documented, secure and configurable solution from the .Net Core community. After switching to a common registration pattern and a more obvious call order, each part of the request would now be more easily controlled by us at 7pace.

Mission Possible

Our team made it their mission to ensure that all public APIs and the 7pace Timetracker user experience remained constant and unchanged throughout the conversion process.  Authorization had to continue to work as usual, all previously-issued API tokens had to remain valid, and all routes and data structures had to stay the same, even when we were implementing completely different solutions to achieve the same results. 

Our workflow – our build and release pipelines, work planning and tracking – are all deeply ingrained and inside Azure DevOps. Updating our pipelines to support .NET Core build, test and deployment was the perfect opportunity for us to simultaneously clean up our infrastructure, and switch out our internal development flow to trunk-based-development to mirror Microsoft’s release process. This also allowed us to improve automated testing and speed up delivery to production.

What does that mean for you? For us?

For you – it means simply this: we’re the same 7pace Timetracker as before – so if you don’t see any difference, then we did our job right! Our goal is always to reduce cumbersome authorization requests and page load time. As a result, we hope you experience pages that load faster and are more responsive.

For us – we knew that if we wanted to expand into Github and beyond, and be part of the modern development environment, we needed to switch to the latest framework. With this comes greater security, reliability and makes us a part of a much bigger community. 

We think the end result is a win for everyone!

Free eBook

Rethinking Timekeeping for Developers:

Turning a Timesuck Into Time Well Spent

Leave a Comment

By submitting this form I confirm that I have read the privacy policy and agree to the processing of my personal data for the above mentioned purposes.

Send