From Idea to E-Commerce: Building Raven Digital with AI

March 24th, 2026

Where It Started

My son is trying to run a photography and design business, and we realized the process for delivering photos to customers needed improvement. Until now it’s all been manual – he takes the photos, edits them, adds watermarks, creates PayPal invoices, and sends everything through email. It works, but it’s slow and limits how many customers he can realistically serve.

The idea was simple: build a website where customers could browse watermarked gallery images, add what they wanted to a cart, pay online, and automatically receive their non-watermarked high-resolution photos via email. Clean, professional, automated.

The problem? That’s not a simple website. That’s an e-commerce platform with payment processing, session management, file delivery, image watermarking, dynamic pricing, and email automation. It is something I, as a professional developer, could do, but in my spare time it’s likely to take a month or two of working here and there.

So I decided to try something different. I’d build it myself, using Claude as my development partner. I’d let Claude do all the main development and I would think more about design and the best way to implement the platform.

The Tech Stack

We landed on ASP.NET Core hosted on Ionos shared hosting. The choice was partly practical as Ionos offers affordable Windows hosting with .NET support. The stack included:

•      ASP.NET Core Razor Pages for the front-end and page logic

•      Stripe for payment processing

•      MailKit/MimeKit for email delivery via SMTP

•      SixLabors ImageSharp for server-side watermarking

•      Session-based shopping cart (no database required)

Some Observations

I expected the core features to be the hard part, the cart, the checkout flow, the image delivery. Those did take work, but the real challenge turned out to be the hosting environment.

Ionos, it turns out, blocks outbound connections to external services. When we tried to connect to Stripe’s API directly, we got 504 Gateway Timeout errors. Same story with SendGrid for email. The app worked perfectly on my local machine and completely broke the moment it hit production.

This sent us down a rabbit hole of debugging – network-level diagnostics, proxy configurations, alternative architectures. Eventually we discovered that Ionos routes all external HTTP traffic through an internal proxy server, and we had to explicitly configure every outbound connection (Stripe, HTTP clients, even the .NET WebRequest defaults) to use that proxy.  I found the help document and sent it to Claude and it was fixed.

It took several chats of methodical debugging and multiple sessions as with the $20 pro plan we had forced breaks as we ran out of time with Claude, but we got there. Claude helped me understand not just what to change but why, which made me a better developer throughout the process. Claude also made recommendations that were in the complete wrong direction as Claude can sometimes not consider the cost or the scope of the project when making recommendations, but that’s where my development experience helped steer away from just blindly implementing new functionality that wasn’t really required to get this going.

The Features We Built

•      Dynamic photo gallery that auto-scans directory structures, no manual configuration needed

•      Folder-based pricing (naming a folder ‘Folder_Name_15’ automatically sets $15/image pricing)

•      Watermark protection throughout the entire customer journey (gallery, lightbox, AND shopping cart)

•      Stripe checkout integration with Ionos proxy configuration

•      Webhook handling for reliable post-payment processing

•      Email delivery of purchased non-watermarked images via Ionos SMTP

•      Quote request form with reCAPTCHA v3 spam protection

•      Lightbox image viewer with keyboard navigation and in-lightbox cart

•      Sticky navigation header and back-to-top buttons for gallery UX

•      SEO optimization with Schema.org structured data and geo-targeting

•      Favicon and branding implementation

Interesting Notes From Development

A few things stood out during this build that I didn’t expect going in.

First, Claude caught security issues I hadn’t thought of. When we built the shopping cart preview, I hadn’t considered that showing the actual image files in the cart meant customers were seeing non-watermarked versions. Claude flagged this and we implemented cart watermarks, a detail that could have cost real money if we’d shipped it wrong.

Second, the debugging methodology was genuinely useful. When something broke, Claude would walk through a systematic approach: browser console first, then server logs, then network-level diagnostics instead of just guessing and offering random solutions.

Third, I learned as we went. I came in with solid knowledge of C# but not deeply familiar with ASP.NET Core’s static files middleware, HttpClientFactory proxy configuration, or Stripe’s webhook verification model. By the end, I understood all of it, not just the code, but the concepts.

Claude also did some things where my design experience was important. Its original solution was to have a flat rate for all images and I helped it see the value in a folder naming structure for pricing. It also recommended manually configuring folders and having that in the actual code, but I helped design a system that constructed the images available completely by the folder structure on the server.

The Result

Ravendigital.org is live, accepting real payments, and automatically delivering purchased photos to customers. My son can upload photos from an event, organize them into priced folders, and customers can browse, buy, and receive their images without any manual intervention.

For a small photography business, that’s genuinely transformative. What used to take hours of manual work per event is now fully automated.

Would I have been able to build this without Claude? Honestly, yes but it would have taken much longer and I would have hit more walls without as clear a path through them. Some of the ideas I had I would have had to research and experiment but in this case using Claude, I just had to tell it the idea and it would implement it. Having an always available, technically capable collaborator who could explain tradeoffs, generate code, debug errors, and catch things I missed made the whole process faster and more educational.

That feels like the right way to think about it. Not “Claude built my website,” but “Claude made me a better, faster builder of my website.”

In another interesting twist as I wrapped up my article, I thought, “What would Claude do if I asked it to do the same thing?”  It had some interesting insights and even a small jab when it said I wasn’t a professional developer, ouch… but here it goes:

I asked:

In Conclusion

I would say Claude definitely helped me accomplish my goals much faster than without it (although maybe next time I might not ask it to write its opinion on my coding ability!). At Solution Street, we are using AI every day to help us get things done more efficiently. If you’d like to talk to us about how we can help accelerate your product development, reach out and we’d be glad to help!