Mooney, Anduin
This is my career through the lens of a real record collection. I thought it’d be a fun way to show it off!
The whole collection
Liner notes
The Common LoonBar and live music venue in Lents, PortlandLocal business
The Common Loon is a bar, restaurant and all-genre music venue in the old Eagle Eye Tavern in Lents.
Most people who pull the site up on a Friday night want to know one thing: what’s happening tonight? The owners also needed to change shows, posters and hours on their own, without emailing me every time a band got booked.
What makes it work
- A1Tonight comes first. The homepage opens on “Tonight at the Loon” with the show, the door time and the poster. The site checks the date and puts the right event at the top.
- A2The owners run it. A private dashboard lets them add shows, upload posters, change hours and edit the menu from a phone.
- B1The posters set the look. Every show brings its own artwork, so the layout gives the posters room instead of fighting them.
- B2The logo watches you. The red eyes in the loon logo follow your cursor and blink every few seconds.
Behind the build
This one is in my backyard. I live in Lents and knew the old Eagle Eye, and I didn’t want to hand a neighborhood bar a polished restaurant template that could have belonged anywhere.
The show calendar ended up at the center of everything, since a venue’s schedule changes every week. The part I’m proudest of is the owner dashboard. The animations are fun, but a site the owners can run from behind the bar is what actually helps them.
Built withHand-coded HTML, CSS and JavaScript, with a small owner dashboard running on serverless functions. No WordPress.
Henson OrthodonticsOrthodontist in Newberg, McMinnville and AstoriaLocal business
Henson Orthodontics has offices in Newberg, McMinnville and Astoria.
People landing here are weighing a big decision. They want to know what treatment involves, what it might cost and how much time it takes, so the site’s main job is making the first step easy.
What makes it work
- A1Four ways in. Schedule an appointment, try the payment calculator, book an in-office consult or start virtually. All four sit at the top of the homepage.
- A2Cost comes up early. The payment calculator is there before anyone has to call or commit to a visit.
- A3Text or call. The contact options stay close by instead of hiding on a contact page.
- B1Three offices, one site. Newberg, McMinnville and Astoria each get their own office details inside one website.
- B2Virtual check-ins. The site explains virtual monitoring, where patients send progress photos and talk to the office remotely.
Behind the build
Orthodontists have a lot they could say: treatments, doctors, technology, financing, offices, reviews. It’s tempting to put all of it on the homepage.
I went the other way and started with choices. Someone who’s ready can book right away, someone worried about money can try the calculator, and someone who’d rather skip the office can start virtually. Everything else comes after that.
Built withWordPress with Elementor.
Oak Grove TavernNeighborhood tavern in Oak Grove, OregonLocal business
Oak Grove Tavern is a neighborhood bar with live music and a late kitchen.
The site needed to answer the questions people actually have: are you open, what’s on tonight and is the kitchen still serving?
What makes it work
- A1An OPEN light that’s accurate. The indicator in the header follows the tavern’s real hours.
- A2Copy that sounds like the bar. “Solid drinks. Questionable stories.” and “Easy to find, hard to leave.” are lines the regulars would recognize.
- B1The basics up top. Music, the menu and the late kitchen are all near the top of the page.
- B2It looks like the room. Near-black, brick red, brass and cream, with condensed serif lettering and small red stars taken from the tavern itself.
Behind the build
I wanted the site to feel familiar to someone who’s never been inside, so I didn’t clean it up too much. A neighborhood tavern needs a bit of darkness and copy that sounds like a person wrote it.
The OPEN light is my favorite detail. It’s decoration, but it’s also useful, and I like building things that manage both.
Built withA custom build. No WordPress and no page builder.
SKYGHHHC vape brand in Portland, OregoninSupply Labs
SKYGH, said “sky high,” was an HHC vape brand made in Portland. Art director MiQ Willmot created the artwork, and the two of us built the site around it as one animated scrolling experience.
The homepage is a single scene, and scrolling moves the camera from blue sky at the top down to mountains and forest at the bottom.
What makes it work
- A1Scroll drives the animation. The homepage runs on one long timeline tied to the scrollbar, so every bit of scrolling moves the scene forward or back.
- A2Layers with depth. Clouds, biplanes, birds, a zeppelin and the balloons each sit on their own layer and move at their own speed, which is what makes the sky feel deep.
- A3MiQ’s balloons. Each strain is its own illustrated hot air balloon (Blue Dream, Gelato, Forbidden Fruit, Sour Diesel and Northern Lights), introduced by two biplanes towing a STRAINS banner.
- B1The sky changes on the way down. The blue deepens as you descend, the northern lights come in, and the scroll ends on mountains and forest.
- B2The facts ride along. “What is HHC?” and “What’s inside” appear between the balloons, inside the scene.
Behind the build
MiQ Willmot created the assets, and we built this animated scrolling experience together. I built it on a scroll-driven timeline, so the artwork moves with your scrolling and the whole homepage plays as one scene.
Built withWordPress with Elementor Pro and Slider Revolution, with the whole homepage on a scroll-driven timeline.
Life on Mars Delta 8Delta 8 softgel brand in Portland, OregoninSupply Labs
Life on Mars made Delta 8 softgels from US-grown hemp, produced in Portland.
The name is a space reference, so the homepage plays out as a flight to Mars.
What makes it work
- A1Lift-off. The page opens on a field of stars with “Life on Mars, Delta 8” in red and white.
- A2Landing. Scrolling brings the planet’s surface up close, with the logo over it.
- B1Then the product. The softgels arrive after the landing, with the dose per softgel and a Buy Now button.
- B2The copy stays in character. Even the product description signs off with “Enjoy your flight!”
Built withWordPress with Elementor Pro and Slider Revolution, on the JupiterX theme.
Aces Joint RepairCBD muscle and joint rub in OregoninSupply Labs
Aces Joint Repair is a mentholated CBD rub and the flagship brand of inSupply, sold in cans, tins and single-use packets.
Art director MiQ Willmot created the brand assets and I developed the site. The goal was heavy branding everywhere, so the chrome, the teal, the wings and the amp knob show up in every section of a real WooCommerce store.
What makes it work
- A1Turned up to eleven. The logo is a winged ace of spades with an amp knob in the middle, and “For those who live life turned up to eleven” closes the homepage.
- A2Branded down to the badges. The milligrams of CBD in each can, tin and pack get their own chrome badges right under the product shot.
- A3Testimonials in the brand’s frame. Each review sits in a teal-edged card with a photo, a name and a job, from an NYC electrician and a pro BMX rider to a firefighter.
- B1Product shots on a guitar. The packets are photographed on a teal electric guitar, so even the product photos stay on brand.
- B2Ticker bands. Bands of moving copy, like “Maximum mitigation for muscle & joint irritation,” run between the sections.
Behind the build
MiQ Willmot art-directed Aces and created the assets, and I developed the site. We built it together, and my part was getting all of that branding into a working store, with product pages and a cart, without toning any of it down.
Built withWordPress with WooCommerce and Elementor Pro.
Pioneer Tank & VesselBrewery tanks and extraction equipment in Portland, OregoninSupply Labs
Pioneer Tank & Vessel builds brewery and winery tanks and hemp extraction equipment in Portland.
Its customers are breweries, so the site shows the shop, the steel and the breweries it has built for.
What makes it work
- A1Black and white. Every photo of the shop floor and the tanks is in black and white, so nothing competes with the work.
- A2A wall of brewery logos. Dozens of breweries, from Ecliptic and McMenamins to 10 Barrel and Pelican, and each logo opens a page for that brewery.
- B1The menu is the process. R&D, Concept, Design, Fabricate, Delivery & Install: the navigation follows how a tank gets made.
- B2Made in Portland. The page closes on a line about building everything by hand in Portland with local materials.
Built withWordPress with Elementor Pro, on the JupiterX theme.
Sage Street TradingOnline CBD store in Portland, OregoninSupply Labs
Sage Street Trading was an online shop for CBD, CBG and CBN products: topicals, tinctures, edibles, vapes, beauty, pet products and isolates.
A lot of its shoppers were new to CBD, so the store had to teach as well as sell.
What makes it work
- A1Eight ways in. Beauty, topicals, edibles, tinctures, vapes, gift sets, pets and isolates each get a product photo right under the hero.
- A2Reading next to the shelves. Articles like a CBD dosing guide sit on the homepage between the categories and the products.
- B1A quiz for the unsure. “Not sure what type of CBD is right for you?” leads into a product quiz.
- B2The questions people ask. An FAQ on the homepage covers what CBD is, whether it’s legal and how discounts work.
Built withWordPress with WooCommerce and Elementor Pro, on the JupiterX theme.
DropLockWooCommerce plugin I wrote and sell, onlinePersonal project
DropLock is a WooCommerce plugin I wrote and sell. It stops the same customer from buying a limited item twice, even when the first purchase was in an older order.
This one is mine from end to end: the plugin, the website, the point of sale and the automated workflow that runs after every purchase.
What makes it work
- A1The plugin. Written in PHP for WooCommerce. It enforces lifetime per-customer limits across every order, matches guest checkouts by billing email, adds a “Limited Drop” badge and logs every blocked attempt.
- A2The website. “One per customer. Across every order.” and a mock “transaction denied” screen explain the problem before any specs come up.
- A3The point of sale. Three yearly plans and two lifetime licenses, each one click from checkout, with the 14-day refund policy spelled out on the page.
- B1The automated workflow. I set up everything that happens after someone buys, and it runs on its own.
- B2In use on real drops. KiloWheelz runs its limited die-cast releases on it.
Behind the build
This is the project where I got to do every part. I wrote the plugin in PHP, designed and built the site, then set up the point of sale and the automated workflow behind it.
Doing all of it myself made the decisions easy. The problem, the fix and the price are impossible to miss, and anything that didn’t help someone buy got cut.
Built withA custom-built site with its own point of sale and automated workflow. The plugin itself is PHP for WooCommerce.
Anduin & JessicaMy own wedding site in PortlandPersonal project
This is the website for my wedding to Jessica, in Portland.
I wanted it to feel like an experience that matches the vibe of our wedding, so it works like an animated, elegant e-vite with a whole website inside it, and every page is built as its own set piece.
What makes it work
- A1You open it. The first screen is a cream save-the-date floating over a night sky, with one button: Enter.
- A2Pages as set pieces. Home, the Q&A and the photo album are each staged as their own scene.
- A3It sounds like us. Lines like “hey, we’re getting married” and “please don’t make better plans” set the tone for the whole site.
- B1It grows toward the day. More pages and details get added as the wedding gets closer. Until then a countdown runs, and the exact details are saved for the invitations.
- B2Navy instead of blush pink. Midnight navy, celestial artwork and blackletter names.
Behind the build
Wedding sites usually end up as a page of logistics. I wanted ours to feel like the wedding itself, so it opens like an invitation and every page is staged like a set piece.
It’s also a site that keeps growing. I’ll keep adding to it and building it out as the date gets closer, so guests have a reason to come back.
Built withWordPress with Elementor.
ATM Mega StoreOnline store for ATM machines and parts in Oregon CityGoldstar ATM
ATM Mega Store sells ATMs, parts, receipt paper, signs, upgrade kits and the rest of what an ATM business runs on. I work on it in-house at Goldstar ATM.
Shoppers who know what they want get to it fast, and the bigger job is search: a local page for every state and 223 cities, so the store comes up when an operator looks for ATM sales or repair near them.
What makes it work
- A1All 50 states. Every state has its own ATM sales, service and repair page, all linked from one “ATM services by state” hub.
- A2223 city pages. Cities from Anchorage to San Diego get their own pages, each filed under its state.
- A3Written for the place. The Phoenix page names Camelback Road, Loop 202 and SR-51, and the nearby cities it covers, like Tempe and Mesa.
- B1Breadcrumbs by place. Shop ATMs, then the state, then the city, so visitors and search engines can follow the structure.
- B2Machines and prices up front. The first screen shows real ATM models with prices instead of a request-a-quote form.
Behind the build
I treat this one more like a parts counter than a brochure. There are a lot of products and brands, and a lot of buyers who know the exact machine or paper roll they came for. They shouldn’t have to read a brand story to get there.
The local pages are the bigger piece of work. There’s one for every state and 223 cities, written with details about each place, so the store has a real page to show when someone in Tucson searches for ATM repair.
Built withWordPress, WooCommerce and Elementor.
Goldstar ATMATM sales, service and placement in Oregon and WashingtonGoldstar ATM
Goldstar ATM is the main site for the company where I’m the marketing lead.
Goldstar does a lot. A visitor might want to buy a machine, get one repaired, have one placed in their business, or become a partner, a cash loader or a distributor. The site has to sort that out before it can sell anything.
What makes it work
- A1Pick your lane. The main menu is organized around what visitors want: Make Money, Keep It Running, Partner With Us and Get Involved.
- A2A color for each lane. Orange is Make Money (buying an ATM), gold is Keep It Running (repair, warranty and parts), green is Partner With Us (placements, event rentals and cash loading) and blue is Get Involved (the community side).
- A3The color follows you. Pages carry the color of their lane, so visitors can tell which path they’re on at a glance.
- B1An earnings calculator. Business owners can plug in their own numbers instead of trusting a sales claim.
- B2A call is always close. The “Book a Call” button stays within reach on every page.
Behind the build
I work on this site all the time, so it’s less a finished project than something I keep improving.
The hard part is how much Goldstar does. If every department gets an equal box on the homepage, the page ends up saying nothing. I sorted visitors by what they came to do and gave each lane its own color, so once someone knows they’re in the orange lane or the gold one, the rest of the site is easy to follow.
Built withWordPress with Elementor.
GStar AIAI receptionists and chatbots in Oregon CityGoldstar ATM
GStar AI builds AI receptionists, chatbots, CRM automations and custom agents for small businesses. I work on it in-house.
I built three things here: the website, a full CRM in GoHighLevel and GStar AI’s own AI receptionist.
What makes it work
- A1The website. The headline, “Meet your new sales team,” frames the product as staff, and every page leads to one first step: a free AI audit.
- A2A CRM in GoHighLevel. A fully built CRM runs the business behind the site, with pipelines, follow-ups and reminders.
- A3Its own AI receptionist. GStar AI has its own voice AI receptionist, the same product it sells: it answers 24/7, books appointments and follows up by text.
- B1Six specific services. Receptionists, chatbots, CRM automation, custom agents, lead generation and marketing each get a concrete use.
- B2A real office. The Oregon City address, phone number and support details sit right next to the automation pitch.
Behind the build
A lot of AI websites are black and purple, full of glowing blobs and very hard to understand. I wanted this one to look modern and still be clear.
The website was only one part. I also built the CRM in GoHighLevel and the company’s own AI receptionist, so GStar AI runs on the same tools it sells to everyone else.
Built withWordPress for the site, plus a CRM in GoHighLevel and an AI receptionist.
GSTAR FXLit ATM toppers and the ads on them in Oregon CityGoldstar ATM
GSTAR FX makes lit-up toppers that sit on ATMs, and sells the advertising space on them. I work on it in-house.
That means two audiences from the start: the business that owns the ATM and the advertiser who wants the space above it.
What makes it work
- A1Two ways in. Advertise on a topper, or get one for your ATM. The split happens right away.
- A2A headline that explains it. “Turn every ATM into prime ad space.”
- A3Styled like a sign. Black and gold, large serif type and marquee details, because the product is a glowing sign.
- B1Three steps. The topper goes up, the ads go on and the cash goes around.
- B2Tied to Goldstar. “A Goldstar ATM Company, Oregon City, OR” sits near the top instead of in the footer.
Behind the build
The product gets more confusing the longer you explain it. It’s a lit ATM topper, and you can buy ads on it, and the business can advertise itself on it, and so can other businesses.
What helped was realizing there are really two customers, so each one gets their own door. The look followed from the product. It lights up a room, and a plain white website would have undersold it.
Built withWordPress with Elementor.
GSBankCardMerchant services and Dual Pricing, nationwideGoldstar ATM
GSBankCard, or Goldstar Bankcard, sells card processing, point-of-sale systems and a Dual Pricing program to small and mid-size businesses in all 50 states. I work on it in-house.
Most owners have never looked closely at what processing costs them, so the site’s job is to show the savings in real numbers before anyone picks up the phone.
What makes it work
- A1A terminal up front. The hero shows a Goldstar terminal approving a card sale, next to a receipt that says how much the owner saved on it.
- A2The math side by side. “What $50K/month in card sales looks like” puts traditional processing next to Dual Pricing in dollars per month and per year.
- A3One first step. Every call to action asks for the same thing: send your last statement and get a free rate review.
- B1Switching in four steps. A rate review, a custom proposal, setup and going live, each explained in a sentence or two.
- B2Every state. A locations page covers all 50 states plus Washington, D.C.
Built withHand-coded HTML, CSS and JavaScript.
Goldstar Members OnlyWholesale club for ATM operators in Oregon CityGoldstar ATM
Goldstar Members Only is the wholesale side of Goldstar ATM. I work on it in-house.
Members get wholesale pricing, early access to inventory and private resources. Operators who process with Goldstar are enrolled automatically, and other ATM operators can apply. It needed to feel different from the main Goldstar store.
What makes it work
- A1Apply, then shop. Visitors apply for membership, and approved members unlock the private side of the store.
- A2An automatic discount. Members get 10% off storewide at checkout, with no coupon code to remember.
- A3A savings calculator. Operators can see what they’d save before they apply.
- B1More than products. The Vault, videos, troubleshooting guides and marketing assets come with the membership.
- B2It feels private. Black and amber, with “Welcome to the Inner Circle” on the door, so it’s clearly separate from the public site.
Behind the build
It shares products, people and a company with Goldstar ATM, and I didn’t want to build a second copy of the same website. Joining should change what you see.
The design starts from a velvet-rope idea and backs it up with real differences: automatic pricing, early access, member resources and a separate way into the store.
Built withWordPress, WooCommerce and Elementor.
KiloWheelzDie-cast collectors’ club, onlineLarge-scale brands
KiloWheelz is a die-cast collectors’ club built around limited releases and paid memberships. I built the whole site, start to finish, and it’s made to handle more than $100,000 in sales a week.
Under the garage look, the site runs memberships that decide who can see and buy what, drops built for a rush of orders, and a forum for the members.
What makes it work
- A1$100,000+ a week. The store, the checkout and the drops are built to handle more than $100,000 in sales every week.
- A2Members see more. Membership tiers control access. Some cars are members-only, members get their own pricing, and they get an early window on every drop.
- A3Built for drops. Each release is a limited, individually numbered run, like 2,000 Country Squire wagons, and DropLock, my own plugin, holds every buyer to their limit across all their orders.
- B1A working forum. The discussion boards let members trade photos, show off their shelves and vote on future drops, and every member has a profile.
- B2Every release gets a bay. The collection lives in numbered garage bays, BAY 01, BAY 02, BAY 03 and on, instead of a product grid.
- B3Members get a number. Each member has a KiloWheelz number that shows up on their profile and in their garage.
Behind the build
This one keeps growing. It started as a site for a die-cast brand, and then came memberships, member numbers, limited drops, profiles, a collection and a community. At that point it wasn’t a normal store anymore.
So I gave the pieces names that fit the hobby. Cars go in bays, members have numbers and collections live in garages. Those sound like small choices, but together they make the site feel like it was built by collectors.
Built withWordPress with Elementor and WooCommerce, plus WooCommerce Memberships for access, Ultimate Member for profiles and wpForo for the forum.
Sub FactorySandwich shop in PortlandSmall business sample
Sub Factory is a sandwich shop on SE Foster Road. They had no website, only a Google listing with 570 reviews averaging 4.8 and photos of their printed menu.
I made them a sample site to show what one could do for them. It had to put the menu, the hours and platter orders in one place.
What makes it work
- A1A conveyor belt of subs. The homepage opens on subs riding a conveyor belt, next to a time card that shows whether the shop is open right now.
- A2Gauges for the big three. The three biggest subs each have a gauge that counts the meats.
- B1Platters on a work order. Platter orders go out on a work order slip that gets stamped when it sends.
- B2Their customers talk. Quotes from 61 of their Google reviews run through the site.
Behind the build
The factory idea came straight from the name. Subs go down a belt, the hours are a time clock, and platter orders are work orders that get stamped.
Built withHand-coded HTML, CSS and JavaScript. No WordPress.
Tom’s RoofingRoofing contractor in SE PortlandSmall business sample
Tom’s Roofing is a roofing contractor in SE Portland. They had no website, and their Google listing had 61 reviews averaging 4.8.
The sample site had to show their real work and answer what people want to know before they call a roofer.
What makes it work
- A1Rain on the homepage. Rain falls over the homepage photo until you turn it off.
- A2A roof, start to finish. Their own job photos show a roof going on from tear-off to cleanup, with a before and after you can drag.
- B1A page for realtors. Realtors came up a lot in their reviews, so there’s a page for realtors and landlords.
Behind the build
I read through their reviews before I started. Realtors came up again and again, so they got a page of their own.
Built withHand-coded HTML, CSS and JavaScript. No WordPress.
Oregon Trail AsphaltPaving contractor in Happy ValleySmall business sample
Oregon Trail Asphalt is a paving contractor in Happy Valley. Their Google listing linked to a website that said “Site not found,” even though they had 75 reviews averaging 4.8 and dozens of customer photos.
The sample site had to get estimate requests to them and show off the photos their customers had already posted.
What makes it work
- A1Blacktop and road signs. The colors and lettering come from fresh blacktop and highway signs.
- A2A sign for an estimate. The estimate form looks like a highway sign and sends the request straight to them.
- B1Before and after. Their customers’ photos make before and afters you can drag across.
Behind the build
Their customers had done half the work already. There were dozens of photos on their Google listing, so the gallery and the before and afters are built from those.
Built withHand-coded HTML, CSS and JavaScript. No WordPress.
Nomad MixTrail mix company in PortlandSmall business sample
Nomad Mix makes trail mix in Portland, five blends named after Pacific Northwest landscapes. They asked to see what I’d do with their brand. Their site was a Square Online store.
They already had great bag designs, a photo of every blend in a bowl and the story of why the owner started the company, so the sample site is built out of those.
What makes it work
- A1Stir the mix. Every piece of trail mix on the site is cut from their bowl photos. The pieces pile up on the homepage and you can stir them.
- A2A hike through the blends. Scrolling down is a hike through the five landscapes the blends are named after, and each blend drops into its bowl when you get there.
- B1Build a handful. At the bottom you can build a handful from any of the blends and shake it, with a button or by shaking your phone.
Behind the build
I loved their brand before I touched anything. The bags, the blends and the message stay exactly as they are, and the site turns them into something you can play with.
Built withHand-coded HTML, CSS and JavaScript, with Matter.js for the falling trail mix. No WordPress.
Secular Rescue FundEmergency fund for East African immigrants, worldwideSmall business sample
The Secular Rescue Fund is a new emergency fund for East African immigrants living and working abroad. It had no website yet, so the founder sent me a written introduction to the fund and a site from a similar group they liked.
The sample site had to explain the fund, sign up members and their families, and give members a place to ask for help.
What makes it work
- A1The earth at night. As you scroll, the homepage follows the lights to the cities where East Africans have gone to work, from the Gulf to Europe to North America.
- A2Join online. People can join on their own or with their family and pay for the membership online.
- B1A members’ area. Members get their own area with their receipts, who’s on their membership, their next of kin and the requests they’ve sent for help.
- B2Where members live. Members add where they live, so the fund’s team can see who’s in a city when something happens there.
Behind the build
The founder kept asking for things that help in an emergency, like knowing where members live and who to call. Those shaped the members’ area more than anything else.
Built withHand-coded HTML, CSS and JavaScript. No WordPress.