Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,9 @@ API_BASE_URL= # Notification service API URL
WEBHOOK_HOST= # Webhook host for callbacks
WEBHOOK_PORT=3002 # Dashboard webhook port
DASHBOARD_PORT=3002 # Dashboard port
BASE_PATH= # Configurable BASE_PATH to render the admin dashboard
BASE_PATH= # Configurable BASE_PATH to render the admin dashboard
HTTPS_COOKIE= # Controls the storage of session cookies in http and https mode. (If set false, then the cookies can be stored in http connection)


# ============================================
# PLUGIN SPECIFIC ENV VARIABLES (Partition variables + Plugin credentials)
Expand Down
3 changes: 2 additions & 1 deletion dashboard/.env.example
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,5 @@ NS_API_KEY= # notification service api key
API_BASE_URL= # notification service base url
WEBHOOK_HOST= # webhook host
WEBHOOK_PORT= # webhook port
BASE_PATH= # Base path for Next.js app (e.g., /dashboard). Leave empty for root path.
BASE_PATH= # Base path for Next.js app (e.g., /dashboard). Leave empty for root path.
HTTPS_COOKIE= # Controls the storage of session cookies in http and https mode. (If set false, then the cookies can be stored in http connection)
3 changes: 2 additions & 1 deletion dashboard/app/settings/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import { Button } from "@/components/ui/button";
import { useGlassmorphism } from "@/components/glassmorphism-provider";
import { useTour } from "@/components/tour/tour-provider";
import { RotateCcw } from "lucide-react";
import packageJson from "../../package.json";

export default function SettingsPage() {
const { enabled, setEnabled } = useGlassmorphism();
Expand Down Expand Up @@ -72,7 +73,7 @@ export default function SettingsPage() {
<CardContent className="space-y-4">
<div className="flex items-center justify-between">
<span className="text-sm text-muted-foreground">Dashboard Version</span>
<Badge variant="secondary">1.0.0</Badge>
<Badge variant="secondary">{packageJson.version}</Badge>
</div>
<Separator />
<div className="flex items-center justify-between">
Expand Down
12 changes: 7 additions & 5 deletions dashboard/components/ui/sidebar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import { cn } from "@/lib/utils";
import { useSidebarPin } from "@/components/sidebar-pin-provider";
import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";
import { ScrollArea } from "@/components/ui/scroll-area";
import { Separator } from "@/components/ui/separator";
import {
Sheet,
Expand Down Expand Up @@ -401,7 +402,7 @@ function SidebarFooter({ className, ...props }: React.ComponentProps<"div">) {
<div
data-slot="sidebar-footer"
data-sidebar="footer"
className={cn("flex flex-col gap-2 p-2", className)}
className={cn("flex flex-col gap-2 border-t border-sidebar-border px-2 pt-4 pb-2", className)}
{...props}
/>
);
Expand All @@ -423,15 +424,16 @@ function SidebarSeparator({

function SidebarContent({ className, ...props }: React.ComponentProps<"div">) {
return (
<div
<ScrollArea
data-slot="sidebar-content"
data-sidebar="content"
className={cn(
"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden",
"min-h-0 flex-1 group-data-[collapsible=icon]:overflow-hidden",
className,
)}
{...props}
/>
>
<div className="flex flex-col gap-2 pb-2" {...props} />
</ScrollArea>
);
}

Expand Down
2 changes: 1 addition & 1 deletion dashboard/lib/session.ts
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ export async function createSession(userId: string, username: string): Promise<v
const cookieStore = await cookies();
cookieStore.set(SESSION_COOKIE_NAME, token, {
httpOnly: true,
secure: process.env.NODE_ENV === "production",
secure: process.env.HTTPS_COOKIE !== "false",
sameSite: "lax",
path: "/",
maxAge: SESSION_EXPIRY_DAYS * 24 * 60 * 60,
Expand Down
2 changes: 1 addition & 1 deletion dashboard/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "dashboard",
"version": "0.1.0",
"version": "1.2.0",
"private": true,
"scripts": {
"dev": "next dev -p 3002",
Expand Down
8 changes: 3 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
{
"name": "simplens-core",
"version": "1.0.0",
"description": "Lightweight, backend notification service for sending EMAIL and WHATSAPP messages. It supports single and batch notifications, scheduled deliveries and webhook callbacks for final delivery status.",
"version": "1.2.0",
"private": true,
"description": "Open-source plugin-based notification orchestration engine for developers who value control ",
"main": "dist/api/server.js",
"type": "module",
"directories": {
"doc": "docs"
},
"scripts": {
"test": "vitest run",
"test:watch": "vitest",
Expand Down