From ed924ef2aced0213897aa6ce523f22ad81041739 Mon Sep 17 00:00:00 2001 From: Clinton Moss Date: Fri, 3 Apr 2026 12:35:13 +0200 Subject: [PATCH] Add Webapp --- webapp/.gitignore | 41 + webapp/.vscode/launch.json | 45 + webapp/BUILD.ps1 | 25 + webapp/README.md | 42 + webapp/actions/auth/AuthActions.ts | 35 + webapp/actions/room/RoomActions.ts | 7 + webapp/actions/users/UserActions.ts | 8 + webapp/app/call/page.tsx | 19 + webapp/app/dashboard/page.tsx | 11 + webapp/app/favicon.ico | Bin 0 -> 285478 bytes webapp/app/globals.css | 138 + webapp/app/layout.tsx | 65 + webapp/app/layoutClient.tsx | 47 + webapp/app/login/page.tsx | 11 + webapp/app/manifest.ts | 81 + webapp/app/page.tsx | 56 + webapp/app/register/error.tsx | 10 + webapp/app/register/page.tsx | 57 + webapp/app/signup/page.tsx | 11 + webapp/app/tesst/page.tsx | 10 + webapp/app/testb/page.tsx | 16 + webapp/app/testc/page.tsx | 33 + webapp/app/testd/page.tsx | 98 + webapp/app/teste/page.tsx | 38 + webapp/components.json | 25 + webapp/components/Dialogs/ErrorDialog.tsx | 7 + webapp/components/RoomCard.tsx | 59 + webapp/components/chat/ChatBox.tsx | 33 + .../chat/ChatNoServerWidget copy.tsx | 175 + webapp/components/chat/ChatNoServerWidget.tsx | 175 + webapp/components/chat/ChatWS.tsx | 134 + webapp/components/chat/MediaSoupWidget.tsx | 388 + .../chat/WebRTCChatUsingPeer copy 2.tmp | 187 + .../chat/WebRTCChatUsingPeer copy 3.tmp | 530 + .../chat/WebRTCChatUsingPeer copy.tmp | 506 + .../components/chat/WebRTCChatUsingPeer.tsx | 538 + webapp/components/chat/WebRTComponent.tsx | 197 + webapp/components/chat/main.js | 214 + webapp/components/chat/socket.ts | 6 + webapp/components/login-form.tsx | 72 + webapp/components/signup-form.tsx | 76 + webapp/components/ui/button.tsx | 67 + webapp/components/ui/card.tsx | 103 + webapp/components/ui/field.tsx | 238 + webapp/components/ui/input-group.tsx | 156 + webapp/components/ui/input.tsx | 19 + webapp/components/ui/label.tsx | 24 + webapp/components/ui/separator.tsx | 28 + webapp/components/ui/textarea.tsx | 18 + webapp/eslint.config.mjs | 18 + webapp/helper/api/ApiConnector.ts | 25 + webapp/lib/utils.ts | 6 + webapp/next.config.ts | 14 + webapp/package-lock.json | 11875 ++++++++++++++++ webapp/package.json | 38 + webapp/postcss.config.mjs | 7 + webapp/public/apple-icon-180.png | Bin 0 -> 18931 bytes webapp/public/file.svg | 1 + webapp/public/globe.svg | 1 + webapp/public/manifest-icon-192 (1).png | Bin 0 -> 21270 bytes webapp/public/manifest-icon-192 (2).png | Bin 0 -> 63054 bytes webapp/public/manifest-icon-192.maskable.png | Bin 0 -> 26285 bytes .../public/manifest-icon-192.maskable.png.kra | Bin 0 -> 155140 bytes webapp/public/manifest-icon-512.maskable.png | Bin 0 -> 84447 bytes webapp/public/manifest-icon-96.maskable.png | Bin 0 -> 8597 bytes .../public/manifest-icon-96.maskable.png.kra | Bin 0 -> 120030 bytes webapp/public/manifest.backup | 60 + webapp/public/next.svg | 1 + webapp/public/screen1.png | Bin 0 -> 941597 bytes webapp/public/screen1.png.kra | Bin 0 -> 3211335 bytes webapp/public/screen2.png | Bin 0 -> 391726 bytes webapp/public/screen2.png-autosave.kra | Bin 0 -> 893942 bytes webapp/public/service-worker.js | 93 + webapp/public/vercel.svg | 1 + webapp/public/window.svg | 1 + webapp/tsconfig.json | 34 + 76 files changed, 17054 insertions(+) create mode 100644 webapp/.gitignore create mode 100644 webapp/.vscode/launch.json create mode 100644 webapp/BUILD.ps1 create mode 100644 webapp/README.md create mode 100644 webapp/actions/auth/AuthActions.ts create mode 100644 webapp/actions/room/RoomActions.ts create mode 100644 webapp/actions/users/UserActions.ts create mode 100644 webapp/app/call/page.tsx create mode 100644 webapp/app/dashboard/page.tsx create mode 100644 webapp/app/favicon.ico create mode 100644 webapp/app/globals.css create mode 100644 webapp/app/layout.tsx create mode 100644 webapp/app/layoutClient.tsx create mode 100644 webapp/app/login/page.tsx create mode 100644 webapp/app/manifest.ts create mode 100644 webapp/app/page.tsx create mode 100644 webapp/app/register/error.tsx create mode 100644 webapp/app/register/page.tsx create mode 100644 webapp/app/signup/page.tsx create mode 100644 webapp/app/tesst/page.tsx create mode 100644 webapp/app/testb/page.tsx create mode 100644 webapp/app/testc/page.tsx create mode 100644 webapp/app/testd/page.tsx create mode 100644 webapp/app/teste/page.tsx create mode 100644 webapp/components.json create mode 100644 webapp/components/Dialogs/ErrorDialog.tsx create mode 100644 webapp/components/RoomCard.tsx create mode 100644 webapp/components/chat/ChatBox.tsx create mode 100644 webapp/components/chat/ChatNoServerWidget copy.tsx create mode 100644 webapp/components/chat/ChatNoServerWidget.tsx create mode 100644 webapp/components/chat/ChatWS.tsx create mode 100644 webapp/components/chat/MediaSoupWidget.tsx create mode 100644 webapp/components/chat/WebRTCChatUsingPeer copy 2.tmp create mode 100644 webapp/components/chat/WebRTCChatUsingPeer copy 3.tmp create mode 100644 webapp/components/chat/WebRTCChatUsingPeer copy.tmp create mode 100644 webapp/components/chat/WebRTCChatUsingPeer.tsx create mode 100644 webapp/components/chat/WebRTComponent.tsx create mode 100644 webapp/components/chat/main.js create mode 100644 webapp/components/chat/socket.ts create mode 100644 webapp/components/login-form.tsx create mode 100644 webapp/components/signup-form.tsx create mode 100644 webapp/components/ui/button.tsx create mode 100644 webapp/components/ui/card.tsx create mode 100644 webapp/components/ui/field.tsx create mode 100644 webapp/components/ui/input-group.tsx create mode 100644 webapp/components/ui/input.tsx create mode 100644 webapp/components/ui/label.tsx create mode 100644 webapp/components/ui/separator.tsx create mode 100644 webapp/components/ui/textarea.tsx create mode 100644 webapp/eslint.config.mjs create mode 100644 webapp/helper/api/ApiConnector.ts create mode 100644 webapp/lib/utils.ts create mode 100644 webapp/next.config.ts create mode 100644 webapp/package-lock.json create mode 100644 webapp/package.json create mode 100644 webapp/postcss.config.mjs create mode 100644 webapp/public/apple-icon-180.png create mode 100644 webapp/public/file.svg create mode 100644 webapp/public/globe.svg create mode 100644 webapp/public/manifest-icon-192 (1).png create mode 100644 webapp/public/manifest-icon-192 (2).png create mode 100644 webapp/public/manifest-icon-192.maskable.png create mode 100644 webapp/public/manifest-icon-192.maskable.png.kra create mode 100644 webapp/public/manifest-icon-512.maskable.png create mode 100644 webapp/public/manifest-icon-96.maskable.png create mode 100644 webapp/public/manifest-icon-96.maskable.png.kra create mode 100644 webapp/public/manifest.backup create mode 100644 webapp/public/next.svg create mode 100644 webapp/public/screen1.png create mode 100644 webapp/public/screen1.png.kra create mode 100644 webapp/public/screen2.png create mode 100644 webapp/public/screen2.png-autosave.kra create mode 100644 webapp/public/service-worker.js create mode 100644 webapp/public/vercel.svg create mode 100644 webapp/public/window.svg create mode 100644 webapp/tsconfig.json diff --git a/webapp/.gitignore b/webapp/.gitignore new file mode 100644 index 0000000..5ef6a52 --- /dev/null +++ b/webapp/.gitignore @@ -0,0 +1,41 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/versions + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# env files (can opt-in for committing if needed) +.env* + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/webapp/.vscode/launch.json b/webapp/.vscode/launch.json new file mode 100644 index 0000000..9f5d3a7 --- /dev/null +++ b/webapp/.vscode/launch.json @@ -0,0 +1,45 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Next.js: debug server-side", + "type": "node-terminal", + "request": "launch", + "command": "npm run dev -- --inspect" + }, + { + "name": "Next.js: debug client-side", + "type": "chrome", + "request": "launch", + "url": "http://localhost:3000" + }, + { + "name": "Next.js: debug client-side (Firefox)", + "type": "firefox", + "request": "launch", + "url": "http://localhost:3000", + "reAttach": true, + "pathMappings": [ + { + "url": "webpack://_N_E", + "path": "${workspaceFolder}" + } + ] + }, + { + "name": "Next.js: debug full stack", + "type": "node", + "request": "launch", + "program": "${workspaceFolder}/node_modules/next/dist/bin/next", + "runtimeArgs": ["--inspect"], + "skipFiles": ["/**"], + "serverReadyAction": { + "action": "debugWithEdge", + "killOnServerStop": true, + "pattern": "- Local:.+(https?://.+)", + "uriFormat": "%s", + "webRoot": "${workspaceFolder}" + } + } + ] +} \ No newline at end of file diff --git a/webapp/BUILD.ps1 b/webapp/BUILD.ps1 new file mode 100644 index 0000000..dd4c86d --- /dev/null +++ b/webapp/BUILD.ps1 @@ -0,0 +1,25 @@ +# echo "Building" +## PSVersionTable.PSVersion +## winget install --id Microsoft.Powershell --source winget + +mkdir dist +npm run build +cp -r .next/static .next/standalone/CoffeeChat/portal/.next +cp -r .next/standalone/CoffeeChat/portal dist +Compress-Archive -Path dist -DestinationPath dist.zip -Force +Remove-Item dist -Recurse -Force + +# Create an SSH session +#$remoteUser = "cinton" +#$remoteHost = "rootbranch.co.za:922" +#$session = New-PSSession -HostName "rootbranch.co.za:922" -UserName "cinton" -SSHTransport + +# Copy file from Windows to Linux +#Copy-Item -Path dist.zip -Destination "/home/clinton/dist.zip" -ToSession $session + +# Copy file from Linux to Windows +# Copy-Item -Path "/home/username/file.txt" -Destination "C:\path\to\local\file.txt" -FromSession $session + +# Close the session +#Remove-PSSession $session + diff --git a/webapp/README.md b/webapp/README.md new file mode 100644 index 0000000..1a59266 --- /dev/null +++ b/webapp/README.md @@ -0,0 +1,42 @@ +This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app). + +## Getting Started + +First, run the development server: + +```bash +npm run dev +# or +yarn dev +# or +pnpm dev +# or +bun dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. + +This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel. + +## Learn More + +To learn more about Next.js, take a look at the following resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. + +You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome! + +## Deploy on Vercel + +The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. + +Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. + + +## Publish + +npm config set @test:registry=https://gitea.example.com/api/packages/testuser/npm/ +npm config set -- '//gitea.example.com/api/packages/testuser/npm/:_authToken' "personal_access_token" \ No newline at end of file diff --git a/webapp/actions/auth/AuthActions.ts b/webapp/actions/auth/AuthActions.ts new file mode 100644 index 0000000..4cdf4d3 --- /dev/null +++ b/webapp/actions/auth/AuthActions.ts @@ -0,0 +1,35 @@ +"use server"; + +import { CallApi } from "@/helper/api/ApiConnector"; +import { cookies } from "next/headers"; +import { redirect, RedirectType } from "next/navigation"; + +export async function LoginFormAction(formData: FormData) { + console.log(`LoginFormAction`, formData); + const res = await fetch(`http://localhost:8081/api/auth/signin`, { + method: "POST", + headers: { + "content-type": "application/json", + }, + body: JSON.stringify({ + email: formData.get("email") as string, + password: formData.get("password") as string, + }), + }).catch((e) => console.error(e)); + // .then(async (res) => { + const resp = await (res as Response).json(); + // console.log(resp) + if (!resp.error) { + const cj = await cookies(); + cj.set("ccsession", resp.result); + redirect(`/dashboard`, RedirectType.replace); + } +} + +export async function RegisterFormAction(formData: FormData) { + await CallApi(`/auth/signup`, "POST", { + name: "", + email: formData.get("email") as string, + password: formData.get("password") as string, + }); +} diff --git a/webapp/actions/room/RoomActions.ts b/webapp/actions/room/RoomActions.ts new file mode 100644 index 0000000..9263389 --- /dev/null +++ b/webapp/actions/room/RoomActions.ts @@ -0,0 +1,7 @@ +'use server' + +import { CallApi } from "@/helper/api/ApiConnector" + +export async function getRooms(){ + return await CallApi("/rooms","GET") +} \ No newline at end of file diff --git a/webapp/actions/users/UserActions.ts b/webapp/actions/users/UserActions.ts new file mode 100644 index 0000000..ef9ce2c --- /dev/null +++ b/webapp/actions/users/UserActions.ts @@ -0,0 +1,8 @@ +"use server"; + +import { CallApi } from "@/helper/api/ApiConnector"; +import { cookies } from "next/headers"; + +export async function ListUsers() { + return await CallApi(`/users`,"GET").catch(e => console.error(e)) +} diff --git a/webapp/app/call/page.tsx b/webapp/app/call/page.tsx new file mode 100644 index 0000000..9c61520 --- /dev/null +++ b/webapp/app/call/page.tsx @@ -0,0 +1,19 @@ +import React from 'react' + +export default function CallScreen() { + return ( +
+
+ + + +
+
+
+
+
Chat
+
+
+ ) +} diff --git a/webapp/app/dashboard/page.tsx b/webapp/app/dashboard/page.tsx new file mode 100644 index 0000000..dc23746 --- /dev/null +++ b/webapp/app/dashboard/page.tsx @@ -0,0 +1,11 @@ +import { ListUsers } from '@/actions/users/UserActions' +import ChatBox from '@/components/chat/ChatBox' +import React from 'react' + +export default async function LoggedIn() { + const users = await ListUsers() + return (<> +
{JSON.stringify(users)}
+ + ) +} diff --git a/webapp/app/favicon.ico b/webapp/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..4bed74cc3767c0279a79abe6b0b8f3d04a79675b GIT binary patch literal 285478 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 literal 0 HcmV?d00001 diff --git a/webapp/app/globals.css b/webapp/app/globals.css new file mode 100644 index 0000000..7c7b4a7 --- /dev/null +++ b/webapp/app/globals.css @@ -0,0 +1,138 @@ +@import "tailwindcss"; +@import "tw-animate-css"; +@import "shadcn/tailwind.css"; + +@custom-variant dark (&:is(.dark *)); + +@theme inline { + --color-background: var(--background); + --color-foreground: var(--foreground); + --font-sans: var(--font-sans); + --font-mono: var(--font-geist-mono); + --font-heading: var(--font-sans); + --color-sidebar-ring: var(--sidebar-ring); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar: var(--sidebar); + --color-chart-5: var(--chart-5); + --color-chart-4: var(--chart-4); + --color-chart-3: var(--chart-3); + --color-chart-2: var(--chart-2); + --color-chart-1: var(--chart-1); + --color-ring: var(--ring); + --color-input: var(--input); + --color-border: var(--border); + --color-destructive: var(--destructive); + --color-accent-foreground: var(--accent-foreground); + --color-accent: var(--accent); + --color-muted-foreground: var(--muted-foreground); + --color-muted: var(--muted); + --color-secondary-foreground: var(--secondary-foreground); + --color-secondary: var(--secondary); + --color-primary-foreground: var(--primary-foreground); + --color-primary: var(--primary); + --color-popover-foreground: var(--popover-foreground); + --color-popover: var(--popover); + --color-card-foreground: var(--card-foreground); + --color-card: var(--card); + --radius-sm: calc(var(--radius) * 0.6); + --radius-md: calc(var(--radius) * 0.8); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) * 1.4); + --radius-2xl: calc(var(--radius) * 1.8); + --radius-3xl: calc(var(--radius) * 2.2); + --radius-4xl: calc(var(--radius) * 2.6); +} + +:root { + --background: oklch(1 0 0); + --foreground: oklch(0.145 0 0); + --card: oklch(1 0 0); + --card-foreground: oklch(0.145 0 0); + --popover: oklch(1 0 0); + --popover-foreground: oklch(0.145 0 0); + --primary: oklch(0.205 0 0); + --primary-foreground: oklch(0.985 0 0); + --secondary: oklch(0.97 0 0); + --secondary-foreground: oklch(0.205 0 0); + --muted: oklch(0.97 0 0); + --muted-foreground: oklch(0.556 0 0); + --accent: oklch(0.97 0 0); + --accent-foreground: oklch(0.205 0 0); + --destructive: oklch(0.577 0.245 27.325); + --border: oklch(0.922 0 0); + --input: oklch(0.922 0 0); + --ring: oklch(0.708 0 0); + --chart-1: oklch(0.87 0 0); + --chart-2: oklch(0.556 0 0); + --chart-3: oklch(0.439 0 0); + --chart-4: oklch(0.371 0 0); + --chart-5: oklch(0.269 0 0); + --radius: 0.625rem; + --sidebar: oklch(0.985 0 0); + --sidebar-foreground: oklch(0.145 0 0); + --sidebar-primary: oklch(0.205 0 0); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.97 0 0); + --sidebar-accent-foreground: oklch(0.205 0 0); + --sidebar-border: oklch(0.922 0 0); + --sidebar-ring: oklch(0.708 0 0); +} + +.dark { + --background: oklch(0.145 0 0); + --foreground: oklch(0.985 0 0); + --card: oklch(0.205 0 0); + --card-foreground: oklch(0.985 0 0); + --popover: oklch(0.205 0 0); + --popover-foreground: oklch(0.985 0 0); + --primary: oklch(0.922 0 0); + --primary-foreground: oklch(0.205 0 0); + --secondary: oklch(0.269 0 0); + --secondary-foreground: oklch(0.985 0 0); + --muted: oklch(0.269 0 0); + --muted-foreground: oklch(0.708 0 0); + --accent: oklch(0.269 0 0); + --accent-foreground: oklch(0.985 0 0); + --destructive: oklch(0.704 0.191 22.216); + --border: oklch(1 0 0 / 10%); + --input: oklch(1 0 0 / 15%); + --ring: oklch(0.556 0 0); + --chart-1: oklch(0.87 0 0); + --chart-2: oklch(0.556 0 0); + --chart-3: oklch(0.439 0 0); + --chart-4: oklch(0.371 0 0); + --chart-5: oklch(0.269 0 0); + --sidebar: oklch(0.205 0 0); + --sidebar-foreground: oklch(0.985 0 0); + --sidebar-primary: oklch(0.488 0.243 264.376); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.269 0 0); + --sidebar-accent-foreground: oklch(0.985 0 0); + --sidebar-border: oklch(1 0 0 / 10%); + --sidebar-ring: oklch(0.556 0 0); +} + +@layer base { + * { + @apply border-border outline-ring/50; + } + body { + @apply bg-background text-foreground; + } + html { + @apply font-sans; + } +} + +::view-transition-group(.animate-in){ + animation: animate-in ease-in 0.5s; +} + +::view-transition-group(.animate-out){ + animation: animate-out ease-in 0.5s; +} \ No newline at end of file diff --git a/webapp/app/layout.tsx b/webapp/app/layout.tsx new file mode 100644 index 0000000..c20837d --- /dev/null +++ b/webapp/app/layout.tsx @@ -0,0 +1,65 @@ + +// import React from "react"; + +// export default function RootLayoutClient({ children }) { +// React.useEffect(() => { +// if ("serviceWorker" in navigator) { +// navigator.serviceWorker +// .register("/service-worker.js") +// .then((registration) => { +// console.log("Service Worker registered with scope:", registration.scope); +// }) +// .catch((error) => { +// console.error("Service Worker registration failed:", error); +// }); +// } +// }, []); + +// return ( +//
+//
+// {children} +//
+//
+// ); +// } + +import type { Metadata } from "next"; +import { Geist, Geist_Mono } from "next/font/google"; +import "./globals.css"; +import React from "react"; +import RootLayoutClient from "./layoutClient"; + +const geistSans = Geist({ + variable: "--font-geist-sans", + subsets: ["latin"], +}); + +const geistMono = Geist_Mono({ + variable: "--font-geist-mono", + subsets: ["latin"], +}); + +export const metadata: Metadata = { + title: "CoffeeChat", + description: "Start chatting with your communities", +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + + return ( + + + + {children} + + + + ); +} diff --git a/webapp/app/layoutClient.tsx b/webapp/app/layoutClient.tsx new file mode 100644 index 0000000..7bd50f6 --- /dev/null +++ b/webapp/app/layoutClient.tsx @@ -0,0 +1,47 @@ +"use client"; + +import React from "react"; + +// import React from "react"; + +// export default function RootLayoutClient({ children }) { +// React.useEffect(() => { +// if ("serviceWorker" in navigator) { +// navigator.serviceWorker +// .register("/service-worker.js") +// .then((registration) => { +// console.log("Service Worker registered with scope:", registration.scope); +// }) +// .catch((error) => { +// console.error("Service Worker registration failed:", error); +// }); +// } +// }, []); + +// return ( +//
+//
+// {children} +//
+//
+// ); +// } +export default function RootLayoutClient({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + React.useEffect(() => { + if ("serviceWorker" in navigator) { + navigator.serviceWorker + .register("/service-worker.js") + .then((registration) => { + console.log("Service Worker registered with scope:", registration.scope); + }) + .catch((error) => { + console.error("Service Worker registration failed:", error); + }); + } + }, []); + return (children); +} diff --git a/webapp/app/login/page.tsx b/webapp/app/login/page.tsx new file mode 100644 index 0000000..8266323 --- /dev/null +++ b/webapp/app/login/page.tsx @@ -0,0 +1,11 @@ +import { LoginForm } from "@/components/login-form" + +export default function Page() { + return ( +
+
+ +
+
+ ) +} diff --git a/webapp/app/manifest.ts b/webapp/app/manifest.ts new file mode 100644 index 0000000..ca82a32 --- /dev/null +++ b/webapp/app/manifest.ts @@ -0,0 +1,81 @@ +import type { MetadataRoute } from "next"; + +export default function manifest(): MetadataRoute.Manifest { + return { + name: "CoffeeChat", + short_name: "CoffeeChat", + start_url: "chat.rootbranch.co.za", + display: "standalone", + description: "Start chatting with your communities", + lang: " en", + dir: "auto", + theme_color: "#59168b", + background_color: "#59168b", + orientation: "any", + icons: [ + { + src: "/manifest-icon-192.maskable.png", + sizes: "192x192", + type: "image/png", + purpose: "any", + }, + { + src: "/manifest-icon-192.maskable.png", + sizes: "192x192", + type: "image/png", + purpose: "maskable", + }, + { + src: "/manifest-icon-512.maskable.png", + sizes: "512x512", + type: "image/png", + purpose: "any", + }, + { + src: "/manifest-icon-512.maskable.png", + sizes: "512x512", + type: "image/png", + purpose: "maskable", + }, + ], + screenshots: [ + { + src: "screen1.png", + sizes: "2880x1800", + type: "image/png", + form_factor: "wide", + label: "Communities Home Page", + }, + { + src: "screen2.png", + sizes: "570x1265", + type: "image/png", + form_factor: "narrow", + label: "Communities Home Page", + }, + ], + related_applications: [ + { + platform: "windows", + url: "https://chat.rootbranch.co.za", + }, + ], + prefer_related_applications: false, + shortcuts: [ + { + name: "CoffeeChat", + url: "chat.rootbranch.co.za", + description: "Start chatting with your communities", + icons: [ + { + src: "manifest-icon-96.maskable.png", + purpose: "any", + sizes: "96x96", + type: "image/png", + }, + ], + }, + ], + display_override: ["fullscreen"], + }; +} diff --git a/webapp/app/page.tsx b/webapp/app/page.tsx new file mode 100644 index 0000000..959b4af --- /dev/null +++ b/webapp/app/page.tsx @@ -0,0 +1,56 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import { LoginFormAction } from "@/actions/auth/AuthActions"; +import { getRooms } from "@/actions/room/RoomActions"; +import RoomCard from "@/components/RoomCard"; +import { Handshake } from "lucide-react"; +import { cookies } from "next/headers"; +import Image from "next/image"; +import Link from "next/link"; +import { ViewTransition } from "react"; + +export default async function Home() { + + const cj = await cookies() + const session = cj.get(`ccsession`) + + const rooms = await getRooms() + return ( +
+
+
+ + +
+ {/* + */} + {!session && +
+ Login + + Register + +
+ } +
+
+ {rooms.map((room: { + title: string; + room: string; + image: any; + color: string; + }, i: number) => + + )} +
+ {/* {JSON.stringify(rooms)} */} +
+ ); +} diff --git a/webapp/app/register/error.tsx b/webapp/app/register/error.tsx new file mode 100644 index 0000000..3bcf160 --- /dev/null +++ b/webapp/app/register/error.tsx @@ -0,0 +1,10 @@ +'use client' +import ErrorDialog from '@/components/Dialogs/ErrorDialog' +import React from 'react' + +export default function error({ error }: { error: { message: string } }) { + return ( + + //
error : {JSON.stringify(JSON.parse(error.message).error)}
+ ) +} diff --git a/webapp/app/register/page.tsx b/webapp/app/register/page.tsx new file mode 100644 index 0000000..39b9861 --- /dev/null +++ b/webapp/app/register/page.tsx @@ -0,0 +1,57 @@ +import { RegisterFormAction } from '@/actions/auth/AuthActions' +import Link from 'next/link' +import React, { ViewTransition } from 'react' +// import { ViewTransition } from 'react' +export default function Register() { + return ( + +
+
+ +
+
Register Your Profile
+
+
+
+
+
+ + +
+ This will be used for your records but aliases are allowed while using chats +
+
+
+
+ + +
+ This will be used to login to the system and gain access to restricted groups +
+
+
+
+ + +
+
+
+
+
+ + + + +
+ {/* + +
+ */} + +
+ +
+ ) +} diff --git a/webapp/app/signup/page.tsx b/webapp/app/signup/page.tsx new file mode 100644 index 0000000..34ced2d --- /dev/null +++ b/webapp/app/signup/page.tsx @@ -0,0 +1,11 @@ +import { SignupForm } from "@/components/signup-form" + +export default function Page() { + return ( +
+
+ +
+
+ ) +} diff --git a/webapp/app/tesst/page.tsx b/webapp/app/tesst/page.tsx new file mode 100644 index 0000000..f0a5751 --- /dev/null +++ b/webapp/app/tesst/page.tsx @@ -0,0 +1,10 @@ +import MediaSoupWidget from '@/components/chat/MediaSoupWidget' +import WebRTCChat from '@/components/chat/WebRTCChatUsingPeer' +import React from 'react' + +export default function Tttest() { + return ( +
+ //
+ ) +} diff --git a/webapp/app/testb/page.tsx b/webapp/app/testb/page.tsx new file mode 100644 index 0000000..1dcf91a --- /dev/null +++ b/webapp/app/testb/page.tsx @@ -0,0 +1,16 @@ +import ChatNoServerWidget from '@/components/chat/ChatNoServerWidget' +import ChatWS from '@/components/chat/ChatWS' +import MediaSoupWidget from '@/components/chat/MediaSoupWidget' +import WebRTCChatUsingPeer from '@/components/chat/WebRTCChatUsingPeer' +import WebRTCChat from '@/components/chat/WebRTCChatUsingPeer' +import WebRTComponent from '@/components/chat/WebRTComponent' +import React from 'react' + +export default function Tttest() { + return ( + //
+ //
+ //
+
+ ) +} diff --git a/webapp/app/testc/page.tsx b/webapp/app/testc/page.tsx new file mode 100644 index 0000000..341cd90 --- /dev/null +++ b/webapp/app/testc/page.tsx @@ -0,0 +1,33 @@ +import Link from 'next/link' +import React from 'react' + +export default function Search() { + return ( +
+
+ + +
+
+ + + + +
+
+ ) +} + + +function RoomCard({ + title, + room, +}: { + title: string + room: string +}) { + return
{title}
+} \ No newline at end of file diff --git a/webapp/app/testd/page.tsx b/webapp/app/testd/page.tsx new file mode 100644 index 0000000..61d8511 --- /dev/null +++ b/webapp/app/testd/page.tsx @@ -0,0 +1,98 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +'use client' +import RoomCard from '@/components/RoomCard' +import { CallApi } from '@/helper/api/ApiConnector' +import Link from 'next/link' +import React, { useState } from 'react' + +export default function Search() { + const [details, setDetails] = useState<{ + id?: number; + image: any, + title: string, + room: string, + color: string + }>() + + const handleSave = async () => { + console.log(await CallApi(`/room`, 'POST', { id: 0, ...details,image: details?.image })) + } + + return ( +
+
+ +
+ +
+ + + + +
+
+ setDetails((d: any) => { + return { ...d, title: e.target.value } + })} + className='text-white w-full border-0 focus:p-2 transition-all focus:border-0' /> + + +
+ + { + const file = e.target.files![0] + if (file && file.type.startsWith('image/')) { + const reader = new FileReader(); // Create a new FileReader instance + + // Set up the onload event for the reader + reader.onload = function (e) { + // e.target.result contains the image data as a Base64 encoded URL (data URL) + console.log('Image Data URL:', e.target!.result); + + // You can now set the src of an image tag to this data URL to display it + setDetails((d: any) => { + return { ...d, image: e.target!.result } + }) + // imagePreview.src = e.target.result; + + // To get pixel data (ImageData object), you would use a canvas element + // (See "Getting Pixel Data" below) + }; + + // Read the image file as a Data URL + reader.readAsDataURL(file); + } else { + // imagePreview.src = '#'; // Clear preview if not an image + console.error('Please select a valid image file.'); + } + }} + className='text-white' type='file' name='image' /> +
+
+ + setDetails((d: any) => { + return { ...d, color: e.target.value } + })} + type='color' name='color' /> +
+ {details && } +
+
+
+
+ ) +} + diff --git a/webapp/app/teste/page.tsx b/webapp/app/teste/page.tsx new file mode 100644 index 0000000..be96340 --- /dev/null +++ b/webapp/app/teste/page.tsx @@ -0,0 +1,38 @@ +import Link from 'next/link' +import React from 'react' + +export default function Profile() { + return ( +
+
+ +
+ +
+ + + + +
+ +
+
+
+ ) +} + + +function RoomCard({ + title, + room, +}: { + title: string + room: string +}) { + return
{title}
+} \ No newline at end of file diff --git a/webapp/components.json b/webapp/components.json new file mode 100644 index 0000000..02e61e0 --- /dev/null +++ b/webapp/components.json @@ -0,0 +1,25 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "radix-nova", + "rsc": true, + "tsx": true, + "tailwind": { + "config": "", + "css": "app/globals.css", + "baseColor": "neutral", + "cssVariables": true, + "prefix": "" + }, + "iconLibrary": "lucide", + "rtl": false, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "menuColor": "default", + "menuAccent": "subtle", + "registries": {} +} diff --git a/webapp/components/Dialogs/ErrorDialog.tsx b/webapp/components/Dialogs/ErrorDialog.tsx new file mode 100644 index 0000000..1d17082 --- /dev/null +++ b/webapp/components/Dialogs/ErrorDialog.tsx @@ -0,0 +1,7 @@ +import React from 'react' + +export default function ErrorDialog({ error }: { error: string | Error }) { + return ( +
{error instanceof Error ? error.message : error }
+ ) +} diff --git a/webapp/components/RoomCard.tsx b/webapp/components/RoomCard.tsx new file mode 100644 index 0000000..f7b753f --- /dev/null +++ b/webapp/components/RoomCard.tsx @@ -0,0 +1,59 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import Link from "next/link" + +export default function RoomCard({ + title, + room, + image, + color, +}: { + title: string + room: string + image: any, + color: string +}) { + if(!image) return "No Image Available" + return + {image &&
+ +
{title}
+ + +
+
+
+ + } + + +} \ No newline at end of file diff --git a/webapp/components/chat/ChatBox.tsx b/webapp/components/chat/ChatBox.tsx new file mode 100644 index 0000000..35be861 --- /dev/null +++ b/webapp/components/chat/ChatBox.tsx @@ -0,0 +1,33 @@ +import React from 'react' +import { Input } from '../ui/input' +import { InputGroup, InputGroupAddon, InputGroupButton } from '../ui/input-group' +import { Textarea } from '../ui/textarea' + +export default function ChatBox() { + return ( +
+
+ CHAT MESSAGES +
Placeholder message
+
Placeholder message
+
+
+
+ +