惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Apple Machine Learning Research
Apple Machine Learning Research
Y
Y Combinator Blog
量子位
The Register - Security
The Register - Security
雷峰网
雷峰网
人人都是产品经理
人人都是产品经理
PCI Perspectives
PCI Perspectives
S
Secure Thoughts
V
V2EX - 技术
大猫的无限游戏
大猫的无限游戏
博客园 - Franky
C
Comments on: Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Google DeepMind News
Google DeepMind News
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
小众软件
小众软件
博客园_首页
S
Schneier on Security
S
Security @ Cisco Blogs
AWS News Blog
AWS News Blog
月光博客
月光博客
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
CERT Recently Published Vulnerability Notes
NISL@THU
NISL@THU
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
V
V2EX
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
C
Cisco Blogs
Project Zero
Project Zero
博客园 - 叶小钗
Cisco Talos Blog
Cisco Talos Blog
博客园 - 聂微东
罗磊的独立博客
N
News | PayPal Newsroom
酷 壳 – CoolShell
酷 壳 – CoolShell
李成银的技术随笔
V
Visual Studio Blog
The Cloudflare Blog
IT之家
IT之家
M
Microsoft Research Blog - Microsoft Research
J
Java Code Geeks
博客园 - 三生石上(FineUI控件)
N
Netflix TechBlog - Medium
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
宝玉的分享
宝玉的分享
U
Unit 42
Hugging Face - Blog
Hugging Face - Blog

DEV Community

