In this era of algorithm-dominated social media, do you ever miss the early internet, a space for free customization and unique personalities? This article shares my real-life experience of building a complete personal website from scratch, along with the gains and reflections from this journey.
Today's social platforms have lost their way:
More critically, the content you create on these platforms doesn't truly belong to you. Algorithms decide who sees your work, and platform rules can change at any moment.
Six months ago, I stumbled upon a video about the "Indie Web." That's when I discovered an entire community of people building personal websites in their own way—without relying on big platforms, taking full control of their digital space.
This reminded me of browsing the creative personal blogs of my childhood: each site had a unique design, and the owners shared content they genuinely loved. That pure creative freedom deeply captivated me.
Although I had some prior knowledge of HTML and CSS, I hadn't touched code in over a year and had forgotten almost everything. In the beginning:
The biggest challenge: How to make the website look less like a "beginner's practice assignment"?
I decided to go back to the classics—mimicking the vibrant, element-rich personal homepage styles of the early 2000s. I used:
Once the website was mostly complete, new problems arose: the more I looked at it, the less satisfied I became.
Whenever I browsed other excellent personal websites, I felt my own work was like "baby doodles." Especially after seeing cool sites with CRT monitor effects, I started doubting my design.
At this point, there were two options:
I chose the latter and made a bold decision—to add a theme switching feature.
To implement dual theme switching (light mode + retro CRT dark mode), I had to relearn JavaScript.
My initial implementation was quite clumsy:
Later, I discovered I could solve this using a component-based approach:
This process reminded me of the joy of learning React—the unparalleled sense of accomplishment when you find a more elegant solution.
The light theme uses a pink color scheme, clean and vibrant; the dark theme simulates the effect of an old CRT monitor, with a starry background and scanline filters to create a cyber-retro atmosphere.
The theme switching button has a hover preview effect—when the mouse passes over it, you can faintly see the appearance of the other theme. I'm particularly satisfied with this small detail.
The blog section is my proudest work. Using the 98.css framework, it faithfully recreates the Windows 98 desktop environment:
I wrote all the window logic using native JavaScript. When you click the minimize button, the window truly shrinks to the taskbar; clicking close makes the icon disappear, but it can be reopened from the desktop.
In addition to visual effects, I've added several practical features:
These features transform the website from a static display into a living, interactive space.
Initially, I chose NeoCities to host my website—it's the most well-known Indie Web platform. However, I later encountered several issues:
Although NecoWeb is newer and has a smaller community, its advantages are significant:
For creators who prioritize content ownership and creative freedom, NecoWeb is a better choice. This is especially important if you're concerned about your work being used by AI without compensation.
💡 MasLogin Tip: If you need to securely manage multiple website accounts (e.g., running several independent websites simultaneously), you can use MasLogin anti-detection browser. It creates independent browser environments for each account, preventing platforms from detecting association and protecting the security of your multi-account operations.
Although personal websites are primarily aimed at desktop browsing, I've implemented basic responsive design to ensure mobile users can access the content normally.
For easier future maintenance, I've refactored repetitive elements like the sidebar, header, and footer into reusable components. Now, a change in one place updates the entire site—significantly improving efficiency.
Looking back at my early code, I found many redundant and non-standard practices. Although the functionality was correct, as a learning project, I decided to gradually refactor this "technical debt."
The important thing is: Don't give up on publishing just because the code isn't perfect. Get your work online first, then refine it slowly—that's the true creative process.
I thought this project might make me tired of programming, but it was the opposite. The process of solving practical problems and seeing the results immediately presented ignited my passion for learning more than any tutorial could.
I even started learning Python, purely because I enjoyed the process of coding.
In today's world flooded with AI tools, the greatest advantage for human creators isn't perfection, but authenticity and uniqueness. Is my website code messy? Yes. Is the design professional? Not exactly. But it's 100% made by me, carrying my aesthetic, ideas, and learning journey.
This imperfection is precisely its most precious value.
On your own website, you don't need to worry about:
This sense of complete control is something no social platform can offer.
Recommended resources:
The Indie Web community is very friendly and people are happy to share experiences and resources. Browsing other people's websites not only provides inspiration but also allows you to learn techniques by "viewing source code."
Building a website is a marathon, not a sprint. My website took several months from start to basic completion. During this time, I had countless moments where I wanted to give up, but each time I overcame a technical challenge, my motivation was reignited.
This project reminds me that the internet was meant to be a playground for human expression, not a farm for data harvesting. When we take back creative control for ourselves, we discover that those "imperfect" creations are the ones that resonate most deeply.
If you're tired of social media algorithms, why not try building your own little corner? Don't know how to code? No problem, there are plenty of tutorials and tools available to get you started. The most important thing is to take action, learn, grow, and enjoy the joy of creation throughout the process.
Feel free to visit my website (link in the comments section) and leave your mark on the guestbook. I also look forward to the day I can encounter your work in some corner of the Indie Web.
Yes! While there's a learning curve, HTML/CSS are the easiest programming languages to start with. There are abundant free tutorials online, such as FreeCodeCamp, which offers systematic courses. Even learning for just 30 minutes a day, you can grasp the basics within a month.
NeoCities has a larger community and more resources, making it suitable for beginners who want to get started quickly and receive feedback. NecoWeb focuses more on privacy protection and functional freedom, appealing to users with some existing knowledge who value content ownership. Both offer free plans, so you can try NeoCities first and then consider migrating if needed.
The basic version is completely free: NeoCities/NecoWeb offer free hosting, eliminating the need for domain or server purchases. If you want a custom domain (like yourname.com), it costs around $10-15 per year. Paid membership features (like larger storage space) are typically around $5 per month.
You can take the following measures:
robots.txt file.While 100% prevention isn't guaranteed, these steps can significantly reduce the risk of being scraped.
Outline