From 21b317e4f1810ad7e2cd04b332ebd0b2347dc17b Mon Sep 17 00:00:00 2001 From: killianlarcher Date: Sat, 17 Jan 2026 17:44:31 +0100 Subject: [PATCH 1/3] fix: Update .env.example and docker-compose.yml for local development configuration --- .env.example | 18 +++++++++--------- docker-compose.yml | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.env.example b/.env.example index 3e76d4b..a931036 100644 --- a/.env.example +++ b/.env.example @@ -1,18 +1,18 @@ # Environnement -NODE_ENV=production +NODE_ENV=development # Base de données -DATABASE_URL=postgresql://devuser:changeme@db:5432/devdb?schema=public +DATABASE_URL=postgresql://devuser:changeme@localhost:5432/devdb?schema=public # Projet PROJECT_NAME="Portabase" PROJECT_DESCRIPTION="Portabase is a powerful database manager" -PROJECT_URL=http://app.portabase.io +PROJECT_URL=http://localhost:8887 PROJECT_SECRET= # SMTP (email) SMTP_HOST= -SMTP_PORT=587 +SMTP_PORT= SMTP_USER= SMTP_PASSWORD= SMTP_FROM= @@ -23,14 +23,14 @@ AUTH_GOOGLE_SECRET= AUTH_GOOGLE_METHOD= # S3 -S3_ENDPOINT=http://app.s3.portabase.io +S3_ENDPOINT= S3_ACCESS_KEY= S3_SECRET_KEY= -S3_BUCKET_NAME=portabase -S3_PORT=9000 -S3_USE_SSL=true +S3_BUCKET_NAME= +S3_PORT= +S3_USE_SSL= -# Storage Type (s3, local) +# Storage type (local, S3) STORAGE_TYPE=local # Retention diff --git a/docker-compose.yml b/docker-compose.yml index a444beb..dac5796 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,7 +4,7 @@ services: db: image: postgres:16-alpine ports: - - "5433:5432" + - "5432:5432" volumes: - postgres-data:/var/lib/postgresql/data environment: From cddb0a7e05c48fd6d7874f51a62edfd12c3df1a9 Mon Sep 17 00:00:00 2001 From: killianlarcher Date: Sat, 17 Jan 2026 19:36:28 +0100 Subject: [PATCH 2/3] feat(ui): add pulse effect to connection indicator --- .../wrappers/common/connection-circle.tsx | 27 ----------- .../wrappers/common/connection-indicator.tsx | 48 +++++++++++++++++++ .../dashboard/agent/agent-card/agent-card.tsx | 6 +-- .../project-card/project-database-card.tsx | 4 +- 4 files changed, 53 insertions(+), 32 deletions(-) delete mode 100644 src/components/wrappers/common/connection-circle.tsx create mode 100644 src/components/wrappers/common/connection-indicator.tsx diff --git a/src/components/wrappers/common/connection-circle.tsx b/src/components/wrappers/common/connection-circle.tsx deleted file mode 100644 index f30b3a3..0000000 --- a/src/components/wrappers/common/connection-circle.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import {cn} from "@/lib/utils"; - -export type ConnectionCircleProps = { - date?: Date | null; -}; - -export const ConnectionCircle = ({date}: ConnectionCircleProps) => { - let style = "bg-gray-300 border-gray-400"; - - if (date instanceof Date && !isNaN(date.getTime())) { - const now = Date.now(); - const timestamp = date.getTime(); - const interval_seconds = (now - timestamp) / 1000; - - if (interval_seconds < 55) { - style = "bg-green-400 border-green-600"; - } else if (interval_seconds <= 60) { - style = "bg-orange-400 border-orange-600"; - } else { - style = "bg-red-400 border-red-600"; - } - } else { - console.warn("Invalid date passed to ConnectionCircle:", date); - } - - return
; -}; diff --git a/src/components/wrappers/common/connection-indicator.tsx b/src/components/wrappers/common/connection-indicator.tsx new file mode 100644 index 0000000..0f4cc86 --- /dev/null +++ b/src/components/wrappers/common/connection-indicator.tsx @@ -0,0 +1,48 @@ +import { cn } from "@/lib/utils"; + +export type ConnectionIndicatorProps = { + date?: Date | null; +}; + +export const ConnectionIndicator = ({ date }: ConnectionIndicatorProps) => { + let style = "bg-gray-300"; + let active = false; + + if (date instanceof Date && !isNaN(date.getTime())) { + const intervalSeconds = (Date.now() - date.getTime()) / 1000; + + if (intervalSeconds < 55) { + style = "bg-green-500"; + active = true; + } else if (intervalSeconds <= 60) { + style = "bg-orange-400"; + } else { + style = "bg-red-500"; + } + } + + return ( +
+ {active && ( + + )} +
+
+ ); +}; diff --git a/src/components/wrappers/dashboard/agent/agent-card/agent-card.tsx b/src/components/wrappers/dashboard/agent/agent-card/agent-card.tsx index 35d45c0..2191e4b 100644 --- a/src/components/wrappers/dashboard/agent/agent-card/agent-card.tsx +++ b/src/components/wrappers/dashboard/agent/agent-card/agent-card.tsx @@ -3,10 +3,10 @@ import {useState} from "react"; import Link from "next/link"; import {Card} from "@/components/ui/card"; -import {ConnectionCircle} from "@/components/wrappers/common/connection-circle"; +import {ConnectionIndicator} from "@/components/wrappers/common/connection-indicator"; import {formatDateLastContact} from "@/utils/date-formatting"; import {AgentWith} from "@/db/schema/08_agent"; -import {Activity, ChevronRight, Copy, Check, Fingerprint, Server, Database, ShieldCheck} from "lucide-react"; +import {Activity, ChevronRight, Copy, Check, Fingerprint, Server, Database} from "lucide-react"; import {Badge} from "@/components/ui/badge"; import {truncateWords} from "@/utils/text"; import {useIsMobile} from "@/hooks/use-mobile"; @@ -86,7 +86,7 @@ export const AgentCard = (props: agentCardProps) => {
- +
diff --git a/src/components/wrappers/dashboard/projects/project-card/project-database-card.tsx b/src/components/wrappers/dashboard/projects/project-card/project-database-card.tsx index c7399e7..57b8af1 100644 --- a/src/components/wrappers/dashboard/projects/project-card/project-database-card.tsx +++ b/src/components/wrappers/dashboard/projects/project-card/project-database-card.tsx @@ -4,7 +4,7 @@ import Link from "next/link"; import Image from "next/image"; import {useState} from "react"; import {Card} from "@/components/ui/card"; -import {ConnectionCircle} from "@/components/wrappers/common/connection-circle"; +import {ConnectionIndicator} from "@/components/wrappers/common/connection-indicator"; import {formatDateLastContact} from "@/utils/date-formatting"; import {Database} from "@/db/schema/07_database"; import {ChevronRight, Activity, Fingerprint, Copy, Check} from "lucide-react"; @@ -60,7 +60,7 @@ export const DatabaseCard = (props: databaseCardProps) => {
- +
From 12112afa37abf45bb7a2ebb089f2512978efe262 Mon Sep 17 00:00:00 2001 From: killianlarcher Date: Sat, 17 Jan 2026 20:06:01 +0100 Subject: [PATCH 3/3] feat(ui):resize connection indicator and add pulse effect for all use cases. --- .../wrappers/common/connection-indicator.tsx | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/components/wrappers/common/connection-indicator.tsx b/src/components/wrappers/common/connection-indicator.tsx index 0f4cc86..8812932 100644 --- a/src/components/wrappers/common/connection-indicator.tsx +++ b/src/components/wrappers/common/connection-indicator.tsx @@ -1,19 +1,17 @@ -import { cn } from "@/lib/utils"; +import {cn} from "@/lib/utils"; export type ConnectionIndicatorProps = { date?: Date | null; }; -export const ConnectionIndicator = ({ date }: ConnectionIndicatorProps) => { +export const ConnectionIndicator = ({date}: ConnectionIndicatorProps) => { let style = "bg-gray-300"; - let active = false; if (date instanceof Date && !isNaN(date.getTime())) { const intervalSeconds = (Date.now() - date.getTime()) / 1000; if (intervalSeconds < 55) { style = "bg-green-500"; - active = true; } else if (intervalSeconds <= 60) { style = "bg-orange-400"; } else { @@ -22,8 +20,8 @@ export const ConnectionIndicator = ({ date }: ConnectionIndicatorProps) => { } return ( -
- {active && ( +
+ { animationDuration: "2s", }} /> - )} +