Available for new projects

Custom software for the way you actually work.

I design and build websites, portals, custom business software and automations that talk to the systems you already run. From process analysis to release, with code that still reads well two years later.

Role
Full-stack developer
Specialisation
AI inside business processes
Capacity
One project at a time
Scroll

01Skills

What I can build

I work across the whole cycle: process analysis, architecture, development, release and maintenance. A typical project touches three or four of these at once.

Artificial intelligence

01

Language models inside real business processes: assistants that answer from your internal documents, data extraction from PDFs and email, automatic classification and routing of incoming requests.

  • LLM
  • RAG
  • Embeddings
  • Vector DB
  • Prompt design

Websites

02

Marketing sites, landing pages and institutional websites. Real attention to loading speed, technical SEO and accessibility: a site that is slow or unindexed is a site that does no work.

  • Performance
  • Technical SEO
  • Responsive
  • Accessibility
  • CMS

Portals and restricted areas

03

Client portals, supplier areas, intranets. Authentication, granular roles and permissions, multi-tenancy, audit trails and content the client can manage without calling me.

  • Auth
  • Roles
  • Multi-tenant
  • Audit log
  • SSO

Custom business software

04

For when off-the-shelf software does not fit how you actually work. Records, inventory, orders, invoicing, approval flows and reporting, built around the process you already have.

  • Records
  • Inventory
  • Orders
  • Invoicing
  • Workflow

E-commerce

05

Catalogues with variants and tiered pricing, payments, shipping and — above all — the link back to your business software, so stock and orders are not typed in twice by hand.

  • Catalogue
  • Payments
  • Shipping
  • Pricing
  • Sync

Automation and integrations

06

Getting systems that were never meant to meet to talk to each other. APIs, webhooks, scheduled imports, overnight syncs, and all the repetitive work somebody is doing by hand right now.

  • REST API
  • Webhooks
  • ETL
  • Scheduled jobs
  • Queues

Data and dashboards

07

Data modelling, the numbers that actually matter, and dashboards you can read in ten seconds. With exports and scheduled reports for the people who still prefer a spreadsheet.

  • Modelling
  • KPIs
  • Dashboards
  • Reports
  • Export

Infrastructure and release

08

Separate staging and production, automated deploys, containers, verified backups and monitoring. The part nobody sees, and the part that decides whether you sleep after go-live.

  • Docker
  • CI/CD
  • Linux
  • Backups
  • Monitoring

02Stack

Tools I use every day

I pick the technology to fit the problem, not the other way round. This is the ground I move fastest on.

Languages

  • TypeScript
  • JavaScript
  • Python
  • PHP
  • SQL

Frontend

  • React
  • Next.js
  • Vue
  • Tailwind
  • HTML / CSS

Backend

  • Node.js
  • FastAPI
  • Laravel
  • REST
  • GraphQL

Data

  • PostgreSQL
  • MySQL
  • Redis
  • MongoDB
  • Elasticsearch

Artificial intelligence

  • Claude API
  • OpenAI API
  • LangChain
  • pgvector
  • Whisper

Infrastructure

  • Docker
  • Linux
  • Nginx
  • GitHub Actions
  • AWS

03Method

Four steps, no surprises

I would rather have a few clear phases and something you can click through early, than a long quote followed by three months of silence.

01

Analysis

We look at the process before the code: what your team does today, where the time goes, and what is actually worth automating.

02

Prototype

Something you can click through within a few weeks, so decisions get made on a real thing instead of a description of one.

03

Build

Short iterations, a staging environment that stays current, and frequent updates. You watch it grow instead of waiting for it.

04

Release and care

Go-live, training for the people who will use it, monitoring and maintenance. The project does not end on delivery day.

04Work

What I have built

Problem, technical decisions, measured result. Here are the two most recent ones; the other four — this site, the GDPR search, e-invoices and the configurator — are on the projects page.

Case 05Personal project2026

Quadro — a dashboard over Italy, on ISTAT data

Problem

A dashboard fed pre-computed totals can only answer the questions whoever prepared the data had anticipated. The first different question needs a change, a release and a week.

Approach

The browser receives the municipal detail — 7,896 rows — and aggregates on the fly. Changing level, indicator or filter is not a request to a server: it is a loop over an array.

The map weighs 99 KB because it is TopoJSON: quantised coordinates, points stored as deltas, and borders shared between neighbouring regions rather than duplicated. The same drawing as GeoJSON weighs 2,700.

Result

Fifty-one checks that reconcile the totals by every route and test them against facts that do not come from the data. On the first run Italy’s population came out at 118 million: the ISTAT file carries a total row per municipality, and summing it with the detail counts everything twice.

7,896municipalities aggregated in the browser on every interaction
99 KBfor the vector map, against 2.7 MB in the naive format
51reconciliation checks passed
  • JavaScript
  • Python
  • TopoJSON
  • Open data
  • Visualisation
Case 06Personal project2026

Soglia — a WCAG contrast checker

Problem

A contrast ratio is a single number, and on its own it decides nothing: the same pair of colours passes at 24 px and fails at 16. The tools you find show the number with two fixed ticks beside it, and the real question goes unanswered — from what size up is this colour fine?

