All work
Portfolio & CVwww.lenardcamilleri.com

lenardcamilleri.com

A portfolio and a CV that cannot drift apart, because they are the same content.

www.lenardcamilleri.com

A screenshot of the live site. Open it in its own tab for the real thing.

The project

What it is.

lenardcamilleri.com is the personal end of everything else here: who Lenard is, the roles behind the work, the writing, and the way through to LC Development and LC Photography.

The interesting part is that none of it is hard coded. Every section, role, skill and paragraph lives in a database and is edited from a passcode-protected admin page on the site itself, so a new job or a reworded intro goes live without a developer, a commit or a deploy. The repo still carries a full set of defaults, so if the database is ever unreachable the site renders the last known good version rather than an empty page.

The CV works the same way. Rather than a PDF somebody has to remember to re-export and re-upload, the Resume button hits a server route that typesets the document on request from exactly the content the page is showing, with the fonts embedded so it looks the same everywhere. The page and the download cannot disagree.

The admin side is deliberately narrow: the passcode is stored as a bcrypt hash, and saving goes through database procedures that run with their own permissions rather than handing the browser write access to the tables.

A closer look

More of it.

lenardcamilleri.com: The career timeline, built from the same records that feed the generated CV.
The career timeline, built from the same records that feed the generated CV.
Inside

What it does.

01

Editable without a deploy

Content lives in the database and is edited from a passcode-protected page on the site, so copy changes do not need a developer.

02

A CV that cannot go stale

The Resume button generates the PDF on request from the same content the page renders, with fonts embedded, so there is no file to keep in sync.

03

Defaults that survive an outage

A full copy of the content ships in the build, so an unreachable database means slightly old text rather than a blank site.

04

A narrow admin surface

The passcode is held as a bcrypt hash and writes go through database procedures instead of giving the browser direct table access.

05

Somewhere to write

A blog with its own pages, carried into the sitemap alongside everything else.

06

One person, three sites

The personal site, LC Development and LC Photography link across to each other rather than competing for the same search results.

Built with

Under the hood.

The tools this one actually runs on.

  • TanStack Start
  • Supabase Postgres + row level security
  • Server-generated PDF
  • bcrypt
Next step

Want something like this?

Book a free consultation and tell us about your business. We will say honestly whether we are the right fit. If we are, you get a fixed price before any work starts.

Free, no obligation, and no sales script.enquiries@lenardcamilleri.com