DPSTemplatesOverview

DPS Templates

DPS owns a registry of pre-configured app templates. Each template ships with a Docker image (where applicable), a wizard in the dashboard, a scaffolding repo, and a reference deployment pipeline.

Source

Templates live under apps/dps/dps-templates/ — a meta-package containing each scaffold:

TemplateTypeRepo
Parse ServerBackenddps-templates-parse-server
React LandingFrontenddps-templates-react-landing
React Next.jsFrontenddps-templates-react-nextjs
React NativeMobiledps-templates-react-native

Template registry

All template metadata is defined in dps-dashboard/src/types/templates.ts as AppTemplateConfig:

interface AppTemplateConfig {
  id: string;
  name: string;
  slug: string;
  description: string;
  longDescription: string;
  icon: string;
  author: string;            // "DuabaLabs"
  category: string;
  tags: string[];
  featured: boolean;
 
  appType: 'web' | 'mobile' | 'backend' | 'worker';
  supportedDeploymentTargets: DeploymentTarget[];
  defaultDeploymentTarget: DeploymentTarget;
  connectionType: 'new' | 'existing' | 'both';
 
  supportedSourceTypes: TemplateSourceType[];
  defaultSourceType: TemplateSourceType;
 
  // DPS Docker Registry
  dpsDockerImage?: string;             // ghcr.io/duabalabs/...
  dpsDockerVersions?: string[];
 
  // GitHub Template Repository
  repositoryUrl?: string;
  dpsRepositoryUrl?: string;
 
  configurationFields: TemplateConfigField[];
  relatedTemplates?: string[];
}

Current registry

Template IDNameDocker ImageTemplate RepoWizard
parse-serverParse Serverghcr.io/duabalabs/parse-server✅ ParseServerWizard
sellub-serverSellub Serverghcr.io/duabalabs/sellub-server⚠️ Generic + Sellub
sellub-dashboardSellub Dashboard⚠️ Generic
sellub-storefrontSellub Storefront⚠️ Generic
react-webReact Web Appghcr.io/duabalabs/react-web⚠️ Generic
react-nativeReact Native❌ (Expo)⚠️ Generic
landing-saasSaaS Landing⚠️ Generic
landing-agencyAgency Landing⚠️ Generic
landing-ecommerceE-commerce Landing⚠️ Generic
landing-appApp Download Page⚠️ Generic
landing-waitlistWaitlist Page⚠️ Generic

Docker registry

Production images live at:

ghcr.io/duabalabs/
├── parse-server          # Parse Server backend (latest, 7.0.0, 6.5.0, 6.4.0)
├── sellub-server         # Vendure-based e-commerce (latest, 2.3.0, 2.2.0, 2.1.0)
├── react-web             # React/Vite web app (latest, 18-alpine, 20-alpine, 18-slim)
├── landing-saas          # ❌ TO BE CREATED
├── landing-agency        # ❌ TO BE CREATED
├── landing-ecommerce     # ❌ TO BE CREATED
├── landing-app           # ❌ TO BE CREATED
└── landing-waitlist      # ❌ TO BE CREATED

Build pipeline

Each DPS Docker image follows the same multi-stage Dockerfile pattern:

FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
 
FROM node:20-alpine AS runner
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/package.json ./
EXPOSE 3000
CMD ["npm", "start"]