Approach

The threshold moves with size and weight, because that is how the standard is written. Transparency is composited before it is measured: rgba(0,0,0,.5) on white is #808080 and scores 3.95:1, not 21:1 — a tool that ignores alpha returns a number that exists on no screen.

And when it fails, it says which colour to use instead. The fix moves in lightness only, inside OKLCh, so the hue stays put and a corrected red stays red rather than turning pink. Sometimes, though, the right answer is that the background is wrong: on a mid grey no text colour whatsoever reaches 7:1, and saying so is worth more than offering a colour that does not solve it.

The real work is not one pair but a whole theme, where the pairs are n×n: paste the custom properties of a stylesheet and they all come out at once.

Result

A hundred and eighty-one checks, eight of them against numbers published by other people that I did not compute anywhere myself. The expectations are recomputed by a second implementation written in Python from the specification, not by the engine they are meant to test. And the page’s own theme passes its own tool against AAA, not AA: the check re-reads the stylesheet from disk, so a colour changed without looking at the contrast makes it fail.

Measuring the rendered page, rather than the declared colours alone, it found a defect of its own: on the matrix diagonal a grey dash at 12 px sat at 4.05:1. It was decoration disguised as text, and it is now a hatch.

181checks passed, eight of them on values published by others
2independent implementations that have to agree: JavaScript and Python
0elements below WCAG AA out of 162, in both themes: here the bar is AAA
  • JavaScript
  • Python
  • WCAG 2.1
  • OKLCh
  • Accessibility

There are four more projects: this site, citation search over the GDPR, XML e-invoices and a window configurator. Same structure — problem, technical decisions, measured numbers.

All projects

05Profile

About me

Carmine La Luna

17Labs — one person

Based
Italy — remote
Languages
Italian, English
Projects
One at a time
Reply
One working day

17Labs is the name I work under, but there is no team behind it: there is me. I am saying that up front because it is the first thing I would want to know if I were on your side of this page.

I have been writing code since I was sixteen. It started as the thing I did instead of studying and I never stopped: what used to be tinkering is the job now, but the part I enjoy has not changed — working out how something works, then building it better.

Away from the screen I am into card games: Magic: The Gathering and One Piece. It is more relevant than it sounds — they are sets of rules interacting with each other, and getting good means reading those interactions before anyone else does, while keeping track of everything your opponent might be holding. That is exactly what you need when you step into a company's process and have to find where it jams.

My day job is building software for a large company, and I am staying there. 17Labs is the name I take my own projects under, and I choose them: it is not a second business to fill up, it is room for the work I actually want to do.

Which means something concrete for you: I take one project at a time and I am fully in it. No queue, no clients competing for the same hours.

06Frequently asked

The things people always ask

01How long have you been doing this?

I have been writing code since I was sixteen and I do it for a living: I build software full time for a large company.

17Labs is the name I take my own projects under, and it has just started. So what you will find above is documented personal work rather than a client list — that is a choice, not a gap papered over with borrowed names.

02What does it cost, and how long does it take?

It genuinely depends on the project, and I will spare you the invented price list: a marketing site and a system covering five departments have nothing in common, in either price or time.

The fastest way to find out is a call. I will ask a few questions about what happens in your process today and give you an honest estimate — and if the job does not make sense, I will tell you instead of selling it to you.

03How many projects do you run at once?

One. When I take a job I am fully in it, with no queue and no splitting myself between clients competing for the same hours.

That is the concrete advantage of hiring one person instead of a studio: you are never the project that waits.

04What happens after delivery?

Delivery includes a support period. It is deliberately short — roughly a month — because its job is to cover the things that only surface once the software is genuinely in use: a fix, a detail to adjust, a question from someone using it every day.

If you want to continue after that, it extends. But I would rather it were your choice once you have seen how it goes, than a signature collected beforehand.

05Do you work remotely?

Yes, anywhere. I work fully remotely with no geographic limits: what it takes is a video call now and then and a written channel where you can reach me.

I work in English and Italian.

06Who owns the code you write?

The project code is yours. What I write for you — your process logic, your data model, your interfaces — is handed over with full repository access and stays yours. If you ever want to change supplier or bring the work in house, you do not need my permission.

There is one exception, and it is only fair to state it up front: the generic libraries and components I carry from one project to the next stay mine, and you get an unlimited, perpetual licence to use them within your project. That is not there to lock you in — it is what lets me avoid starting from zero every time, which is what makes the work cost you less.

The only thing I keep is the right to write the project up in my portfolio. If you would rather I did not, just say so.

07Can you take over a project someone else started?

It depends, and it needs looking at before anyone promises anything. Send me the code and tell me where things stopped: I will assess how much is salvageable, what is worth rewriting, and whether it makes more sense to continue or restart.

You get that assessment either way, even if we then decide not to work together. A clear answer beats a quote for something I have not seen.

07Contact

Tell me what you need

Even a half-formed idea is fine: the first half hour is usually about working out whether the problem is really the one it looks like. I reply within one working day.

* required. No newsletter, no lists: the data is only used to reply to you.