XiHan Snore Coach: Privacy-First On-Device MedTech Guardian powered by Gemma 4 Mobile Why AI Coding Agents Hallucinate and How to Fix It mcp-probe v1.4.0: Contract assertions for production MCP servers Google I/O 2026 Wasn't About One More Model. It Was About the Agent Stack. How I built 100+ crypto calculators in 6 languages on Astro The Dawn of Local Multi-Agent Architectures: Why Gemma 4 Changes Everything for Cloud Developers # I Told My AI to Simulate a Planet for 10,000 Years. It Built the Whole Thing Itself. 18/30 Days System Design Questions! From Hackathon Chaos to Clean CLI: Reviving My Daily Routine Analyser with GitHub Copilot Building a Home Lab with Proxmox and Terraform (for Kubernetes) PolicyAware vs Guardrails vs AI Gateways vs Model Routers: The Comparison Every AI Engineer Needs to Read Partner: An AI That Does Research While You Sleep Rugby Fundamentals as Software Concepts - Mapping the Pitch to your Code Base I Let Claude Code Run Unsupervised for 24 Hours. Here's What Happened. Why Zed Is Replacing VS Code in My AI-Augmented Workflow Build a scroll-driven WebGL hero in 30 lines Karpathy's LLM Wiki? No Code with Claude or Github Copilot! Why Platform Governance and Transparency Matter for Developers and Freelancers I built a Flutter CLI that generates Clean Architecture in seconds Using an LLM to automate a task that used to take hours by hand CyberArena – Interactive Cyber Security Simulation & Threat Analysis Platform Tile Extractor Mathematical Functions in CSS: clamp, min, max and How They Simplify Responsiveness Polyglot Persistence in Microservices: Let the Domain Choose the Database 190 Countries, Zero API Calls: Shipping Static Data in a Chrome Extension Your AI Writes Code Fast. Here’s How to Check It Before Shipping qwen2.5-coder is too slow for Claude Code on a Mac. Here's the fix. Building Automated Text-to-Video Pipelines with AI Can Gemini Become an Offline AI Tutor? Lessons from Building Educational AI OPRIX : From a simple messaging web app to a well structured and enhanced UI messaging web app Why React + TypeScript Nullability Slowly Becomes Exhausting Why AI Agents Need a Project Layer - Part 1 Stop Hand-Editing MCP Configs: A Zero-Dependency Go CLI What I Learned Working With Microsoft, SQUAD(GTCO), and Different Tech Communities 🧠 Hermes Agent Assistant — A Modular AI Agent System with Planner, Executor & Memory Spring Boot Auto-Configuration Source Code: Nail This Interview Question The Ultimate Guide to Free AI API Keys: 6 Platforms You Need to Know Why 91% of AI Agents Fail in Production (And What the 9% Do Differently) TryHackMe | Battery | WALKTHROUGH Stop Guessing Your Regex — Test It Live in the Browser I Built FreelancEye, an Open-Source Mobile PWA for Finding Clients Beyond the Hype: My Production Playbook for Docker Swarm Top AI App Builder Platforms with Integrated Backend, Hosting & Database ECS vs EKS in 2026: An Honest Comparison from Someone Who Has Run Both in Production Hardening Your Node.js App Against Supply Chain & Remote Code Execution Attacks linux commands A Practical GEO Case: How an AI System Started Recommending Our Blog Your AI Agent Works 24/7 and Earns $0. I Built the Fix. Your AI Trading Agent Will Lose All Your Money — Here's How To Stop It Google I/O 2026: What Happens When Everything Connects? Why AI writes software but doesn’t build a good product Beyond the Hype: How Google I/O 2026 Secretly Democratized Production-Ready AI Agents with Managed Sandboxes. The Killer Assumption Test: How to Spot Doomed Product Decisions Before You Ship Stop Describing Your Bugs — Just Screenshot Them # I Built an AI Website Builder and Here's What Actually Happened Cooking an AI Campaign in 5 Minutes with Google Cloud AI APIs Your PM Retrospectives Are Lying to You How I Built a Free, Self-Hosted Pipeline That Auto-Generates Faceless YouTube Shorts TypeScript 54 to 58: The Features That Actually Matter in 2026 How to Tailor Your CV to Any Job Posting in 2026 The 7-day SaaS MVP loop: ship fast, then validate with people who actually show up 95. Fine-Tuning LLMs: Make a General Model Do Your Specific Job What Is a Frontend Developer Roadmap and Why You Need One Google shipped three Gemini "Flash" models. Picking the wrong one could 6 your AI bill Building an MCP server so Claude can query my SaaS analytics directly Google I/O 2026 and the Rise of the AI Ecosystem Your Docker Builds Are Slow Because You're Doing It Wrong (And I Built a Tool to Prove It) How do you verify GitHub contributions without trusting self-reported skills? CV vs Resume: What's the Difference and Which Do You Need? student Devs: Build AI Agents & Compete for $55K in Prizes 🚀 How to Write a Cover Letter That Actually Gets You Interviews Battle-Tested: What Getting Hacked Taught Me About Web & Cyber Security Unda folders za kuandika code >> mkdir src >> cd src >> mkdir controllers database routes services utils >> cd .. Directory: C:\Users\mwaki\microfinance-system Mode LastWriteTime Length Name Code Coverage .NET AI slop debt" is technical debt on fast forward. Nobody's ready. Multi-Head Latent Attention (MLA) Memoria - A Local AI Reading Companion Powered by Gemma 4 Stop Trusting Your Accuracy Score: A Practical Guide to Evaluating Logistic Regression Models Serious Question: Is the Developer Job Actually in Risk Due to AI? published: true tags: #discuss #career #ai #help rav2d: We ported an AV2 video decoder from C to Rust — here's why Your New Domain's First Week of GA4 Is a Lie: 4 Days of Raw Data from a Launch Gemma Guide - Real-Time Spatial Awareness for Blind Users From YAML to AI Agents: Building Smarter DevOps Pipelines with MCP A Field Guide to Human–AI Relations (For the Newly Bewildered Mortal) The AI Agent That Learns While It Works — A Complete Guide to Hermes Agent Inviting collaborators to work on ArchScope ArchScope is an interactive web-based tool that lets you design, visualize, and test system architectures with real-time performance simulations. Github - ArchScope is an interactive web-based tool that lets you Gemma 4: Google's Open-Weight AI Is a Game Changer for Developers Confessions of a Git Beginner: Why the Terminal Stopped Scaring Me Docker 容器化实战:从零到生产部署 🚀 I Built a Full Stack Miro Clone with Real-Time Collaboration using Next.js Building an African Economic Data Pipeline with Python, DuckDB & World Bank API llms.txt vs robots.txt vs ai.txt: The Developer's Cheat Sheet Intigriti Challenge 0526 Writeup Business Logic Flaws: How Attackers Skip Steps in Your App to Get What They Should Never Have Why Vibe Coders Need Boilerplates to Save Time, Tokens, and Build More Secure SaaS Projects Idle Cloud Cost Is the New Egress Cost Quark's Outlines: Python Traceback Objects Ghost in the Stack (Part 1): Why uninitialized variables remember old data Building a High-Performance Local Chess Assistant Extension with WebAssembly Stockfish and Manifest V3 Breaking the Trade-off Between Self-Custody and Intelligent Automation on the Stellar Network
From Building WordPress Websites to Node.js APIs: My Honest Full Stack Journey
Kunal Pareek · 2026-05-24 · via DEV Community

