Refactored locally

This commit is contained in:
krikorios
2025-06-08 22:26:43 +03:00
parent 8d26a47b46
commit 83ffdf860a
11 changed files with 89 additions and 43 deletions
+2
View File
@@ -0,0 +1,2 @@
DATABASE_URL="postgresql://postgres:postgres@localhost:5432/postgres"
NODE_ENV=development
+32 -30
View File
@@ -1,36 +1,38 @@
import { Switch, Route, Redirect } from "wouter"; import { Switch, Route, Redirect } from "wouter";
import { queryClient } from "./lib/queryClient"; import { queryClient } from "./lib/queryClient";
import { QueryClientProvider } from "@tanstack/react-query"; import { QueryClientProvider } from "@tanstack/react-query";
import { Toaster } from "@/components/ui/toaster"; import { Toaster } from "./components/ui/toaster";
import { TooltipProvider } from "@/components/ui/tooltip"; import { TooltipProvider } from "./components/ui/tooltip";
import { FloatingVoiceControl } from "@/components/voice/FloatingVoiceControl"; import { FloatingVoiceControl } from "./components/voice/FloatingVoiceControl";
import { AuthProvider, useAuth } from "@/context/AuthContext"; import { AuthProvider, useAuth } from "./context/AuthContext";
import { ThemeProvider } from "@/context/ThemeContext"; import { ThemeProvider } from "./context/ThemeContext";
import { AdaptiveThemeProvider } from "@/context/AdaptiveThemeContext"; import { AdaptiveThemeProvider } from "./context/AdaptiveThemeContext";
import { VoiceProvider } from "@/context/VoiceProvider"; import { VoiceProvider } from "./context/VoiceProvider";
import { NotificationProvider } from "@/context/NotificationProvider"; import { NotificationProvider } from "./context/NotificationProvider";
import { TourManagerProvider } from "@/components/onboarding/TourManager"; import { TourManagerProvider } from "./components/onboarding/TourManager";
import { MoodDetector } from "@/components/MoodDetector"; import { MoodDetector } from "./components/MoodDetector";
import { RTLProvider } from "@/components/RTLProvider"; import { RTLProvider } from "./components/RTLProvider";
import { Skeleton } from "@/components/ui/skeleton"; import { Skeleton } from "./components/ui/skeleton";
import LandingPage from "@/pages/LandingPage";
import DashboardPage from "@/pages/DashboardPage"; // Page imports
import LoginPage from "@/pages/LoginPage"; import LandingPage from "./pages/LandingPage";
import ProfessionalDirectory from "@/pages/ProfessionalDirectory"; import DashboardPage from "./pages/DashboardPage";
import OnboardingPage from "@/pages/OnboardingPage"; import LoginPage from "./pages/LoginPage";
import TasksPage from "@/pages/TasksPage"; import OnboardingPage from "./pages/OnboardingPage";
import FinancesPage from "@/pages/FinancesPage"; import TasksPage from "./pages/TasksPage";
import VoicePage from "@/pages/VoicePage"; import FinancesPage from "./pages/FinancesPage";
import AIPage from "@/pages/AIPage"; import VoicePage from "./pages/VoicePage";
import AnalyticsPage from "@/pages/AnalyticsPage"; import AIPage from "./pages/AIPage";
import SystemMonitoringPage from "@/pages/SystemMonitoringPage"; import AnalyticsPage from "./pages/AnalyticsPage";
import SettingsPage from "@/pages/SettingsPage"; import SystemMonitoringPage from "./pages/SystemMonitoringPage";
import FocusPage from "@/pages/FocusPage"; import SettingsPage from "./pages/SettingsPage";
import ThemePage from "@/pages/ThemePage"; import FocusPage from "./pages/FocusPage";
import BenchmarkPage from "@/pages/BenchmarkPage"; import ThemePage from "./pages/ThemePage";
import ChatPage from "@/pages/ChatPage"; import BenchmarkPage from "./pages/BenchmarkPage";
import ComfortHubPage from "@/pages/ComfortHubPage"; import ChatPage from "./pages/ChatPage";
import NotFound from "@/pages/not-found"; import ComfortHubPage from "./pages/ComfortHubPage";
import ProfessionalDirectory from "./pages/ProfessionalDirectory";
import NotFound from "./pages/not-found";
// Protected Route wrapper // Protected Route wrapper
function ProtectedRoute({ component: Component }: { component: React.ComponentType }) { function ProtectedRoute({ component: Component }: { component: React.ComponentType }) {
+1
View File
@@ -19,6 +19,7 @@
--secondary-foreground: 222.2 84% 4.9%; --secondary-foreground: 222.2 84% 4.9%;
--muted: 210 40% 96%; --muted: 210 40% 96%;
--muted-foreground: 215.4 16.3% 46.9%; --muted-foreground: 215.4 16.3% 46.9%;
--border: 214.3 31.8% 91.4%;
--accent: 210 40% 96%; --accent: 210 40% 96%;
--accent-foreground: 222.2 84% 4.9%; --accent-foreground: 222.2 84% 4.9%;
--destructive: 0 84.2% 60.2%; --destructive: 0 84.2% 60.2%;
+1 -1
View File
@@ -6,7 +6,7 @@ import { Badge } from '@/components/ui/badge';
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';
import { PerformanceBenchmark } from '@/components/PerformanceBenchmark'; import { PerformanceBenchmark } from '@/components/PerformanceBenchmark';
import { Header } from '@/components/layout/Header'; import { Header } from '@/components/layout/Header';
import { Sidebar } from '@/components/layout/Sidebar'; import Sidebar from '@/components/layout/Sidebar';
import { import {
Activity, Activity,
BarChart3, BarChart3,
+12
View File
@@ -0,0 +1,12 @@
import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
import path from "path";
export default defineConfig({
plugins: [react()],
resolve: {
alias: {
"@": path.resolve(__dirname, "src"),
},
},
});
+16 -3
View File
@@ -49,6 +49,7 @@
"compression": "^1.8.0", "compression": "^1.8.0",
"connect-pg-simple": "^10.0.0", "connect-pg-simple": "^10.0.0",
"date-fns": "^3.6.0", "date-fns": "^3.6.0",
"dotenv": "^16.5.0",
"drizzle-orm": "^0.39.1", "drizzle-orm": "^0.39.1",
"drizzle-zod": "^0.7.0", "drizzle-zod": "^0.7.0",
"embla-carousel-react": "^8.6.0", "embla-carousel-react": "^8.6.0",
@@ -4137,9 +4138,9 @@
} }
}, },
"node_modules/caniuse-lite": { "node_modules/caniuse-lite": {
"version": "1.0.30001677", "version": "1.0.30001721",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001677.tgz", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001721.tgz",
"integrity": "sha512-fmfjsOlJUpMWu+mAAtZZZHz7UEwsUxIIvu1TJfO1HqFQvB/B+ii0xr9B5HpbZY/mC4XZ8SvjHJqtAY6pDPQEog==", "integrity": "sha512-cOuvmUVtKrtEaoKiO0rSc29jcjwMwX5tOHDy4MgVFEWiUXj4uBMJkwI8MDySkgXidpMiHUcviogAvFi4pA2hDQ==",
"dev": true, "dev": true,
"funding": [ "funding": [
{ {
@@ -4787,6 +4788,18 @@
"csstype": "^3.0.2" "csstype": "^3.0.2"
} }
}, },
"node_modules/dotenv": {
"version": "16.5.0",
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz",
"integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==",
"license": "BSD-2-Clause",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://dotenvx.com"
}
},
"node_modules/drizzle-kit": { "node_modules/drizzle-kit": {
"version": "0.30.4", "version": "0.30.4",
"resolved": "https://registry.npmjs.org/drizzle-kit/-/drizzle-kit-0.30.4.tgz", "resolved": "https://registry.npmjs.org/drizzle-kit/-/drizzle-kit-0.30.4.tgz",
+1
View File
@@ -51,6 +51,7 @@
"compression": "^1.8.0", "compression": "^1.8.0",
"connect-pg-simple": "^10.0.0", "connect-pg-simple": "^10.0.0",
"date-fns": "^3.6.0", "date-fns": "^3.6.0",
"dotenv": "^16.5.0",
"drizzle-orm": "^0.39.1", "drizzle-orm": "^0.39.1",
"drizzle-zod": "^0.7.0", "drizzle-zod": "^0.7.0",
"embla-carousel-react": "^8.6.0", "embla-carousel-react": "^8.6.0",
+1
View File
@@ -1,3 +1,4 @@
import 'dotenv/config';
import express, { type Request, Response, NextFunction } from "express"; import express, { type Request, Response, NextFunction } from "express";
import { registerRoutes } from "./routes"; import { registerRoutes } from "./routes";
import { taskScheduler } from "./services/taskScheduler"; import { taskScheduler } from "./services/taskScheduler";
+5 -2
View File
@@ -1,11 +1,14 @@
import express, { type Express } from "express"; import express, { type Express } from "express";
import fs from "fs"; import fs from "fs";
import path from "path"; import path from "path";
import { fileURLToPath } from 'node:url';
import { createServer as createViteServer, createLogger } from "vite"; import { createServer as createViteServer, createLogger } from "vite";
import { type Server } from "http"; import { type Server } from "http";
import viteConfig from "../vite.config"; import viteConfig from "../vite.config";
import { nanoid } from "nanoid"; import { nanoid } from "nanoid";
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const viteLogger = createLogger(); const viteLogger = createLogger();
export function log(message: string, source = "express") { export function log(message: string, source = "express") {
@@ -46,7 +49,7 @@ export async function setupVite(app: Express, server: Server) {
try { try {
const clientTemplate = path.resolve( const clientTemplate = path.resolve(
import.meta.dirname, __dirname,
"..", "..",
"client", "client",
"index.html", "index.html",
@@ -68,7 +71,7 @@ export async function setupVite(app: Express, server: Server) {
} }
export function serveStatic(app: Express) { export function serveStatic(app: Express) {
const distPath = path.resolve(import.meta.dirname, "public"); const distPath = path.resolve(__dirname, "public");
if (!fs.existsSync(distPath)) { if (!fs.existsSync(distPath)) {
throw new Error( throw new Error(
+10 -2
View File
@@ -2,7 +2,12 @@ import type { Config } from "tailwindcss";
export default { export default {
darkMode: ["class"], darkMode: ["class"],
content: ["./client/index.html", "./client/src/**/*.{js,jsx,ts,tsx}"], content: [
"./index.html",
"./src/**/*.{js,ts,jsx,tsx}",
"./client/index.html",
"./client/src/**/*.{js,ts,jsx,tsx}"
],
theme: { theme: {
extend: { extend: {
borderRadius: { borderRadius: {
@@ -10,9 +15,13 @@ export default {
md: "calc(var(--radius) - 2px)", md: "calc(var(--radius) - 2px)",
sm: "calc(var(--radius) - 4px)", sm: "calc(var(--radius) - 4px)",
}, },
borderColor: {
DEFAULT: "hsl(var(--border))",
},
colors: { colors: {
background: "hsl(var(--background))", background: "hsl(var(--background))",
foreground: "hsl(var(--foreground))", foreground: "hsl(var(--foreground))",
border: "hsl(var(--border))",
card: { card: {
DEFAULT: "hsl(var(--card))", DEFAULT: "hsl(var(--card))",
foreground: "hsl(var(--card-foreground))", foreground: "hsl(var(--card-foreground))",
@@ -41,7 +50,6 @@ export default {
DEFAULT: "hsl(var(--destructive))", DEFAULT: "hsl(var(--destructive))",
foreground: "hsl(var(--destructive-foreground))", foreground: "hsl(var(--destructive-foreground))",
}, },
border: "hsl(var(--border))",
input: "hsl(var(--input))", input: "hsl(var(--input))",
ring: "hsl(var(--ring))", ring: "hsl(var(--ring))",
chart: { chart: {
+8 -5
View File
@@ -1,8 +1,11 @@
import { defineConfig } from "vite"; import { defineConfig } from "vite";
import react from "@vitejs/plugin-react"; import react from "@vitejs/plugin-react";
import path from "path"; import path from "path";
import { fileURLToPath } from 'node:url';
import runtimeErrorOverlay from "@replit/vite-plugin-runtime-error-modal"; import runtimeErrorOverlay from "@replit/vite-plugin-runtime-error-modal";
const __dirname = path.dirname(fileURLToPath(import.meta.url));
export default defineConfig({ export default defineConfig({
plugins: [ plugins: [
react(), react(),
@@ -18,14 +21,14 @@ export default defineConfig({
], ],
resolve: { resolve: {
alias: { alias: {
"@": path.resolve(import.meta.dirname, "client", "src"), "@": path.resolve(__dirname, "client", "src"),
"@shared": path.resolve(import.meta.dirname, "shared"), "@shared": path.resolve(__dirname, "shared"),
"@assets": path.resolve(import.meta.dirname, "attached_assets"), "@assets": path.resolve(__dirname, "attached_assets"),
}, },
}, },
root: path.resolve(import.meta.dirname, "client"), root: path.resolve(__dirname, "client"),
build: { build: {
outDir: path.resolve(import.meta.dirname, "dist/public"), outDir: path.resolve(__dirname, "dist/public"),
emptyOutDir: true, emptyOutDir: true,
}, },
}); });