2026-04-03 10:42:40 +02:00
2026-04-03 10:41:56 +02:00
2026-04-03 10:41:56 +02:00
2026-04-03 10:22:24 +02:00
2026-04-03 10:41:56 +02:00
2026-04-03 10:22:24 +02:00
2026-04-03 10:22:24 +02:00
2026-04-03 10:22:24 +02:00
2026-04-03 10:41:56 +02:00
2026-04-03 10:41:56 +02:00
2026-04-03 10:22:24 +02:00
2026-04-03 10:42:40 +02:00
2026-04-03 10:41:56 +02:00
2026-04-03 10:41:56 +02:00

upload-GLTF

A secure upload interface for 3D assets with automatic deployment to GitHub via Git LFS. Designers can drag-and-drop models and textures, which are automatically versioned and pushed to a GitHub repository for easy collaboration and asset management. Built with Next.js, Tailwind CSS, and React.

Description

This is a Next.js web application that allows designers and developers to upload 3D models and textures via a modern drag-and-drop interface. Uploaded files are automatically committed and pushed to a GitHub repository using Git LFS for efficient version control of large binary files.

Features

  • Drag-and-drop upload for 3D models (.glb, .gltf, .fbx) and textures (.png, .jpg, .jpeg, .webp, .ktx2)
  • 2 GB max file size per upload
  • Automatic Git deployment — files are committed and pushed to GitHub via Git LFS
  • Secret key authentication for secure uploads
  • Modern UI built with Tailwind CSS and React

Prerequisites

  • Node.js 18+
  • npm or yarn

Installation

git clone <repo-url>
cd upload-GLTF
npm install

Configuration

Environment Variables

Create a .env.local file in the root directory:

UPLOAD_SECRET_KEY=your-secret-key-here
GIT_BRANCH=main
GIT_REPO_URL=git@github.com:username/repo.git
Variable Description Required
UPLOAD_SECRET_KEY Secret key for authentication Yes
GIT_BRANCH Git branch to push to (default: main) No
GIT_REPO_URL Git repository URL for SSH push No

Git LFS Setup

Install Git LFS and track the asset file types by creating a .gitattributes file:

git lfs install

Create .gitattributes:

*.glb filter=lfs diff=lfs merge=lfs -text
*.gltf filter=lfs diff=lfs merge=lfs -text
*.fbx filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.jpeg filter=lfs diff=lfs merge=lfs -text
*.webp filter=lfs diff=lfs merge=lfs -text
*.ktx2 filter=lfs diff=lfs merge=lfs -text

Usage

Development

npm run dev

Access the app at http://localhost:3000

Production

npm run build
npm start

Lint

npm run lint

Docker Deployment

Docker Compose

Create docker-compose.yml:

services:
  app:
    build: .
    ports:
      - "3000:3000"
    environment:
      - UPLOAD_SECRET_KEY=your-secret-key
      - GIT_BRANCH=main
      - GIT_REPO_URL=git@github.com:username/repo.git
    volumes:
      - ./public:/app/public
      - ~/.ssh:/root/.ssh

Build and run:

docker-compose up --build

Coolify

The Dockerfile is optimized for Coolify deployment. Configure environment variables through the Coolify interface.

Project Structure

.
├── app/
│   ├── api/upload/route.ts   # Upload API + git push
│   ├── globals.css
│   ├── layout.tsx
│   └── page.tsx
├── components/
│   └── UploadZone.tsx        # Upload component
├── public/
│   ├── models/               # Uploaded 3D models
│   └── textures/             # Uploaded textures
├── Dockerfile
├── package.json
├── tailwind.config.ts
└── tsconfig.json

Supported File Formats

Type Extensions
3D Models .glb, .gltf, .fbx
Textures .png, .jpg, .jpeg, .webp, .ktx2

License

MIT

S
Description
A secure upload interface for 3D assets with automatic deployment to GitHub via Git LFS
Readme MIT 479 KiB
Languages
TypeScript 92%
Python 6.4%
Dockerfile 1%
Shell 0.5%
CSS 0.1%