William DA SILVA
Web Developer

FrontAudit post-mortem

Written on: Jun 19, 2021 • Last update: Jun 19, 2021

What was FrontAudit ?

Initially, I felt on a Github project that resumed some of the most common things to check before deploying your front-end from David Dias (https://github.com/thedaviddias/Front-End-Checklist).

I thought it was something cool and it would be even better if we could automatize it. Just give it a URL and we ensure all the recommendations from that checklist were good. At that time, I made a very simple Electron app that could be run locally for my previous job MyCuistot. Once I made that, I wanted to make it available globally to be able to test production regressions instead of my local development environment.

The new version of FrontAudit would be a service that audits a page, checks for all the criteria as the Front-End Checklist, and do a few things more like check for the page availability, certificate validity, and more. When the audit is ready, we generate a human-readable report with some tips to improve the failing points.

A few numbers

To give you some numbers about the current state of the project:

  • 45 registered users
  • 73 projects
  • 534 different pages audited
  • 800 000 audits made in total
  • 8 million monitoring requests sent

What went wrong?

In my opinion, a few things went wrong:

  • I've made too long pauses between the developments. I started working on it 3 years ago, but only got started working on it seriously last year. The motivation was hard to keep especially since I had multiple freelance missions along with my full-time job. The project ambition was too high. I started working on a simple HTML validation thing and I wanted to get the thing more complex with extended validations like validating each image, each page, etc even when I didn't fully finish the HTML validation thing. I bite more than I could chew.

  • Not sure about my audience target. One thing I wasn't sure is to determine who this project would appeal to. Was it for developers? Makers? If I'm targeting developers, wouldn't a tool integrated into their CI or development tools be better and I initially did with my Electron app? If we're targeting freelancers, do they need that information? That was hard to determine for me.

  • The server cost was kinda huge. This is probably due to a misconception from my side to make everything a service. Plus I needed multiple puppeteer instances to crawl pages, it became very expensive. Because it was deployed in a Kubernetes cluster, it was simple to create new instances.

  • Technical dept and lack of knowledge were some of the latest issues I had. Quickly when I started having a lot of audits, the whole platform became slow and it was hard for me to debug. It was hard because I felt I hadn't sufficient knowledge in some technical things like database performance, Ruby & Rails advanced stuff. When your website takes a high amount of time to simply load the main page, it became a huge issue. Since then, with different projects, I understand what I did wrong (missing indexes, N+1 queries, ...). When you think about it, it's beginner stuff but it became for me hard to handle.

What I've learned?

Know your audience

One thing I could've done better was to determine exactly what was my audience. This could've permitted me to avoid trying to make features that would never be used anyway. For my next projects, it should probably be one of the first steps before even starting to code. Know my audience and make sure I'm solving the right problems.

Focus on one thing and make it good

As I said earlier, I started doing one thing (HTML validation), then for no particular reason, I wanted to make new complex features like uptime, SSL validation, and more for no particular reasons as I didn't even finish my main feature. For my next projects, I should focus on one thing, make it to the end and then iterate.

What I'm gonna do with FrontAudit?

The first thing I thought I would do with FrontAudit was to open the code source and close the website. But after thinking, it feels hard to let this project go so easily. I spend so much time on this it feels harsh to put on the "trash".

I was thinking if I could pivot to something more specific than a website audit platform. Since I have everything in place to ping a website and see its availability, I was wondering if I could not just have FrontAudit as an uptime monitoring service. This service would consist of a very simple thing: request a URL and expects a certain result. If the result matches the expected, then we're good. Otherwise, we have downtime.

With that, we can remove all the extra stuff that we don't need and would save some development and compute resources. I think it's a good solution to not put the entire project in the trash. I'll begin to pivot the project as soon as I have some time to work on it.