A few years ago, I used Wix to manage and maintain my personal photography website, sharing award-winning works and materials shot for two equipment brands. However, in the current landscape, this has clearly become an "obsolete" solution:
- Open-source or open architectures are maturing rapidly, such as Astro, Netlify, etc.;
- The significant improvement in AI coding capabilities has drastically reduced the amount of code maintenance required for static websites;
- Cloudflare has integrated a series of tasks needed for website building, including DNS resolution, network security, code hosting and maintenance, and storage space, along with seamless Github integration and adapter support for frameworks like Astro.
For an individual, these factors have lowered the barrier to building and maintaining a website to an extremely low level: the code is grounded in an open architecture, AI handles "personalized" functional expansion, and the user focuses more energy on content. Once finished, a simple "commit & push" is all it takes for the pre-configured Cloudflare to automatically complete the "build & deploy." In fact, it's not much different from writing a WeChat Official Account article.
This is also why I have consistently believed over the past period that, aside from vertical applications (like photo processing), over 90% of the remaining work should be completed within an IDE like Cursor.
Indeed, since the release of Claude-3.7, I have been gradually shifting my working mode.
As shown in the image below, WeChat articles are still completed in Tencent's page editor (actually, there are projects that can directly translate Markdown into WeChat articles, but the improvement in efficiency and resource management is limited, and I'm lazy).
Recently, the time I can concentrate at my desk has surged again, allowing me to start implementing several plans for content sites.
The first one is a small-scale experiment: testing the current model's ability to "optimize" the Astro framework.
So, I created a blank Astro template:
npm create astro@latest
Then I entered the following prompt in Cursor:
ok, polish the project to be a photographer's art website:
- gallery of photos;
- reviews of gears;
- blog style articles;
- support videos;
First, I used Gemini-2.5-Pro, which I've been highly praising recently.
The process was fast, taking about three minutes. The result is as follows:

It indeed created a framework in a very short time, and the model summarized the work and proposed next steps.

(Normally, the trial would have ended here, but I wanted to see how Gemini-2.5 would continue. So, in the actual test, I proceeded with multi-turn dialogues. However, due to structural issues, I'll put that part later and look at Claude-4's results first.)
With the same prompt, I switched the model to Claude-4-Sonnet in Cursor. It ran for about 20 minutes, but the results surprised me.

Of course, the results above had CSS adaptation issues. After asking the model to adjust it:

Yes, it seems this is already a complete website:
- The model "created" a photographer: Alex Chen;
- It automatically added a large number of sample images;
- It created several "gear reviews" and blog posts, though clicking into them reveals they have no content.
This is almost a "website" ready to go: the rich content almost unreservedly "reveals" Claude-4's training corpus. The images mostly come from Unsplash; although that's a site for free downloads (even for commercial use), I still worry about its future.
However, once you look at the project's code structure, the problem arises: the content is almost entirely hard-coded, with insufficient utilization of Astro's strengths. It would be a major issue for users to add content.

Users should at least be able to upload photos under public and have them reflected on the page, rather than modifying code.

The same applies to articles.
So, Claude-4 produced a flashy but impractical demo.
Meanwhile, I noticed a very interesting phenomenon: when I tried building the site multiple times, the results were basically similar each time; the structure didn't change much, and crucially, the images used were almost identical. I haven't found a convincing explanation for this yet.
Let's draw a dividing line here, as I'm returning to Gemini-2.5-Pro.
In contrast, when I continued the interaction with Gemini-2.5-Pro, it simply paused to ask me to upload two photos and then proceeded to finish all the remaining content, including fixing its own bugs.

(The video above is directly playable. Interestingly, while in the Claude-4 generated site's "Video" section each card looks like different content, clicking play links to the exact same video as above (yes, the same video as Gemini-2.5-Pro's result), every single time.)
Yes, Gemini-2.5-Pro's result looks simpler, but if you look at the code structure, you reach a completely different conclusion.

Indeed, if the user wants to add images, they can just upload them to the corresponding directory; if they want to add articles, they can just write Markdown.
Gemini-2.5-Pro's result is nowhere near as pretty as Claude-4-Sonnet's, but it is a result that can be delivered directly to a user for content creation.
If you want a "Fundraising Demo," choose Claude-4. If you want something practical, choose Gemini-2.5-Pro.
The above is a small interlude from my work. I've turned it into an article, as the process itself can be the content delivery.
One more tip: as AI Coding takes on more work and the "One-Person Company" model becomes increasingly viable, the most important infrastructure for an individual is not computing power, but security—and the one-stop integration of other resources starting from security.