Building a Survey Platform with TDuck: Open-Source Form System

Overview

TDuck is a free, production-ready form and survey platform built with SpringBoot, Vue, and ElementUI. It enables rapid creation of questionnaires and business forms through a no-code approach while supporting custom component development.

Key Features

Form Components:

  • Over a dozen component types including rating scales, cascading selectors, image carousels, provicne-city selectors, and geolocation

Form Builder:

  • Logic conditions with real-time preview
  • Shareable links generation
  • Customizable appearance with logo, header images, and background themes

Data Management:

  • Survey response collection
  • Visual chart-based data analytics
  • Shared templates for reuse

Integrations:

  • WeChat Official Account QR code authentication
  • Local and multiple cloud storage backends
  • Email and SMS notifications

Technology Stack

  • Backend: SpringBoot, MyBatis-Plus
  • Frontend: Vue2, ElementUI

Project Structure

tduck-platform/
├── tduck-common        # Shared utilities
├── tduck-account       # User management
├── tduck-storage       # File storage
├── tduck-project       # Form project logic
├── tduck-wx-mp         # WeChat integration
└── tduck-api           # Client API endpoints

Prerequisites

  • MySQL 5.7+
  • JDK 1.8+
  • Maven 3.x
  • Node.js 14+

Backend Setup

  1. Clone the repository:
git clone https://gitee.com/TDuckApp/tduck-platform.git
  1. Import as a Maven project in your IDE

  2. Create the database:

CREATE DATABASE tduck DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
  1. Execute doc/tduck.sql to initialize schema

  2. Update database credentials in tduck-api/src/main/resources/application-prod.yml

  3. Launch via com.tduck.cloud.api.TduckApiApplication

Frontend Setup

git clone https://gitee.com/TDuckApp/tduck-front.git
cd tduck-front
npm install
npm run serve

Production build:

npm run build

Docker Deployment

Standalone Container

docker run \
  -e SPRING_DATASOURCE_URL="jdbc:mysql://127.0.0.1:3310/tduck-v4?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&tinyInt1isBit=false&nullCatalogMeansCurrent=true" \
  -e SPRING_DATASOURCE_USERNAME=root \
  -e SPRING_DATASOURCE_PASSWORD=tduck@tduck \
  -p 8999:8999 \
  -v /upload:/application/BOOT-INF/lib/upload \
  tduckcloud/tduck-platform

Configuration options:

  • SPRING_DATASOURCE_URL — JDBC conneection string
  • SPRING_DATASOURCE_USERNAME — Database username
  • SPRING_DATASOURCE_PASSWORD — Database password
  • -p — Port mapping (container:host)
  • -v — Volume mount for file uploads

Docker Compose Setup

wget https://gitee.com/TDuckApp/tduck-platform/raw/master/docker/docker-compose.yaml
docker-compose up -d

Adjust environment variables in the compose file to match your infrastructure before deployment.

Tags: TDuck SpringBoot vue Form Builder Survey System

Posted on Tue, 21 Jul 2026 16:08:26 +0000 by Fife Club