Five years ago I was building WordPress websites for clients. The kind of work where you install a theme, build a child theme on top of it, write custom PHP for features the theme never imagined, register post types for every content model the client needs, and wire everything together with hooks and filters until it actually does what the client asked for.

That was the job. Not dabbling. Full time. Real projects. Real deadlines.

Today I write Node.js APIs, React dashboards, Next.js applications, and Vue.js interfaces. WordPress is still in the stack on most projects. But the stack is bigger now.

This is the honest story of how that happened. Not a tutorial. Not a career advice post. Just what actually occurred.

What building WordPress websites actually taught me

Before anything else I want to be clear about what WordPress website development actually involves because the internet has a habit of dismissing it.

When I was building recruitment and staffing platforms on WordPress I was writing custom PHP classes. Registering custom post types and taxonomies. Building complex meta box systems for managing job listings and candidate profiles. Writing hooks and filters to modify WordPress core behavior without touching core files. Building custom REST API endpoints for frontend JavaScript to consume. Handling user roles and capabilities so recruiters saw different interfaces than candidates.

That is real software development. It taught me how a large PHP application is structured. It taught me to write code that other developers could extend without breaking. It taught me to think about security because WordPress has strict standards and gets you in the habit of sanitizing everything that comes in and escaping everything that goes out.

It also taught me something most tutorials skip: how to read someone else's code and understand a system you did not build. WordPress core is millions of lines of PHP written over twenty years by thousands of contributors. Learning to navigate that codebase, understand its patterns, and work with it rather than against it is a genuinely transferable skill.

I did not know at the time how much all of this would matter later.

The first project that pushed beyond WordPress

I was working on a staffing platform. WordPress was handling the content, the job listings, the user profiles, the admin dashboard. But the client needed automation. Resume parsing. Third party CRM sync. Automated email sequences triggered by candidate status changes. Workflow automation that ran on schedules.

Forcing this into WordPress was technically possible. WordPress has cron. WordPress has hooks you can fire on status changes. But the more I thought about it the more it felt like the wrong tool for the job. WordPress is designed around content management and web pages. What the client needed was a background processing system.

So we built a separate Node.js service alongside WordPress. WordPress remained the content layer. Node.js handled the automation layer. They communicated over REST API calls.

I had to learn Node.js properly for this. Not just reading tutorials. Actually building something in production that real people depended on.

The Node.js learning curve was not what I expected

I assumed the hard part would be JavaScript. I had been writing JavaScript inside WordPress for years. jQuery interactions. Block editor components. Admin page scripts. JavaScript was not new to me.

The hard part was the runtime model.

In WordPress PHP handles one request at a time in isolation. You write code that runs top to bottom. When it finishes the process ends. The next request starts fresh.

Node.js runs continuously. It handles multiple requests concurrently through an event loop. If you write blocking synchronous code you freeze the entire server not just one request. Every file read, every database query, every external API call needs to be async or you are doing it wrong.

My first week of Node.js code was full of synchronous operations that worked fine in isolation and would have been a disaster under any real load. I was writing PHP that happened to use JavaScript syntax.

It took about three weeks of real project work before the async model genuinely clicked. Before I stopped fighting it and started working with it. The moment it clicked it felt obvious in retrospect the way most things do once you understand them.

Building WordPress websites had given me something I did not realize

When I started building Express.js APIs I naturally wrote validation on every input. I checked that the authenticated user had permission to perform each action before performing it. I treated every piece of incoming data as potentially malicious until proven otherwise.

My colleagues on the project who came from other backgrounds did not have this habit by default. They would write an API endpoint that accepted whatever was sent and trusted it.

WordPress had trained me so thoroughly in defensive coding that I did it automatically without thinking about it. Sanitize inputs. Escape outputs. Check capabilities. Never trust user supplied data.

In the WordPress plugin ecosystem these practices are enforced. The Plugin Review Team will reject your submission if you violate them. You internalize them because you have to.

In Node.js nothing enforces them. You can ship an insecure API and it will run fine. Until it does not.

The discipline I brought from WordPress website development into Node.js made my APIs meaningfully more secure than they would have been otherwise. That was the first time I understood that WordPress development was not a limitation I was moving beyond. It was a foundation I was building on.

Then a dashboard needed React

The staffing platform automation was running on Node.js. WordPress was handling the content. But the client needed a proper admin dashboard. Not WordPress admin. A custom interface showing real time data from the automation system, candidate pipeline stages, recruiter performance metrics, integration status.

WordPress admin was not the right tool for this. We needed something more interactive and more tailored.

React was the decision.

