Skip to content
FLAVIO COPES
flaviocopes.com
2026

Proof of work · 1999–today

What I've built

I've been making software products for more than 25 years. Some paid my rent. Some earned enough for a coffee. Some were used by thousands of people. Many failed.

This is the full record.

1,800+
published tutorials
20+
programming books
15+
courses created
15+
Joomla extensions
2 dozen
iPhone and iPad apps
thousands
JooCode customers
~~~

How it started

I first touched programming on an Amiga. I did not know what to type, and there was no web full of tutorials to tell me.

In 1997 I became a Linux fan. Linux came in four-CD packs because my 33.6K connection could not download it without blocking the phone line for days.

I bought a huge JavaScript book about Netscape 3.0. I learned PHP 3 by printing the entire manual. Then I started putting things on the web.

Linux Hideout, the Italian Linux website I helped publish in 1999
Linux Hideout, 1999. My first published project.

1999: Linux Hideout

My first public project was an Italian Linux site atlinux.clavis.it. A friend worked at the ISP and got us a subdomain. Hosting and domains were expensive, so this mattered.

The design was inspired by Yahoo. The screenshot shows 5,902 visits. Visitor counters and webrings were the tools of the time.

The programming site that stopped after one bad comment

At university I made an Italian programming site and wrote articles about C, Java, AJAX, and the web. I shared them in a forum. Someone told me they were poorly written, so I stopped.

Years later I built my career by writing programming articles. Early feedback can point you forward, or make you quit too soon.

An automated ebook site and my first WordPress plugin

I was collecting ebooks and experimenting with automation. I made a site that scanned them, combined fragments, and generated pages. It started ranking in search, then a publisher complained about a trademark and I took it down. It was an early lesson in the difference between getting traffic and making something useful.

I also made a free WordPress marketing plugin. Google still exposed the search term that brought someone to a site, so the plugin used it to show that visitor a different message. It was clever and got little traction.

2007: a blog, a Joomla course, and my own course platform

After my computer engineering degree I started my own company. I did client work, wrote an Italian web development blog, and created a paid video course about Joomla.

Course platforms did not really exist, so I built one. It had video, text lessons, quizzes, and student accounts. Then I spent so much energy building the platform that I lost motivation to make more courses.

The CorsoJoomla online course website I built in Italian
CorsoJoomla and the course platform behind it.
~~~

The JooCode years

JooCode was my first real software product business. I built a portfolio of Joomla extensions and sold them directly to developers and site owners.

The first paid extension fixed one small annoyance: after registering, Joomla made a new user log in again. My plugin logged them in immediately. It took about one hour to build and sold very well.

That result pushed me to build at least 15 extensions. The archive still contains JooCommerce, Map Locations, Tickets, Login Immediately, CSV Export, JSON Export, Mail Collector, Site Analytics, Page Load Times, Emoji, Custom JS, Custom CSS, Custom PHP Settings, and a database query tool.

Thousands of developers bought JooCode products. Some products paid the rent. For periods, software products were my full-time income.

JooCommerce

JooCommerce was the largest one: a simple e-commerce system for Joomla. I wanted a shop extension that normal people could configure without buying a chain of add-ons.

JooCommerce storefront and cart interfaces in light and dark themes
JooCommerce storefronts and shopping cart.

I stopped maintaining it years ago. Another developer later continued it as JooComShop and still credits JooCommerce as the original project. Software can outlive the person who made it.

Map Locations

Map Locations added responsive Google Maps, more than 130 map designs, 700 markers, clustering, categories, and Street View to Joomla sites.

This was not a tutorial demo. It had subscriptions, updates, private support, payments, licensing, documentation, and years of maintenance.

Map Locations showing a world map and a city map with custom markers
Map Locations for Joomla.
~~~

Mobile apps, Mac apps, and a WordPress failure

About two dozen iPhone and iPad apps

I learned Objective-C, Swift, Cocos2D, and Apple platform development. I made a windsurfing session tracker, Naval Battles, a physics game with a squirrel and birds, music apps, utilities, and more.

The apps never took off. Together they paid the Apple developer membership and, from time to time, a coffee. I removed them all from the App Store.

Six Mac utilities before Electron

I used Ember.js and MacGap to build desktop apps with web technology. I made Code Snippet, a notes app, a recipe app, a device database, and My Bills.

They sold a few copies each week for years. None became a meaningful income stream.

