Hi, I'm

I build web applications from start to finish. React, Vue, Angular on the frontend, Node.js on the backend, databases, deployments — the whole deal.

~/photo.jpg
Andy
-rw-r--r-- 1 andy staff 2.4M photo.jpg

$ ./configure-ui.sh

▶Your screen, your rules.

Pick how you want to experience this site. Everything updates live. Your choice is saved between visits.

// theme

// layout

// fun mode

// language

// font size

1 | 7 years in web development. Projects were all over the place: landing pages, admin panels, embeddable widgets, online stores, banking apps, analytics dashboards. Some ran on React, some on Angular, some on Vue — each one needed its own approach, its own architecture, its own set of trade-offs.

2 | Full cycle, end to end: from requirements to production. Frontend, backend, databases, CI/CD, infrastructure. Things work better as a coherent system than as a patchwork of disconnected parts.

3 | Main stack is JavaScript/TypeScript. React and Next.js on the frontend, Express and NestJS on the backend, MongoDB and PostgreSQL for data. Right tool for the job, not the other way around.

# E-commerce Platform

▲Next.jsTSTypeScript🎨Tailwind CSS◻shadcn/ui🐻Zustand💳StripePPPayPal☁AWS S3
Try It Out →

E-commerce looks simple from the outside — browse, add to cart, pay. But build one yourself and the decisions start stacking up fast: how to handle layout across devices, which payment providers to support and how to swap them out by region, how much control to hand to the client without letting them wreck the store. This project is a walkthrough of those choices.

$Product Catalog▌

$ click to try it yourself

Mobile first, obviously. More than half of all e-commerce traffic comes from phones, so if your store doesn't feel native on a 375px screen, you've already lost. Layouts built from small screens up, not the other way around.

Responsive Design

$ click to try it yourself

Payments are tricky — PayPal dominates in the US, Stripe is the go-to across Europe, and sometimes neither fits: local regulations or bank requirements mean you need a direct integration with a specific acquiring bank. So the payment layer is built to be swappable — plug in whatever fits your market.

Checkout & Payments

$ click to try it yourself

The client is going to live with this thing long after the developer is gone. So the admin panel had to be solid — add products, change prices, update banners, manage orders. All without touching code. The kind of CMS that doesn't make you want to pull your hair out.

$Admin Panel▌

$ click to try it yourself

# Real Estate Listing

▲Next.jsTSTypeScript🎨Tailwind CSS v4🗺️LeafletHUHeroUI🔀Framer Motion📡Overpass API🌐next-intl
Try It Out →

110 properties across 22 Lisbon districts — real addresses, real coordinates. The filter bar covers deal type, property kind, bedroom count, and price. Price goes beyond presets: choose Custom and a range slider appears, letting you dial in the exact ceiling. Every filter lands instantly: the list and the map update together, no submit, no reload.

$Lisbon Homes — Browse & Filter▌

$ click to try it yourself

The list and the map share the same state at all times. Hover a card — the map pans to its pin. Hover a pin — the matching card scrolls into view. Click to lock a selection and both panels reflect it. Two ways to navigate the same data, always in sync.

$Lisbon Homes — Map Sync▌

$ click to try it yourself

Filters cover price and type — but not geography. A draw tool handles that: trace a polygon around a neighborhood or drop a radius on any point, and the listing panel clips to exactly what falls inside. On the same map, a price heatmap layers value density across the city, making it easy to see where things get expensive and where the deals concentrate before clicking a single card.

$Lisbon Homes — Zones & Heatmap▌

$ click to try it yourself

Each listing opens a full sheet with a photo gallery, floor stats, and a live mortgage calculator — adjust down payment, rate, and term and the monthly figure recalculates on the spot. Point-of-interest overlays pull metro stops, hospitals, schools, and parks straight from the OpenStreetMap Overpass API with a toggle per category. First-time visitors get a guided onboarding tour — 5 steps on desktop, 4 on mobile — that walks through every major feature and then gets out of the way.

Lisbon Homes — Detail, POI & Onboarding

$ click to try it yourself

# Dev Survey Explorer