I had written React inside the Gutenberg block editor. Enough to understand components and props and the basic rendering model. But building a full React application with its own routing, state management, and API layer was different.

The first thing that confused me was that React has strong opinions and punishes you for working against them. Coming from WordPress where you can hook into almost anything and modify almost any behavior, React initially felt rigid.

State flows one direction. Data goes down through props. Events go up through callbacks. You do not reach into a component from outside and change it. You change the state that drives it and React re-renders it automatically.

Once I stopped fighting this and accepted it as a design decision rather than a limitation something shifted. The rigidity is the point. It makes large applications easier to reason about because you always know where data comes from and how it changes.

WordPress is maximally extensible. Any plugin can modify any behavior. This is incredibly powerful and also the source of extraordinary debugging complexity when things go wrong.

React trades extensibility for predictability. Different tradeoff. Different use case. Neither is universally better.

Vue.js through a different project

Not every client chose React. A different project had an existing frontend codebase in Vue.js. New features needed to be built on top of it. I learned Vue.js on that project while it was running in production.

Vue.js after React is genuinely pleasant. The template syntax looks like HTML with some extra attributes. The component structure has a clear organization. The reactivity system works more automatically than React's manual dependency tracking.

Vue.js also felt conceptually closer to WordPress templating than React did. In WordPress PHP templates you write HTML and embed PHP expressions inside it. In Vue templates you write HTML and embed Vue directives inside it. The mental distance is smaller than React's JSX which feels more like writing JavaScript that outputs HTML.

For teams coming from HTML-first or PHP-first backgrounds Vue.js has a lower entry barrier. For larger teams with complex state requirements React's ecosystem is deeper and more established.

Knowing both made me more useful across more types of projects. That was the practical outcome.

Next.js felt like something I had already understood

Next.js came into the picture on a project that needed both great SEO and a rich interactive frontend. Pure client side React would hurt search performance. Pure server side WordPress would not give the interactivity we needed.

Next.js was the answer.

What surprised me was how much my WordPress background helped with Next.js specifically.

WordPress developers understand server side rendering instinctively because WordPress has always rendered pages on the server. The server generates HTML. The browser receives it and displays it. Search engines can crawl it because the content is in the HTML not injected by client side JavaScript.

Many React developers who came from client side rendering backgrounds struggle with Next.js because thinking about what renders on the server versus the client requires a mental model they never needed before.

For me it was familiar territory in a new form. The server renders something meaningful. The client receives it and makes it interactive. This is a more sophisticated version of what WordPress has been doing since the beginning.

Next.js also forced me to make explicit decisions about data fetching that WordPress makes for you automatically. Does this data come at build time. Does it come at request time. Does it come from the client after page load. WordPress decides this based on its own architecture. Next.js requires you to decide deliberately.

Making those decisions explicitly made me think more carefully about performance than I ever had when WordPress was handling it automatically. Discomfort that became a useful skill.

What the full journey changed

The biggest shift was not learning new syntax or new frameworks. It was learning to think about systems rather than just applications.

WordPress is a monolith. The database, the business logic, the templating, the admin interface all live together. This is a strength for many use cases. It is also a constraint on the kinds of architectures you can build.

Working with Node.js as a separate service alongside WordPress, feeding data to React and Vue.js frontends, building Next.js applications that treat WordPress as a headless CMS exposed me to thinking about systems as separate concerns that communicate over APIs.

That thinking changed my WordPress work too. I started designing WordPress plugins to expose clean REST API endpoints rather than assuming WordPress templates would always consume the data. I started thinking about WordPress as a data layer rather than a complete application. That is a more modern and more flexible way to build with WordPress.

I would not have gotten there without the broader journey.

Where things stand now

I still build WordPress systems. Custom plugins with clean architecture. REST API extensions. Block editor components. Headless WordPress feeding modern frontends.

I also build Node.js APIs. React dashboards and applications. Next.js server rendered sites. Vue.js interfaces.

These are not competing skills pulling in different directions. They are complementary skills that inform each other.

WordPress taught me to think about security, extensibility, and writing code that survives contact with the real world.

Node.js taught me to think about async systems and API design.

React and Vue.js taught me to think about state as the source of truth for everything a user sees.

Next.js taught me to think carefully about rendering and performance as deliberate architectural decisions.

Building WordPress websites for clients taught me to think about the person using the thing I am building and what they actually need. That is the skill that travels furthest across every stack.

The journey was not planned. It was a series of projects that each needed something slightly beyond what I already knew. I said yes each time. I figured it out each time.

That pattern has not changed. The stack has just gotten bigger.