<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: ibay</title>
    <description>The latest articles on DEV Community by ibay (@ibay_125128a17dd5b9568bd7).</description>
    <link>https://dev.to/ibay_125128a17dd5b9568bd7</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4127205%2Fa72ed837-5823-4798-b4e4-afc9d6891946.png</url>
      <title>DEV Community: ibay</title>
      <link>https://dev.to/ibay_125128a17dd5b9568bd7</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ibay_125128a17dd5b9568bd7"/>
    <language>en</language>
    <item>
      <title>Tencent EdgeOne Makers: Deploying a 3D AI Procedural Asset Studio with Next.js and Three.js</title>
      <dc:creator>ibay</dc:creator>
      <pubDate>Wed, 16 Sep 2026 04:32:42 +0000</pubDate>
      <link>https://dev.to/ibay_125128a17dd5b9568bd7/tencent-edgeone-makers-deploying-a-3d-ai-procedural-asset-studio-with-nextjs-and-threejs-d71</link>
      <guid>https://dev.to/ibay_125128a17dd5b9568bd7/tencent-edgeone-makers-deploying-a-3d-ai-procedural-asset-studio-with-nextjs-and-threejs-d71</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnghhe98pe46r2ijb5dah.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnghhe98pe46r2ijb5dah.png" alt=" " width="799" height="400"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flpuvpwlg13f997em39yg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flpuvpwlg13f997em39yg.png" alt=" " width="799" height="381"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Building a web application is only one part of the development process. Once the application is ready, developers still need to think about deployment, performance, infrastructure, and how users can access the project reliably.&lt;/p&gt;

&lt;p&gt;For my project in the DevHandal 2026 Batch 2 program, I built a 3D AI Procedural Asset Studio, a web-based application that allows users to generate and manipulate simple 3D scenes through natural-language instructions.&lt;/p&gt;

&lt;p&gt;After developing the application locally, I deployed it using Tencent EdgeOne Makers. This article shares my technical experience, project architecture, deployment process, and several lessons I learned while deploying a modern Next.js and Three.js application.&lt;/p&gt;

&lt;p&gt;Project Overview&lt;/p&gt;

&lt;p&gt;The project is called Asset Studio. It is designed as a lightweight 3D workspace where users can interact with procedural 3D objects and use an AI assistant to generate or modify scenes through natural-language prompts.&lt;/p&gt;

&lt;p&gt;For example, a user can enter a prompt such as:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;“Buat rumah 2 lantai dengan atap pelana.”&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The application can then translate the request into structured scene information, which is used to create objects inside the 3D environment.&lt;/p&gt;

&lt;p&gt;The interface consists of several main areas:&lt;/p&gt;

&lt;p&gt;A scene hierarchy showing generated 3D objects&lt;br&gt;
A Three.js-based 3D viewport&lt;br&gt;
An AI assistant panel&lt;br&gt;
Scene and object information&lt;br&gt;
Tools for modifying the generated scene&lt;br&gt;
GLB export functionality&lt;/p&gt;

&lt;p&gt;The project uses Next.js, React, Three.js, React Three Fiber, React Three Drei, Zustand, and TypeScript.&lt;/p&gt;

&lt;p&gt;The source code is also organized as a pnpm monorepo, with the main web application located inside apps/web and reusable functionality separated into workspace packages.&lt;/p&gt;

&lt;p&gt;Why Tencent EdgeOne Makers?&lt;/p&gt;

&lt;p&gt;For this project, I wanted to use a deployment platform that could handle a modern web application without requiring me to manually configure a traditional server.&lt;/p&gt;

&lt;p&gt;Tencent EdgeOne Makers provides support for modern full-stack frameworks, including Next.js. Its current Next.js integration supports features such as App Router, SSR, ISR, SSG, React Server Components, Route Handlers, and other Next.js capabilities.&lt;/p&gt;

&lt;p&gt;This makes EdgeOne Makers interesting for developers who are building applications that go beyond a simple static website.&lt;/p&gt;