🟢Vue 3TSTypeScript📊ECharts🍍Pinia⊞Dockview⚡Vite
Try It Out →

Stack Overflow publishes developer survey results every year — 65,000 respondents, 185 countries, data going back to 2017. The raw numbers are public but they're not easy to read. I took that dataset and built an interactive dashboard around it: 16 chart panels across six topic areas — languages, tech stack, AI adoption, salaries, developer profiles. The layout is built on dockview so panels are draggable and resizable, and six presets let you reconfigure the whole view in one click.

$Dev Survey Explorer — Dashboard▌

$ click to try it yourself

Every metric in the survey has a year attached to it, which makes year-over-year comparison the most interesting thing you can do with the data. A range bar at the top clips the dataset to any window — last 3 years, last 5, all the way back to 2017. Everything rerenders immediately: language popularity curves, salary comparisons, AI adoption rates. The same charts tell a completely different story depending on the window you're looking through.

$Dev Survey Explorer — Time Range▌

$ click to try it yourself

A multi-panel resizable dashboard works on a wide screen. On a phone it falls apart. Instead of squashing the layout or hiding panels behind menus, mobile gets an entirely different interaction model: full-screen charts swiped left and right within a topic, and up and down to switch between topics. The data is the same, the year range controls work the same — the navigation is just built for thumbs instead of a mouse.

Dev Survey Explorer — Mobile — Mobile

$ click to try it yourself

# Booking App

▲Next.jsTSTypeScriptMnMantine🔀Framer Motion🛡️Zod📅dayjs🌐next-intl
Try It Out →

Most booking demos open straight to a form. This one starts with a landing page — because clients don't arrive at the calendar directly. They come via a link, a referral, a Google search. They need to be sold on the service before they pick a date. So the demo opens as a full brand: hero, services, brand story. The booking form is one click away, not the first thing you see.

$NOIR — Landing▌

$ click to try it yourself

The booking flow is clean and guided — pick a service, pick a date, pick a slot, leave your details, done. The calendar blocks weekends and shows which times are already taken. No confusion, no dead ends. The whole thing works just as well on a phone as on a desktop.

Booking Wizard

$ click to try it yourself

After booking, all your appointments live in one place. The barbershop leaves notes on each session — who your master is, what to expect. You can add your own notes too. And if plans change, cancelling is one click with a quick confirm so you don't do it by accident.

$NOIR — My Bookings▌

$ click to try it yourself

drwxr-xr-xfrontend/frameworks/
drwxr-xr-xfrontend/state/
drwxr-xr-xfrontend/styling/
drwxr-xr-xbackend/
drwxr-xr-xdatabases/
drwxr-xr-xlanguages/
drwxr-xr-xtesting/
drwxr-xr-xtools/
drwxr-xr-xdevops/
drwxr-xr-xmessaging/
drwxr-xr-xdesign/

Every project is different — different goals, different budgets, different timelines. Here's how our collaboration might look depending on what you need.

MVP / Prototype

Test your idea before going all-in

You've got a hypothesis, a concept, maybe some sketches on a napkin. You don't need a polished product yet — you need to build something real, put it in front of users, and see if it clicks. That's where I come in.

01.Kick-off call

We sit down and figure out what exactly we're testing. Not the whole grand vision — just the core. What's the one thing your product needs to do to prove the idea works? We cut everything else ruthlessly.

02.Scoping & wireframes

I put together a rough feature map and basic wireframes. Nothing fancy — just enough so we're both on the same page about what gets built and what doesn't. Usually takes a day or two.

03.Rapid prototyping

I go heads-down for one to two weeks and build the thing. Real code, real functionality — not a clickable Figma. You get a working app you can actually show to people.

04.Review & polish

We go over it together. You click through everything, tell me what feels off, what's missing, what needs tweaking. I fix it up, we sand down the rough edges.

05.Deploy to staging

We push it out to a test environment. Now you can share the link, gather feedback, show it to investors, test with real users — whatever you need to validate the idea.

Let's work together

Got a project in mind? Send me a message on Upwork — I'm always open to interesting work.