Events & Rentals · Lincoln, California
Linen & Oak Event Rentals
Linen & Oak rents linens, tabletop, furniture and decor for weddings and events across five Northern California counties. Its Squarespace site showed the pieces, but visitors could not picture them together or turn a list into a quote in the rental software the business runs on. We rebuilt it as a custom site that does both, connected to her Goodshuffle Pro account.
By George Shvaya ·
The build in numbers
- rental pages, server-rendered
- 400+
- pieces in the table builder
- 270
- event-type pages
- 14
- old URLs redirected
- 211
Counted from the live sitemap and the project repository on October 20, 2026. The site launched this month, so search results are not reported yet.
The homepage
The homepage opens on one of her own styled tables and goes straight to the four rooms of the collection: tabletop, linens, furniture and decor. The publications that featured her work sit under the hero.


What we built
A catalog built from her real inventory
Every linen, plate, glass, flatware set, chair and candle holder has its own page, grouped into collections the way planners shop. Product pages are rendered on the server, so search engines and AI crawlers read the piece, its sizes and its price without running scripts.
Build a Table
Visitors choose a table linen, plates, glassware, flatware and a centerpiece from 270 pieces that belong on a place setting. The chosen pieces appear side by side straight away. One button turns up to five of them into an AI photograph of the setting, labeled on the image as an illustration.
An event list and a quote request
Pieces go into one event list with quantities, an event date, a guest count and the venue. The list can be shared by link. The total is shown as an estimate for the pieces only: the business confirms the date, delivery and setup when it replies.
Quotes that land in Goodshuffle Pro
When a visitor sends the list, the server posts it to Goodshuffle Pro as a wishlist, which becomes a quote in her account, and emails the full request with the event details. Pieces that are not matched to a Goodshuffle item are listed in the email, so nothing is lost.
Pages for events and places
Fourteen event pages, from weddings and rehearsal dinners to baby showers and wine gatherings, each lead with the collections that suit the occasion. Area pages cover the five counties she delivers to and eight towns within them.
Consultations and the brand
A consultation request offers the showroom, a call or a video meeting, and the confirmation email carries a calendar file. Her Instagram, her brand film and the publications that featured her work sit next to the catalog, in the palette she chose.
Build a Table, from five real pieces
We chose an olive green table linen, a white salad plate, the Josephine flatware, a coupe glass and a pair of gold cordless lamps on the live site. The photograph below came back in under ten seconds. The label at the bottom is part of the image the site shows.


Decisions that mattered
Stock levels never reach the page
Her rental software tracks quantities for almost every item. She did not want customers to see them. Quantities are never rendered and never published in structured data, and an automated test fails the build if one ever reaches the product schema.
The server sets the price
The browser sends only which pieces and how many. The server looks up every price from the catalog again before the request is emailed or posted, so a tampered request cannot change a quote.
The wishlist has no notes field
We tested what Goodshuffle’s wishlist accepts before sending a single real request. It takes contact details, start and end dates and items with quantities, and rejects anything else. Venue, guest count and notes therefore travel in the email, and the two channels are sent together.
The visitor never writes the prompt
The browser sends only the chosen pieces. The server resolves each chosen piece to its own catalog photograph and sends those to Google’s Gemini image model, which closes off prompt injection and arbitrary image fetches. The label on the photo calls it an illustration and names flatware as the piece most likely to differ, because flatware drifted in three of four of our tests.
Nothing breaks at the move
All 211 product URLs from the Squarespace site redirect to their new pages, so links from planners, blogs and search results still work.
Tested like software
Thirty-nine test files cover pricing, the Goodshuffle payload, the visualizer rules, service-area copy and contrast on every colored band, and they run on every change before it can deploy.
The Goodshuffle side is written up in full in connecting Goodshuffle Pro to a custom website.
Stack
- Next.js 15
- React 19
- TypeScript
- Tailwind CSS 4
- Vercel
- Goodshuffle Pro
- Google Gemini image model
- Resend email
- Vitest
Everything runs on the client’s own accounts: domain, hosting, email and Goodshuffle.
Run a rental company?
We build rental sites around your inventory and the software you already use.