ui-syncup 0.2.4 → 0.3.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,35 +1,30 @@
1
1
  {
2
2
  "name": "ui-syncup",
3
- "version": "0.2.4",
4
- "description": "CLI for managing UI SyncUp self-hosted instances",
5
- "license": "MIT",
6
- "homepage": "https://github.com/BYKHD/ui-syncup",
7
- "repository": {
8
- "type": "git",
9
- "url": "git+https://github.com/BYKHD/ui-syncup.git"
10
- },
11
- "bugs": {
12
- "url": "https://github.com/BYKHD/ui-syncup/issues"
13
- },
3
+ "version": "0.3.10",
4
+ "description": "Self-host UI SyncUp with a single command",
14
5
  "bin": {
15
- "ui-syncup": "dist/index.js"
6
+ "ui-syncup": "./dist/index.js"
16
7
  },
17
8
  "files": [
18
- "dist",
19
- "templates"
9
+ "dist"
20
10
  ],
21
- "engines": {
22
- "node": ">=20"
23
- },
24
11
  "scripts": {
25
12
  "build": "tsup",
26
- "prepublishOnly": "npm run build"
13
+ "dev": "tsup --watch"
27
14
  },
28
15
  "dependencies": {
29
- "commander": "^12.0.0"
16
+ "commander": "^12.0.0",
17
+ "@inquirer/prompts": "^8.0.0",
18
+ "chalk": "^5.3.0",
19
+ "ora": "^8.0.0"
30
20
  },
31
21
  "devDependencies": {
32
- "tsup": "^8.4.0",
33
- "typescript": "^5"
34
- }
22
+ "tsup": "^8.0.0",
23
+ "typescript": "^5.0.0",
24
+ "@types/node": "^20.0.0"
25
+ },
26
+ "engines": {
27
+ "node": ">=20"
28
+ },
29
+ "license": "MIT"
35
30
  }
