This week, I would like to talk to the more tech-savvy of you, and reveal some of the “behind the scenes” numbers of Arcsecond as a platform.

Screenshot of Arcsecond homepage
Today’s homepage of Arcsecond (v5)

Arcsecond a SaaS (Software-as-a-Service) based on a classical client-server architecture. The client is downloadable in the usual address: www.arcsecond.io and the server: api.arcsecond.io.

Codebase

The latter is the unique source of truth, and it contains… 253 endpoints! Which is quite a rich backend which illustrate how sophisticated it can be to model a domain, such as the astronomical observations.

Screenshot of the linux command used to determine the number of API endpoints.

The backend follows the famous RESTful architecture. Here is the Amazon AWS description of this famous architecture style, which is a better description of what Arcsecond is following than what you can read in Wikipedia.

The frontend, that is, the app with which you interact, is written in the powerful javascript framework Vue.js. The whole app is bundled by Vite.js (whose creator was that of Vue.js…), and is a SPA (Single-Page Application). It contains 588 Single-File Vue.js Components, along with 253 auxiliary pure-typescript files (containing composables, utils etc).

Screenshot of the linux command used to determine the number of Vue.js components.
Total coincidence of having the same number of API endpoints and pure typescript files.

Some of these auxiliary typescript files can be fairly complex, such as those that compute the Starlink satellite tracks pollution of every night and every single observation.

I wish I could find some other examples to compare with, but I think Arcsecond is a fairly advanced Vue.js app. Add a comment below👇 if you also wrote a Vue.js app, and share some details!

Like every developer, I struggle regularly with the organisation of my files. Given the frontend codebase if spread over 841 files, you may loose a lot of time to navigate. At the end of June 2024, the V5 of Arcsecond was released. And behind the scences, I adopted a completely new codebase organisation, based on specific domains, that match the different domains with wich you use in the app.

I like thinks to be well organised and clean. Probably due to my Swiss origins. 😁🇨🇭

You easily recognize in the name of the folders, the name of the dropdown menus of the app.

Infrastructure

Arcsecond runs on a PaaS (a Platform-as-a-Service), called Render.com. As more explained in the official documentation, the storage of the data is using Amazon’s AWS S3 service. It is also true for all “statics” of Arcsecond (icons, images, css files, etc). The documentation is hosted by GitHub pages.

All the Render.com services used by Arcsecond in production.

As you can see in the screenshot above, running a SaaS isn’t running a simple server. In particular, you need a worker for the background tasks (like sending you an email when you register!), and a “beat” for scheduling repeated tasks (like refreshing the data storage scans, or the exoplanet transits solutions).

What is not visible in the above is that… everything is duplicated! All the infra services above are duplicated in a “staging” environment, accessible in … www.arcsecond.dev and api.arcsecond.dev (but please, don’t abuse it). That way, all the new stuff can be tested for real before being merged into production.

Conclusion

I hope you liked this type of posts. It’s funny to share all this, as I spend so much time inside it. So now, you see that Arcsecond is built on solid foundations, and I now accumulate more than 7 years of running a SaaS.

Clear skies!

Categories:

One response

Leave a Reply

Your email address will not be published. Required fields are marked *