For 1.1.3-rc-2 release.

This commit is contained in:
charlesgauthereau
2025-10-27 18:49:24 +01:00
parent 7d6038e5f1
commit e3239639f3
7 changed files with 124 additions and 178 deletions
+4 -1
View File
@@ -30,4 +30,7 @@ S3_PORT=9000
S3_USE_SSL=true S3_USE_SSL=true
# Storage Type (s3, local) # Storage Type (s3, local)
STORAGE_TYPE=local STORAGE_TYPE=local
# Retention
RETENTION_CRON="* * * * *"
+3 -1
View File
@@ -19,7 +19,6 @@
<a href="https://github.com/Soluce-Technologies/portabase/issues/new?labels=enhancement&template=feature-request---.md">Request Feature</a> <a href="https://github.com/Soluce-Technologies/portabase/issues/new?labels=enhancement&template=feature-request---.md">Request Feature</a>
![portabase-ezgif com-video-to-gif-converter](https://github.com/user-attachments/assets/e3929e58-fefd-44cc-ab26-6f8e1a860c43) ![portabase-ezgif com-video-to-gif-converter](https://github.com/user-attachments/assets/e3929e58-fefd-44cc-ab26-6f8e1a860c43)
</p> </p>
</div> </div>
@@ -178,6 +177,9 @@ S3_USE_SSL=true
# Storage Backend: 'local' or 's3' # Storage Backend: 'local' or 's3'
STORAGE_TYPE=local STORAGE_TYPE=local
# Retention
RETENTION_CRON="* * * * *"
``` ```
### Semantic Versioning ### Semantic Versioning
-4
View File
@@ -11,14 +11,11 @@ services:
- '8887:80' - '8887:80'
env_file: env_file:
- .env - .env
depends_on: depends_on:
db: db:
condition: service_healthy condition: service_healthy
container_name: portabase-app-prod container_name: portabase-app-prod
db: db:
image: postgres:16-alpine image: postgres:16-alpine
ports: ports:
@@ -35,7 +32,6 @@ services:
timeout: 5s timeout: 5s
retries: 5 retries: 5
s3: s3:
image: docker.io/bitnami/minio:latest image: docker.io/bitnami/minio:latest
ports: ports:
-52
View File
@@ -1,25 +1,6 @@
name: portabase-dev name: portabase-dev
services: services:
# app:
# build:
# context: .
# dockerfile: docker/dockerfile/Dockerfile
# target: dev
# ports:
# - "8887:8887"
# environment:
# - TIME_ZONE="Europe/Paris"
# - NODE_ENV=development
# depends_on:
# db:
# condition: service_healthy
# volumes:
# - .:/app
# - /app/node_modules
# container_name: portabase-app
#
db: db:
image: postgres:16-alpine image: postgres:16-alpine
ports: ports:
@@ -36,38 +17,5 @@ services:
timeout: 5s timeout: 5s
retries: 5 retries: 5
# db-pgadmin:
# image: dpage/pgadmin4
# environment:
# PGADMIN_DEFAULT_EMAIL: "devuser@devuser.devuser"
# PGADMIN_DEFAULT_PASSWORD: "changeme"
# PGADMIN_CONFIG_SERVER_MODE: "False"
# POSTGRES_USER: "devuser"
# POSTGRES_PASSWORD: "changeme"
# volumes:
# - pgadmin-data:/var/lib/pgadmin
# ports:
# - "8080:80"
# restart: unless-stopped
# depends_on:
# - db
# s3:
# container_name: s3-portabase-dev
# image: docker.io/bitnami/minio:latest
# ports:
# - "9000:9000"
# - "9001:9001"
# volumes:
# - minio_data:/data
#
# environment:
# - MINIO_ROOT_USER=${S3_ACCESS_KEY}
# - MINIO_ROOT_PASSWORD=${S3_SECRET_KEY}
# - MINIO_DEFAULT_BUCKETS=${S3_BUCKET_NAME}
# - MINIO_BROWSER=on
volumes: volumes:
postgres-data: postgres-data:
# minio_data:
# pgadmin-data:
+1 -1
View File
@@ -60,7 +60,7 @@ export async function middleware(request: NextRequest) {
function checkRouteExists(pathname: string) { function checkRouteExists(pathname: string) {
// Define static and dynamic routes with patterns // Define static and dynamic routes with patterns
const routePatterns = [ const routePatterns = [
//do not delete // Do not delete
// /^\/api\/auth\/\d+$/, // Dynamic route with a number as a parameter (e.g., /api/dynamic/123) // /^\/api\/auth\/\d+$/, // Dynamic route with a number as a parameter (e.g., /api/dynamic/123)
// /^\/api\/auth\/\w+$/, // Dynamic route with a number as a parameter (e.g., /api/dynamic/123) // /^\/api\/auth\/\w+$/, // Dynamic route with a number as a parameter (e.g., /api/dynamic/123)
// /^\/api\/agent\/healthcheck\/\w+$/, // Dynamic route with an alphanumeric parameter (e.g., /api/user/username) // /^\/api\/agent\/healthcheck\/\w+$/, // Dynamic route with an alphanumeric parameter (e.g., /api/user/username)
+115 -115
View File
@@ -1,117 +1,117 @@
{ {
"name": "portabase", "name": "portabase",
"version": "1.1.3", "version": "1.1.3",
"private": true, "private": true,
"scripts": { "scripts": {
"dev": "next dev --turbopack -p 8887", "dev": "next dev --turbopack -p 8887",
"build": "next build --experimental-build-mode compile", "build": "next build --experimental-build-mode compile",
"start": "next start", "start": "next start",
"lint": "next lint", "lint": "next lint",
"email": "email dev", "email": "email dev",
"db:generate": "drizzle-kit generate", "db:generate": "drizzle-kit generate",
"db:migrate": "drizzle-kit migrate", "db:migrate": "drizzle-kit migrate",
"db:drop": "drizzle-kit drop", "db:drop": "drizzle-kit drop",
"auth:generate": "npx @better-auth/cli generate --config ./src/lib/auth/auth.ts" "auth:generate": "npx @better-auth/cli generate --config ./src/lib/auth/auth.ts"
}, },
"dependencies": { "dependencies": {
"@hookform/resolvers": "^5.0.1", "@hookform/resolvers": "^5.0.1",
"@radix-ui/react-accordion": "^1.2.10", "@radix-ui/react-accordion": "^1.2.10",
"@radix-ui/react-alert-dialog": "^1.1.13", "@radix-ui/react-alert-dialog": "^1.1.13",
"@radix-ui/react-aspect-ratio": "^1.1.6", "@radix-ui/react-aspect-ratio": "^1.1.6",
"@radix-ui/react-avatar": "^1.1.9", "@radix-ui/react-avatar": "^1.1.9",
"@radix-ui/react-checkbox": "^1.3.1", "@radix-ui/react-checkbox": "^1.3.1",
"@radix-ui/react-collapsible": "^1.1.10", "@radix-ui/react-collapsible": "^1.1.10",
"@radix-ui/react-context-menu": "^2.2.14", "@radix-ui/react-context-menu": "^2.2.14",
"@radix-ui/react-dialog": "^1.1.13", "@radix-ui/react-dialog": "^1.1.13",
"@radix-ui/react-dropdown-menu": "^2.1.14", "@radix-ui/react-dropdown-menu": "^2.1.14",
"@radix-ui/react-hover-card": "^1.1.13", "@radix-ui/react-hover-card": "^1.1.13",
"@radix-ui/react-icons": "^1.3.2", "@radix-ui/react-icons": "^1.3.2",
"@radix-ui/react-label": "^2.1.6", "@radix-ui/react-label": "^2.1.6",
"@radix-ui/react-menubar": "^1.1.14", "@radix-ui/react-menubar": "^1.1.14",
"@radix-ui/react-navigation-menu": "^1.2.12", "@radix-ui/react-navigation-menu": "^1.2.12",
"@radix-ui/react-popover": "^1.1.13", "@radix-ui/react-popover": "^1.1.13",
"@radix-ui/react-progress": "^1.1.6", "@radix-ui/react-progress": "^1.1.6",
"@radix-ui/react-radio-group": "^1.3.6", "@radix-ui/react-radio-group": "^1.3.6",
"@radix-ui/react-scroll-area": "^1.2.8", "@radix-ui/react-scroll-area": "^1.2.8",
"@radix-ui/react-select": "^2.2.4", "@radix-ui/react-select": "^2.2.4",
"@radix-ui/react-separator": "^1.1.6", "@radix-ui/react-separator": "^1.1.6",
"@radix-ui/react-slider": "^1.3.4", "@radix-ui/react-slider": "^1.3.4",
"@radix-ui/react-slot": "^1.2.2", "@radix-ui/react-slot": "^1.2.2",
"@radix-ui/react-switch": "^1.2.4", "@radix-ui/react-switch": "^1.2.4",
"@radix-ui/react-tabs": "^1.1.11", "@radix-ui/react-tabs": "^1.1.11",
"@radix-ui/react-toast": "^1.2.13", "@radix-ui/react-toast": "^1.2.13",
"@radix-ui/react-toggle": "^1.1.8", "@radix-ui/react-toggle": "^1.1.8",
"@radix-ui/react-toggle-group": "^1.1.9", "@radix-ui/react-toggle-group": "^1.1.9",
"@radix-ui/react-tooltip": "^1.2.6", "@radix-ui/react-tooltip": "^1.2.6",
"@react-email/components": "^0.0.41", "@react-email/components": "^0.0.41",
"@t3-oss/env-nextjs": "^0.13.4", "@t3-oss/env-nextjs": "^0.13.4",
"@tanstack/react-query": "^5.76.1", "@tanstack/react-query": "^5.76.1",
"@tanstack/react-table": "^8.21.3", "@tanstack/react-table": "^8.21.3",
"@types/nodemailer": "^6.4.17", "@types/nodemailer": "^6.4.17",
"@types/ws": "^8.18.1", "@types/ws": "^8.18.1",
"@zenstackhq/runtime": "2.14.2", "@zenstackhq/runtime": "2.14.2",
"argon2": "^0.43.0", "argon2": "^0.43.0",
"bcrypt": "^6.0.0", "bcrypt": "^6.0.0",
"better-auth": "1.3.1", "better-auth": "1.3.1",
"class-variance-authority": "^0.7.1", "class-variance-authority": "^0.7.1",
"clsx": "^2.1.1", "clsx": "^2.1.1",
"cmdk": "^1.1.1", "cmdk": "^1.1.1",
"date-fns": "^4.1.0", "date-fns": "^4.1.0",
"dockerode": "^4.0.6", "dockerode": "^4.0.6",
"dotenv": "^16.5.0", "dotenv": "^16.5.0",
"drizzle-orm": "^0.43.1", "drizzle-orm": "^0.43.1",
"drizzle-zod": "^0.7.1", "drizzle-zod": "^0.7.1",
"embla-carousel-react": "^8.6.0", "embla-carousel-react": "^8.6.0",
"input-otp": "^1.4.2", "input-otp": "^1.4.2",
"lucide-react": "^0.510.0", "lucide-react": "^0.510.0",
"minio": "^8.0.5", "minio": "^8.0.5",
"next": "15.5.2", "next": "15.5.2",
"next-safe-action": "^7.10.8", "next-safe-action": "^7.10.8",
"next-themes": "^0.4.6", "next-themes": "^0.4.6",
"node-cron": "^4.2.1", "node-cron": "^4.2.1",
"node-forge": "^1.3.1", "node-forge": "^1.3.1",
"nodemailer": "^7.0.3", "nodemailer": "^7.0.3",
"npm-check-updates": "^18.0.1", "npm-check-updates": "^18.0.1",
"pg": "^8.16.0", "pg": "^8.16.0",
"react": "19.1.0", "react": "19.1.0",
"react-day-picker": "9.7.0", "react-day-picker": "9.7.0",
"react-dom": "19.1.0", "react-dom": "19.1.0",
"react-dropzone": "^14.3.8", "react-dropzone": "^14.3.8",
"react-email": "^4.0.13", "react-email": "^4.0.13",
"react-hook-form": "^7.56.3", "react-hook-form": "^7.56.3",
"react-resizable-panels": "^3.0.2", "react-resizable-panels": "^3.0.2",
"react-twc": "^1.4.2", "react-twc": "^1.4.2",
"recharts": "^2.15.3", "recharts": "^2.15.3",
"socket.io": "^4.8.1", "socket.io": "^4.8.1",
"socket.io-client": "^4.8.1", "socket.io-client": "^4.8.1",
"sonner": "^2.0.3", "sonner": "^2.0.3",
"tailwind-merge": "^3.3.0", "tailwind-merge": "^3.3.0",
"uuid": "^11.1.0", "uuid": "^11.1.0",
"vaul": "^1.1.2", "vaul": "^1.1.2",
"ws": "^8.18.2", "ws": "^8.18.2",
"zod": "^3.24.4" "zod": "^3.24.4"
}, },
"devDependencies": { "devDependencies": {
"@iconify/react": "^6.0.0", "@iconify/react": "^6.0.0",
"@tailwindcss/postcss": "^4.1.7", "@tailwindcss/postcss": "^4.1.7",
"@types/eslint-plugin-tailwindcss": "^3.17.0", "@types/eslint-plugin-tailwindcss": "^3.17.0",
"@types/node": "^22.15.18", "@types/node": "^22.15.18",
"@types/node-forge": "^1", "@types/node-forge": "^1",
"@types/pg": "^8.15.2", "@types/pg": "^8.15.2",
"@types/react": "^19.1.4", "@types/react": "^19.1.4",
"@types/react-dom": "^19.1.5", "@types/react-dom": "^19.1.5",
"@zenstackhq/openapi": "^2.14.2", "@zenstackhq/openapi": "^2.14.2",
"@zenstackhq/tanstack-query": "^2.14.2", "@zenstackhq/tanstack-query": "^2.14.2",
"drizzle-kit": "^0.31.1", "drizzle-kit": "^0.31.1",
"eslint": "^9.26.0", "eslint": "^9.26.0",
"eslint-config-next": "15.3.2", "eslint-config-next": "15.3.2",
"eslint-plugin-tailwindcss": "^3.18.0", "eslint-plugin-tailwindcss": "^3.18.0",
"postcss": "^8.5.3", "postcss": "^8.5.3",
"tailwindcss": "^4.1.7", "tailwindcss": "^4.1.7",
"tsx": "^4.19.4", "tsx": "^4.19.4",
"tw-animate-css": "^1.2.9", "tw-animate-css": "^1.2.9",
"typescript": "^5.8.3", "typescript": "^5.8.3",
"zenstack": "2.14.2" "zenstack": "2.14.2"
}, },
"packageManager": "yarn@4.9.1" "packageManager": "yarn@4.9.1"
} }
@@ -1,10 +1,7 @@
import {Card, CardContent, CardDescription, CardHeader, CardTitle} from "@/components/ui/card"; import {Card, CardContent, CardDescription, CardHeader, CardTitle} from "@/components/ui/card";
import {Button} from "@/components/ui/button"; import {Button} from "@/components/ui/button";
import {Download} from "lucide-react"; import {Download} from "lucide-react";
import {getFileUrlPresignedLocal, getFileUrlPreSignedS3Action} from "@/features/upload/private/upload.action"; import {getFileUrlPresignedLocal} from "@/features/upload/private/upload.action";
import {SafeActionResult} from "next-safe-action";
import {ZodString} from "zod";
import {ServerActionResult} from "@/types/action-type";
import {toast} from "sonner"; import {toast} from "sonner";
export type AdminSettingsTabProps = {}; export type AdminSettingsTabProps = {};