@@ -1,64 +0,0 @@
1
- # ============================================================================
2
- # Multi-Stage Production Dockerfile for UI SyncUp
3
- # ============================================================================
4
- # Generated by: bunx ui-syncup init --mode production
5
- # Optimized for self-hosting on AWS, Dokploy, Coolify, Railway, Fly.io
6
- #
7
- # Build: docker build -t ui-syncup .
8
- # Run: docker run -p 3000:3000 --env-file .env.production ui-syncup
9
- # ============================================================================
10
-
11
- # ---------------------------------------------------------------------------
12
- # Stage 1: Install dependencies
13
- # ---------------------------------------------------------------------------
14
- FROM oven/bun:1-alpine AS deps
15
-
16
- WORKDIR /app
17
-
18
- # Copy dependency manifests only (cache layer)
19
- COPY package.json bun.lock* ./
20
-
21
- RUN bun install --frozen-lockfile --production=false
22
-
23
- # ---------------------------------------------------------------------------
24
- # Stage 2: Build the application
25
- # ---------------------------------------------------------------------------
26
- FROM oven/bun:1-alpine AS builder
27
-
28
- WORKDIR /app
29
-
30
- COPY --from=deps /app/node_modules ./node_modules
31
- COPY . .
32
-
33
- # Next.js standalone output collects only the files needed for production
34
- ENV NEXT_TELEMETRY_DISABLED=1
35
- ENV NODE_ENV=production
36
-
37
- RUN bun run build
38
-
39
- # ---------------------------------------------------------------------------
40
- # Stage 3: Production runtime (minimal image)
41
- # ---------------------------------------------------------------------------
42
- FROM node:20-alpine AS runner
43
-
44
- WORKDIR /app
45
-
46
- ENV NODE_ENV=production
47
- ENV NEXT_TELEMETRY_DISABLED=1
48
- ENV HOSTNAME="0.0.0.0"
49
- ENV PORT=3000
50
-
51
- # Create non-root user for security
52
- RUN addgroup --system --gid 1001 nodejs && \
53
- adduser --system --uid 1001 nextjs
54
-
55
- # Copy standalone output
56
- COPY --from=builder /app/public ./public
57
- COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
58
- COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
59
-
60
- USER nextjs
61
-
62
- EXPOSE 3000
63
-
64
- CMD ["node", "server.js"]
@@ -1,18 +0,0 @@
1
- # CLI Templates
2
-
3
- This directory contains template files used by the `init` command to generate environment and configuration files.
4
-
5
- ## Files
6
-
7
- - `env.local.template` - Local development environment template (MinIO S3-compatible storage)
8
- - `env.production.template` - Production environment template
9
- - `docker-compose.override.template.yml` - Docker Compose customization template
10
-
11
- ## Template Syntax
12
-
13
- Templates use `{{VARIABLE}}` placeholders that are replaced during file generation:
14
-
15
- ```
16
- DATABASE_URL="{{DATABASE_URL}}"
17
- BETTER_AUTH_SECRET="{{RANDOM_SECRET}}"
18
- ```
@@ -1,39 +0,0 @@
1
- # ============================================================================
2
- # Docker Compose Override for Local Development
3
- # ============================================================================
4
- # Generated by: ui-syncup init
5
- #
6
- # Use this file to customize your local development environment.
7
- # This file is merged with the main docker-compose.yml.
8
- #
9
- # Common customizations:
10
- # - Expose additional ports
11
- # - Mount additional volumes
12
- # - Override environment variables
13
- # - Add development-only services
14
- #
15
- # DO NOT commit this file to version control.
16
- # ============================================================================
17
-
18
- version: "3.8"
19
-
20
- services:
21
- # Application service – SMTP environment variable pass-through
22
- # Uncomment and populate SMTP_* variables in your .env.local to route
23
- # emails through a self-hosted mail server instead of Resend.
24
- app:
25
- environment:
26
- - SMTP_HOST=${SMTP_HOST:-}
27
- - SMTP_PORT=${SMTP_PORT:-}
28
- - SMTP_USER=${SMTP_USER:-}
29
- - SMTP_PASSWORD=${SMTP_PASSWORD:-}
30
- - SMTP_FROM_EMAIL=${SMTP_FROM_EMAIL:-}
31
- - SMTP_SECURE=${SMTP_SECURE:-}
32
-
33
- # Example: Add a local mail server for testing
34
- # mailpit:
35
- # image: axllent/mailpit:latest
36
- # ports:
37
- # - "1025:1025" # SMTP
38
- # - "8025:8025" # Web UI (http://localhost:8025)
39
-
@@ -1,63 +0,0 @@
1
- # ============================================================================
2
- # Docker Ignore – UI SyncUp Production Build
3
- # ============================================================================
4
- # Generated by: bunx ui-syncup init --mode production
5
- # Keeps Docker build context lean and secure.
6
- # ============================================================================
7
-
8
- # Dependencies (re-installed inside Docker)
9
- node_modules
10
- .bun
11
-
12
- # Build output (rebuilt inside Docker)
13
- .next
14
- out
15
-
16
- # Version control
17
- .git
18
- .gitignore
19
-
20
- # Environment files (mounted at runtime, never baked in)
21
- .env*
22
- !.env.example
23
-
24
- # Development & testing
25
- tests
26
- **/*.test.ts
27
- **/*.test.tsx
28
- **/*.spec.ts
29
- **/*.spec.tsx
30
- **/__tests__
31
- coverage
32
- playwright-report
33
- test-results
34
-
35
- # Documentation & AI context
36
- docs
37
- .ai
38
- .agents
39
- .gemini
40
- *.md
41
- !README.md
42
-
43
- # IDE & tools
44
- .vscode
45
- .idea
46
- *.swp
47
- *.swo
48
- *~
49
-
50
- # Storage (runtime data)
51
- storage
52
-
53
- # Supabase local dev
54
- supabase/.temp
55
-
56
- # Docker files (don't recurse)
57
- Dockerfile
58
- docker-compose*.yml
59
- .dockerignore
60
-
61
- # Misc
62
- *.log
63
- tmp
@@ -1,74 +0,0 @@
1
- # ============================================================================
2
- # UI SyncUp Local Development Environment
3
- # ============================================================================
4
- # Generated by: ui-syncup init
5
- # Mode: Local Development (Supabase CLI + MinIO)
6
- #
7
- # This file contains safe defaults for local development.
8
- # DO NOT commit this file to version control.
9
- # ============================================================================
10
-
11
- # Application
12
- NODE_ENV="development"
13
- NEXT_PUBLIC_APP_URL="http://localhost:3000"
14
- NEXT_PUBLIC_API_URL="http://localhost:3000/api"
15
-
16
- # Database (Supabase Local)
17
- DATABASE_URL="postgresql://postgres:postgres@127.0.0.1:54322/postgres"
18
- DIRECT_URL="postgresql://postgres:postgres@127.0.0.1:54322/postgres"
19
-
20
- # Supabase Local (NEXT_PUBLIC_* for browser access)
21
- NEXT_PUBLIC_SUPABASE_URL="http://127.0.0.1:54321"
22
- NEXT_PUBLIC_SUPABASE_ANON_KEY="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24iLCJleHAiOjE5ODM4MTI5OTZ9.CRXP1A7WOeoJeXxjNni43kdQwgnWNReilDMblYTn_I0"
23
- SUPABASE_SERVICE_ROLE_KEY="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImV4cCI6MTk4MzgxMjk5Nn0.EGIM96RAZx35lJzdJsyH-qQwv8Hdp7fsn3W0YpN81IU"
24
-
25
- # Storage (MinIO S3-compatible local storage)
26
- # MINIO_ROOT_USER and MINIO_ROOT_PASSWORD are generated by 'ui-syncup init'.
27
- # To regenerate, run: ui-syncup reset
28
- STORAGE_ENDPOINT="http://localhost:9000"
29
- STORAGE_REGION="us-east-1"
30
- STORAGE_ACCESS_KEY="{{MINIO_ROOT_USER}}"
31
- STORAGE_SECRET_KEY="{{MINIO_ROOT_PASSWORD}}"
32
- STORAGE_BUCKET="ui-syncup-attachments"
33
- MINIO_ROOT_USER="{{MINIO_ROOT_USER}}"
34
- MINIO_ROOT_PASSWORD="{{MINIO_ROOT_PASSWORD}}"
35
-
36
- # Auth (better-auth)
37
- BETTER_AUTH_SECRET="{{BETTER_AUTH_SECRET}}"
38
- BETTER_AUTH_URL="http://localhost:3000"
39
-
40
- # ============================================================================
41
- # Optional: OAuth Providers
42
- # ============================================================================
43
- # Leave empty for email/password only authentication
44
- # Configure these to enable social login
45
-
46
- # Google OAuth (https://console.cloud.google.com/apis/credentials)
47
- # Set all three values to enable Google OAuth.
48
- GOOGLE_CLIENT_ID=""
49
- GOOGLE_CLIENT_SECRET=""
50
- GOOGLE_REDIRECT_URI=""
51
-
52
- # Microsoft OAuth (https://portal.azure.com)
53
- MICROSOFT_CLIENT_ID=""
54
- MICROSOFT_CLIENT_SECRET=""
55
- MICROSOFT_TENANT_ID="common"
56
-
57
- # ============================================================================
58
- # Optional: Email Service
59
- # ============================================================================
60
- # Leave empty to use console logging (emails printed to terminal).
61
- # Configure ONE of the two options below:
62
-
63
- # Option A: Resend (https://resend.com/api-keys)
64
- RESEND_API_KEY=""
65
- RESEND_FROM_EMAIL=""
66
-
67
- # Option B: SMTP (self-hosted mail server – Mailcow, Mailpit, Postfix, AWS SES, etc.)
68
- # When SMTP_HOST is set, all fields below are required.
69
- # SMTP_HOST=""
70
- # SMTP_PORT="587"
71
- # SMTP_USER=""
72
- # SMTP_PASSWORD=""
73
- # SMTP_FROM_EMAIL=""
74
- # SMTP_SECURE="false"
@@ -1,84 +0,0 @@
1
- # ============================================================================
2
- # UI SyncUp Production Environment
3
- # ============================================================================
4
- # Generated by: ui-syncup init
5
- # Mode: Production
6
- #
7
- # Fill in the placeholders below with your production credentials.
8
- # DO NOT commit this file to version control.
9
- # ============================================================================
10
-
11
- # ============================================================================
12
- # Required Configuration
13
- # ============================================================================
14
-
15
- # Node Environment
16
- NODE_ENV="production"
17
-
18
- # Application URLs
19
- NEXT_PUBLIC_APP_URL="{{APP_URL}}"
20
- NEXT_PUBLIC_API_URL="{{APP_URL}}/api"
21
-
22
- # Database (External PostgreSQL)
23
- # Get these from your Supabase dashboard or PostgreSQL provider
24
- DATABASE_URL="{{DATABASE_URL}}"
25
- DIRECT_URL="{{DIRECT_URL}}"
26
-
27
- # Authentication (better-auth)
28
- BETTER_AUTH_SECRET="{{BETTER_AUTH_SECRET}}"
29
- BETTER_AUTH_URL="{{APP_URL}}"
30
-
31
- # Storage (S3-compatible / R2)
32
- # Production uses Unified S3-compatible configuration
33
- STORAGE_ENDPOINT="{{STORAGE_ENDPOINT}}"
34
- STORAGE_REGION="{{STORAGE_REGION}}"
35
- STORAGE_ACCESS_KEY_ID="{{STORAGE_ACCESS_KEY_ID}}"
36
- STORAGE_SECRET_ACCESS_KEY="{{STORAGE_SECRET_ACCESS_KEY}}"
37
-
38
- # Storage Buckets
39
- STORAGE_ATTACHMENTS_BUCKET="ui-syncup-attachments"
40
- STORAGE_ATTACHMENTS_PUBLIC_URL="{{STORAGE_ENDPOINT}}/ui-syncup-attachments"
41
- STORAGE_MEDIA_BUCKET="ui-syncup-media"
42
- STORAGE_MEDIA_PUBLIC_URL="{{STORAGE_ENDPOINT}}/ui-syncup-media"
43
-
44
- # ============================================================================
45
- # Optional Configuration
46
- # ============================================================================
47
-
48
- # Supabase (if using Supabase Cloud)
49
- # NEXT_PUBLIC_SUPABASE_URL="{{SUPABASE_URL}}"
50
- # NEXT_PUBLIC_SUPABASE_ANON_KEY="{{SUPABASE_ANON_KEY}}"
51
- # SUPABASE_SERVICE_ROLE_KEY="{{SUPABASE_SERVICE_ROLE_KEY}}"
52
-
53
- # Email (Resend - Cloud deployments)
54
- # Required in production unless SMTP is configured below.
55
- # RESEND_API_KEY="{{RESEND_API_KEY}}"
56
- # RESEND_FROM_EMAIL="{{RESEND_FROM_EMAIL}}"
57
-
58
- # Email (SMTP - Self-hosted deployments, alternative to Resend)
59
- # When SMTP_HOST is set, all fields below are required.
60
- # SMTP_HOST="{{SMTP_HOST}}"
61
- # SMTP_PORT="587"
62
- # SMTP_USER="{{SMTP_USER}}"
63
- # SMTP_PASSWORD="{{SMTP_PASSWORD}}"
64
- # SMTP_FROM_EMAIL="{{SMTP_FROM_EMAIL}}"
65
- # SMTP_SECURE="false"
66
-
67
- # Google OAuth
68
- # GOOGLE_CLIENT_ID=""
69
- # GOOGLE_CLIENT_SECRET=""
70
- # GOOGLE_REDIRECT_URI="{{APP_URL}}/api/auth/callback/google"
71
-
72
- # Microsoft OAuth
73
- # MICROSOFT_CLIENT_ID=""
74
- # MICROSOFT_CLIENT_SECRET=""
75
- # MICROSOFT_TENANT_ID="common"
76
-
77
- # Atlassian OAuth
78
- # ATLASSIAN_CLIENT_ID=""
79
- # ATLASSIAN_CLIENT_SECRET=""
80
-
81
- # Feature Flags
82
- # NEXT_PUBLIC_ENABLE_ANALYTICS="true"
83
- # NEXT_PUBLIC_ENABLE_DEBUG="false"
84
- # NEXT_PUBLIC_ENABLE_HARD_DELETE="false"