Code Snippet, my Mac app for organizing source code snippets
Code Snippet, a commercial Mac app built with Ember.js.

CommerceKit

Joomla sales were slowing down, so I rewrote the JooCommerce idea for WordPress. I called it CommerceKit and released it for free.

Almost nobody downloaded it at first. I removed it after a few months.

CommerceKit could have become something like WooCommerce. That was the idea.

But WooCommerce and the other popular shopping cart extensions were already the default choices. Almost nobody was looking for another one. Breaking into that market was basically impossible, and I did not have enough perseverance and grit to make it work.

~~~

GravCart and Gitometer

Working on Grav and building GravCart

I worked as a core developer on the Grav CMS as a contractor. I also moved my e-commerce idea to Grav and released it as open source, with commercial payment add-ons.

The shopping cart repository has 321 commits, 22 releases, 54 stars, and 24 forks. The official Grav plugin registry still lists the cart and my Stripe and PayPal add-ons.

Adoption was slower than I hoped. Community contributions did not grow enough to make the project sustainable, so I stopped maintaining it.

GravCart, the open source shopping cart plugin I made for Grav CMS
GravCart: open source core, commercial add-ons.

Gitometer

Gitometer turned GitHub repository history into timelines and charts. I first wrote it in Laravel, then rewrote it in Go to make it faster.

I asked GitHub users to try it. They were not interested, even for free. It looked good and taught me a lot, but it did not solve an important problem. I stopped before trying to charge for it.

Gitometer visualizing stars, commits, and the history of a GitHub repository
Gitometer. Interesting technology, weak demand.
~~~

The first Prototyped

In 2020 I tried again. The original Prototyped was an authentication blueprint for developers tired of rebuilding signup, login, password reset, OAuth, and email confirmation.

Before building it, I made a landing page. In two weeks it received 1,935 visits and 130 waiting-list signups. I emailed the list and got 12 detailed replies.

Those were good validation numbers. I still paused the project. I was running courses, and I did not commit to the long maintenance cycle an authentication product deserved.

Years later I reused the name for today's source prototype catalog. Names can come back too.

~~~

The products that worked

In 2017 I started writing again. In 2018 I focused the site on JavaScript and web development. I published an ebook, then a course, then another.

This became the first durable product system I built. The tutorials bring people in. The free books help them go deeper. Courses and workshops give them structure, projects, feedback, and a community.

I have now published 1,800+ tutorials, more than 20 programming books, and more than 15 courses. One earlier Solopreneur Masterclass alone had 590 students.

Teaching did not replace building. It gave the building a distribution system, and it forced me to explain what I was learning.

~~~

The money, without theater

I do not have exact accounts for every product going back to 2008. I will not invent precise numbers to make this page look impressive.

Here is what I can say from my records:

ProductCostResult
Login ImmediatelyAbout one hour to buildSold very well. Exceptional return on time.
JooCode portfolioYears of code, support, and maintenanceThousands of buyers. Some products paid rent; software was my full-time income for periods.
iPhone and iPad appsCountless hours plus Apple's annual membershipPaid the membership and the occasional coffee.
Mac utilitiesSix products and years in the storeA few sales per week. No meaningful income stream.
CommerceKitA full Joomla-to-WordPress rewriteA mature market dominated by default extensions. Little traction, and I stopped.
GravCart321 commits and 22 releasesReal open-source adoption, but not a sustainable business.
GitometerTwo implementations: Laravel, then GoCould not attract free users. No business.
Original PrototypedLanding page, research, and customer interviews1,935 visits, 130 signups, 12 replies. Paused before launch.

Every project here was bootstrapped. No venture capital. No staff hidden behind a personal brand. The main cost was always time.

~~~

What the failures taught me

  • Some markets are already locked up. WooCommerce and other extensions were the defaults. Nobody was looking for another shopping cart, and I did not have the perseverance needed to break in.
  • A clever product is not the same as a useful one. Gitometer was attractive, but it solved no painful problem.
  • The market matters. Joomla shrank. My product quality could not reverse the ecosystem.
  • Platforms add risk. Music apps disappeared after copyright complaints. API products depend on someone else's rules.
  • Maintenance is part of the product. GravCart needed a community or a business strong enough to support years of work.
  • Distribution comes before scale. For years I started with code. Today I start with the customer and how I can reach them.
  • Small products can have the best return. The one-hour plugin beat projects that took months.