&lt;p&gt;The platform also integrates with Git repositories, allowing deployment to be triggered from the development workflow.&lt;/p&gt;

&lt;p&gt;For a student developer working on portfolio projects, this type of workflow is useful because the deployment process can remain closely connected to the source code.&lt;/p&gt;

&lt;p&gt;Preparing the Project&lt;/p&gt;

&lt;p&gt;One important aspect of my project was its monorepo structure.&lt;/p&gt;

&lt;p&gt;The repository roughly follows this structure:&lt;br&gt;
3d-generator/&lt;br&gt;
├── apps/&lt;br&gt;
│   └── web/&lt;br&gt;
├── packages/&lt;br&gt;
├── docs/&lt;br&gt;
├── package.json&lt;br&gt;
├── pnpm-lock.yaml&lt;br&gt;
└── pnpm-workspace.yaml&lt;/p&gt;

&lt;p&gt;The web application has its own package.json inside apps/web.&lt;/p&gt;

&lt;p&gt;It also depends on internal workspace packages:&lt;br&gt;
{&lt;br&gt;
  "dependencies": {&lt;br&gt;
    "@asset-studio/llm-adapter": "workspace:*",&lt;br&gt;
    "@asset-studio/scene-engine": "workspace:^"&lt;br&gt;
  }&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;Because of this structure, I kept the deployment root at the repository root rather than changing it directly to apps/web.&lt;/p&gt;

&lt;p&gt;The build process can then install the workspace dependencies and build the web application using pnpm.&lt;/p&gt;

&lt;p&gt;The relevant build command is:&lt;br&gt;
&lt;code&gt;&lt;br&gt;
pnpm --filter @asset-studio/web build&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This approach allows the Next.js application to continue resolving the internal workspace packages correctly.&lt;/p&gt;

&lt;p&gt;Configuring EdgeOne Makers&lt;/p&gt;

&lt;p&gt;For the deployment configuration, I used the Next framework preset.&lt;/p&gt;

&lt;p&gt;The main configuration was:&lt;br&gt;
`Framework:&lt;br&gt;
Next&lt;/p&gt;

&lt;p&gt;Root Directory:&lt;br&gt;
./&lt;/p&gt;

&lt;p&gt;Install Command:&lt;br&gt;
pnpm install&lt;/p&gt;

&lt;p&gt;Compile Command:&lt;br&gt;
pnpm --filter @asset-studio/web build`&lt;/p&gt;

&lt;p&gt;Choosing the normal Next preset is important because the project is a Next.js application. EdgeOne Makers also provides a separate configuration for static export projects, but those are intended for applications that explicitly generate a fully static output. The official documentation lists different default output directories for standard Next.js deployments and static export mode.&lt;/p&gt;

&lt;p&gt;For developers working with Next.js, it is therefore useful to understand whether their application requires Next.js runtime features or can be completely exported as static files.&lt;/p&gt;

&lt;p&gt;Deployment Result&lt;/p&gt;

&lt;p&gt;After configuring the project and connecting the Git repository, EdgeOne Makers successfully completed the deployment pipeline.&lt;/p&gt;

&lt;p&gt;The deployment process consisted of several stages:&lt;br&gt;
Initialize&lt;br&gt;
   ↓&lt;br&gt;
Clone&lt;br&gt;
   ↓&lt;br&gt;
Install&lt;br&gt;
   ↓&lt;br&gt;
Build&lt;br&gt;
   ↓&lt;br&gt;
Deploy&lt;/p&gt;

&lt;p&gt;All stages completed successfully.&lt;/p&gt;

&lt;p&gt;The application is now publicly accessible through the EdgeOne Makers deployment domain:&lt;br&gt;
&lt;a href="https://dev.tourl"&gt;&lt;br&gt;
https://threed-dpduaz9nfl3m.edgeone.dev/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The deployed application provides the same core 3D workspace that I developed locally, including the scene hierarchy, 3D viewport, and AI-assisted scene generation workflow.&lt;/p&gt;

&lt;p&gt;What I Learned&lt;/p&gt;

&lt;p&gt;One of the most important lessons from this deployment was that deployment configuration needs to match the actual project architecture.&lt;/p&gt;

&lt;p&gt;A project may work perfectly on a local machine but still require additional configuration when deployed. This becomes especially important for monorepos because the application may depend on packages located outside the application directory.&lt;/p&gt;

&lt;p&gt;Another lesson is to understand the difference between a standard Next.js deployment and a static export.&lt;/p&gt;

&lt;p&gt;Next.js supports multiple rendering approaches, including SSR, ISR, SSG, and CSR, while EdgeOne Makers provides support for these different modes.&lt;/p&gt;

&lt;p&gt;This means developers should first determine how their application is actually built before choosing the deployment configuration.&lt;/p&gt;

&lt;p&gt;For example, a portfolio website consisting entirely of static pages may be suitable for static export. On the other hand, an application that depends on server-side functionality may require the normal Next.js deployment configuration.&lt;/p&gt;

&lt;p&gt;Best Practices for Developers&lt;/p&gt;

&lt;p&gt;Based on this project, I would recommend several practices when deploying a similar application.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Understand your repository structure&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Before configuring the deployment platform, identify the actual application root and whether the project is a monorepo.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Test the production build locally&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Run the same build command locally before deploying. This makes it easier to distinguish application problems from deployment configuration problems.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Choose the framework preset carefully&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Using the correct framework preset can reduce unnecessary configuration and allow the platform to apply framework-specific deployment behavior.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Keep environment variables separate from source code&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;API keys and other sensitive configuration should be stored as environment variables rather than committed to Git repositories. EdgeOne Makers provides environment-variable configuration for deployment environments.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Verify the deployed application&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A successful build does not replace testing the actual production URL. Always open the deployment URL and test the application's important workflows after deployment.&lt;/p&gt;

&lt;p&gt;Conclusion&lt;/p&gt;

&lt;p&gt;Deploying my 3D AI Procedural Asset Studio with Tencent EdgeOne Makers gave me practical experience in connecting application architecture, Git-based development, framework configuration, and cloud deployment.&lt;/p&gt;

&lt;p&gt;The project combines several technologies that are increasingly common in modern web development: Next.js, TypeScript, Three.js, AI-assisted workflows, and a monorepo architecture.&lt;/p&gt;

&lt;p&gt;For me, the most valuable part was not simply getting the project online. It was understanding how the application's architecture affects the deployment process.&lt;/p&gt;

&lt;p&gt;Tencent EdgeOne Makers provides a workflow that can accommodate both modern frontend applications and full-stack frameworks such as Next.js. Its documentation also provides framework-specific guidance, which is useful when moving a project from local development into a production environment.&lt;/p&gt;

&lt;p&gt;The final deployed project can be accessed here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://threed-dpduaz9nfl3m.edgeone.dev/" rel="noopener noreferrer"&gt;https://threed-dpduaz9nfl3m.edgeone.dev/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I hope this project can encourage other young developers to experiment with 3D web development, AI-assisted applications, and modern deployment workflows rather than limiting themselves to conventional web projects.&lt;/p&gt;

&lt;p&gt;Project: 3D AI Procedural Asset Studio&lt;br&gt;
Deployment: Tencent EdgeOne Makers&lt;br&gt;
Stack: Next.js, React, TypeScript, Three.js, React Three Fiber, pnpm&lt;/p&gt;

&lt;h1&gt;
  
  
  TencentEdgeOne #EdgeOneMakers #CODEPOLITAN #EdgeOne
&lt;/h1&gt;

</description>
      <category>tencentedgeone</category>
      <category>edgeonemakers</category>
      <category>codepolitan</category>
      <category>edgeone</category>
    </item>
  </channel>
</rss>
