Refactored locally
This commit is contained in:
@@ -0,0 +1,2 @@
|
|||||||
|
DATABASE_URL="postgresql://postgres:postgres@localhost:5432/postgres"
|
||||||
|
NODE_ENV=development
|
||||||
+32
-30
@@ -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 }) {
|
||||||
|
|||||||
@@ -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%;
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
Generated
+16
-3
@@ -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",
|
||||||
|
|||||||
@@ -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,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
@@ -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
@@ -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
@@ -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,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user