Skip to content

Formsmith746/SketchForge-3D

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
SketchForge logo

SketchForge

A local-first 3D design editor that runs in your browser.

Build shapes, cut holes, group parts, import STL files, and export models without accounts, cloud lock-in, or heavyweight CAD setup.

MIT license GitHub stars Local first Version 0.2.0

SketchForge v0.2 editor showing a selected box on the workplane

Why SketchForge

SketchForge is a lightweight CAD-style workspace for people who want to sketch, cut, and export 3D models quickly.

It is built for the satisfying loop: drop a shape, resize it, rotate it, make another shape a hole, group the result, import an STL if primitives are not enough, and export the finished model.

No login. No server project storage. No heavyweight CAD install just to make a useful part.

What It Does

  • Local-first projects - designs live in browser storage with generated project thumbnails.
  • Real 3D workplane - grid, camera controls, snap settings, transform handles, outlines, and inspector controls.
  • Primitive shape library - boxes, cylinders, spheres, cones, pyramids, wedges, text, roofs, half spheres, torus shapes, tubes, and more.
  • Solid and hole workflow - turn shapes into cutters and group them into final geometry.
  • Boolean Intersection - keep only the geometry where selected solid and hole shapes overlap.
  • STL import - bring outside models into the same workspace as primitives.
  • STL and OBJ export - export selected objects or the whole scene.
  • Fast browser stack - Next.js, React, TypeScript, Three.js, and Manifold/CSG geometry tooling.

Demo

SketchForge editor demo preview

Quick Start

Requirements:

  • Node.js 20 or newer
  • npm
npm install
npm run dev

Open:

http://127.0.0.1:3000/

Docker / FabLab Server (Recommended)

The Docker image contains a static SketchForge build served by Nginx. Projects stay in each user's browser; STL and OBJ files download through that browser. The container does not receive or store project files.

Docker is the recommended server setup because it packages the correct Node build environment, static app, Nginx configuration, health check, and restart policy together. It is easier to reproduce and update than configuring each part by hand.

Requirements:

  • Docker Engine with Docker Compose

Build and start SketchForge:

npm run docker:up

Open it on the server:

http://127.0.0.1:3000/

Other computers on the same network can use the server's LAN address:

http://SERVER_IP:3000/

To use another host port:

SKETCHFORGE_PORT=8080 npm run docker:up

On PowerShell:

$env:SKETCHFORGE_PORT = "8080"
npm run docker:up

Stop the server with:

npm run docker:down

Manual Static Deployment (Advanced)

This is the harder alternative for servers where Docker cannot be used. The administrator must install and maintain Node.js, npm, Nginx or another static web server, firewall access, startup behavior, and future updates separately.

Requirements:

  • Node.js 20 or newer
  • npm
  • Nginx, Apache, Caddy, or another static web server

Create the static build on Linux or macOS:

npm ci
STATIC_EXPORT=true npm run build

Create it with PowerShell on Windows:

npm ci
$env:STATIC_EXPORT = "true"
npm run build
Remove-Item Env:STATIC_EXPORT

The deployable files are generated in apps/web/out. Configure the web server to serve that directory and fall back to index.html for unknown application paths. deploy/docker/nginx.conf is the configuration used by the Docker image and can be adapted for a manual Nginx installation.

The administrator must also open the chosen LAN port in the server firewall and arrange for the web server to start automatically after a reboot. For each SketchForge update, pull the new source, install dependencies, rebuild apps/web/out, replace the served files, and reload the web server.

Development

npm run typecheck

Run TypeScript checks.

npm run build

Create a production build.

npm run export

Build with static export mode enabled.

Project Layout

apps/web/                   Next.js app workspace
apps/web/src/app/           App routes, dashboard, API routes, styles
apps/web/src/components/    Editor, viewport, sidebar, icons, controls
apps/web/src/types/         Shared shape and editor types
apps/web/src/generated/     Generated Manifold runtime source
apps/web/src/lib/           Shared utilities
apps/web/public/assets/     Static app images, icons, logos, shape assets
docs/media/                 README screenshots and demo videos
deploy/docker/              Docker, Compose, and Nginx deployment files
.github/                    Issue templates and community files

Current Status

SketchForge is alpha, but the core editor loop is usable today:

  • create and reopen local projects
  • add, move, resize, rotate, mirror, align, duplicate, hide, and delete shapes
  • switch shapes between solid and hole modes
  • group and ungroup geometry
  • import STL files
  • export STL or OBJ
  • generate project thumbnails

The next big areas are workflow polish, more geometry edge-case testing, stronger automated editor coverage, and better release documentation.

Contributing

Contributions are welcome. Good places to help:

  • editor bug fixes
  • geometry and boolean test cases
  • STL import/export edge cases
  • UI polish
  • documentation screenshots and videos
  • accessibility and performance improvements

Read .github/CONTRIBUTING.md before opening a pull request.

Security

Please do not open public issues for security-sensitive reports. Read .github/SECURITY.md for the reporting process.

License

MIT. See LICENSE.

About

A local-first browser 3D design editor for building, cutting, importing STL files, and exporting models.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors