diff --git a/admin/package-lock.json b/admin/package-lock.json index bd038a4..5bc6b6c 100644 --- a/admin/package-lock.json +++ b/admin/package-lock.json @@ -12,6 +12,7 @@ "@prisma/client": "^7.7.0", "@prisma/config": "^7.7.0", "@types/bcryptjs": "^2.4.6", + "afrohub": "file:..", "bcryptjs": "^3.0.3", "dotenv": "^17.4.1", "lucide-react": "^1.8.0", @@ -35,6 +36,42 @@ "typescript": "^5" } }, + "..": { + "name": "afrohub", + "version": "0.0.0", + "dependencies": { + "@google/genai": "^1.30.0", + "@prisma/adapter-pg": "^7.6.0", + "@prisma/client": "^7.6.0", + "@prisma/config": "^7.6.0", + "@tailwindcss/postcss": "^4.2.2", + "@tailwindcss/typography": "^0.5.19", + "@types/bcryptjs": "^2.4.6", + "@types/node": "^22.14.0", + "@types/pg": "^8.16.0", + "autoprefixer": "^10.4.27", + "bcryptjs": "^3.0.3", + "dotenv": "^17.3.1", + "lucide-react": "^0.554.0", + "next": "^16.1.6", + "pg": "^8.19.0", + "postcss": "^8.5.10", + "prisma": "^7.6.0", + "react": "^19.2.0", + "react-dom": "^19.2.0", + "react-hot-toast": "^2.6.0", + "recharts": "^3.8.1", + "tailwindcss": "^4.2.2", + "tsx": "^4.21.0", + "typescript": "~5.8.2" + }, + "devDependencies": { + "concurrently": "^9.2.1" + }, + "engines": { + "node": "24.x" + } + }, "node_modules/@alloc/quick-lru": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", @@ -2599,6 +2636,10 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/afrohub": { + "resolved": "..", + "link": true + }, "node_modules/ajv": { "version": "6.14.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", diff --git a/admin/package.json b/admin/package.json index be231bb..c88fc02 100644 --- a/admin/package.json +++ b/admin/package.json @@ -13,6 +13,7 @@ "@prisma/client": "^7.7.0", "@prisma/config": "^7.7.0", "@types/bcryptjs": "^2.4.6", + "afrohub": "file:..", "bcryptjs": "^3.0.3", "dotenv": "^17.4.1", "lucide-react": "^1.8.0", @@ -35,4 +36,4 @@ "tailwindcss": "^4", "typescript": "^5" } -} \ No newline at end of file +} diff --git a/admin/src/app/metrics/page.tsx b/admin/src/app/metrics/page.tsx index d09e1d0..cc8f1e6 100644 --- a/admin/src/app/metrics/page.tsx +++ b/admin/src/app/metrics/page.tsx @@ -136,6 +136,7 @@ async function getMetrics(range: string = 'week', from?: string, to?: string) { const recentIPs = await Promise.all( recentUniqueIPs.map(async (item) => { + if (!item.ip || !item._max.createdAt) return null; return await prisma.analyticsEvent.findFirst({ where: { ip: item.ip, diff --git a/app/register/page.tsx b/app/register/page.tsx index e92b7ad..c5cb771 100644 --- a/app/register/page.tsx +++ b/app/register/page.tsx @@ -4,6 +4,7 @@ import React, { useState } from 'react'; import { useRouter } from 'next/navigation'; import Link from 'next/link'; import { User, Mail, Lock, ArrowRight, CheckCircle, AlertCircle } from 'lucide-react'; +import { useUser } from '../../components/UserProvider'; const RegisterPage = () => { const { settings } = useUser(); diff --git a/next-env.d.ts b/next-env.d.ts index c4b7818..9edff1c 100644 --- a/next-env.d.ts +++ b/next-env.d.ts @@ -1,6 +1,6 @@ /// /// -import "./.next/dev/types/routes.d.ts"; +import "./.next/types/routes.d.ts"; // NOTE: This file should not be edited // see https://nextjs.org/docs/app/api-reference/config/typescript for more information.