diff --git a/public/project-images/CoreStack(1).png b/public/project-images/CoreStack(1).png new file mode 100644 index 0000000..afbaf74 Binary files /dev/null and b/public/project-images/CoreStack(1).png differ diff --git a/public/project-images/CoreStack.png b/public/project-images/CoreStack.png new file mode 100644 index 0000000..802e78d Binary files /dev/null and b/public/project-images/CoreStack.png differ diff --git a/public/project-images/Tailor.jpg b/public/project-images/Tailor.jpg new file mode 100644 index 0000000..add9c41 Binary files /dev/null and b/public/project-images/Tailor.jpg differ diff --git a/src/components/MissingEnvScreen.tsx b/src/components/MissingEnvScreen.tsx new file mode 100644 index 0000000..c3fe4a7 --- /dev/null +++ b/src/components/MissingEnvScreen.tsx @@ -0,0 +1,29 @@ +const MissingEnvScreen = () => { + return ( +
+

+ Setup required +

+ +

+ Supabase environment variables are missing +

+ +

+ Create a .env file in the + project root with{" "} + VITE_SUPABASE_URL and{" "} + VITE_SUPABASE_ANON_KEY, then + restart npm run dev. +

+ +

+ See .env.example for the expected format. Legacy + MongoDB/Express keys in .env are not used by this + frontend. +

+
+ ); +}; + +export default MissingEnvScreen; \ No newline at end of file diff --git a/src/constants/projects.ts b/src/constants/projects.ts index 1b7e3d3..232d351 100644 --- a/src/constants/projects.ts +++ b/src/constants/projects.ts @@ -19,7 +19,7 @@ export const portfolioProjects: readonly PortfolioProject[] = [ shortDescription: "An AI-powered Conversion Rate Optimization (CRO) platform providing intent-aware analysis, actionable reports, and website conversion insights.", category: "Analytics & Growth", - tags: ["React", "TypeScript", "Tailwind", "Analytics"], + tags: ["React", "TypeScript", "Tailwind", "Analytics","Reports", "CRO"], status: "live", accentGradient: "bg-gradient-to-r from-violet-600 via-purple-600 to-indigo-600", visual: "📈", @@ -27,6 +27,53 @@ export const portfolioProjects: readonly PortfolioProject[] = [ imageAlt: "Convertly Dashboard", directLink: "https://convertly.hmcoding.com/", badgeLabelOverride: "Live Product", + + }, + { + slug: "corestack", + title: "CoreStack", + shortDescription: + "CoreStack is a centralized practice management platform for CA firms, streamlining clients, tasks, billing, documents, and team workflows with role-based visibility.", + category: "Management", + tags: ["React", "TypeScript", "Tailwind", "CA Firm", "Management", "Platform"], + status: "live", + accentGradient: "bg-gradient-to-r from-blue-500 via-indigo-500 to-violet-600", + visual: "🏢", + imageSrc: "/project-images/CoreStack(1).png", + imageAlt: "CoreStack Dashboard", + directLink: "https://corestack.hmcoding.com/", + badgeLabelOverride: "Live Project", + }, + { + slug: "tailor", + title: "Tailor", + shortDescription: + "Tailor Management System is a full-stack web app that centralizes customer profiles, body measurements, garment orders, and delivery schedules for tailoring businesses.", + category: "Management", + tags: ["React", "TypeScript", "Tailwind", "Tailoring", "Orders", "Management"], + status: "live", + accentGradient: "bg-gradient-to-r from-pink-500 via-rose-500 to-red-600", + visual: "✂️", + imageSrc: "/project-images/Tailor.jpg", + imageAlt: "Tailor Dashboard", + directLink: "https://tms-frontend-x0we.onrender.com/", + badgeLabelOverride: "Live Project" + + }, + { + slug: "restaurant-pos", + title: "Restaurant POS System", + shortDescription: + "Fast counter workflow: orders, kitchen routing, tabs, and shift reporting in one calm, touch-friendly surface.", + category: "Point of sale", + tags: ["React", "Real-time", "Payments", "Kitchen display"], + status: "live", + accentGradient: "bg-gradient-to-r from-orange-500 via-rose-500 to-amber-600", + visual: "🍽️", + imageSrc: "/project-images/restaurant.png", + imageAlt: "Restaurant POS System Dashboard", + directLink: "https://dishdash.hmcoding.com/", + badgeLabelOverride: "Live Project" }, { slug: "gym-management", @@ -57,7 +104,6 @@ export const portfolioProjects: readonly PortfolioProject[] = [ imageAlt: "Client Reminder CRM Dashboard", directLink: "https://remindflow.hmcoding.com/", badgeLabelOverride: "Live Project", - }, { slug: "inventory-system", @@ -71,6 +117,7 @@ export const portfolioProjects: readonly PortfolioProject[] = [ visual: "📦", imageSrc: "/project-images/inventory.jpg", imageAlt: "Inventory Management Dashboard", + badgeLabelOverride: "Live Demo", }, { slug: "real-estate-crm", @@ -84,21 +131,7 @@ export const portfolioProjects: readonly PortfolioProject[] = [ visual: "🏠", imageSrc: "/project-images/real-state.png", imageAlt: "Real Estate CRM Dashboard", - }, - { - - slug: "restaurant-pos", - title: "Restaurant POS System", - shortDescription: - "Fast counter workflow: orders, kitchen routing, tabs, and shift reporting in one calm, touch-friendly surface.", - category: "Point of sale", - tags: ["React", "Real-time", "Payments", "Kitchen display"], - status: "live", - accentGradient: "bg-gradient-to-r from-orange-500 via-rose-500 to-amber-600", - visual: "🍽️", - imageSrc: "/project-images/restaurant.png", - imageAlt: "Restaurant POS System Dashboard", - + badgeLabelOverride: "Live Demo", }, ] as const; @@ -114,7 +147,7 @@ export function isKnownPortfolioSlug(slug: string): boolean { /** Homepage spotlight — order defines card order (must exist on `portfolioProjects`). */ -export const homeFeaturedProjectSlugs = ["convertly", "gym-management", "client-reminder-crm"] as const; +export const homeFeaturedProjectSlugs = ["convertly", "corestack", "tailor"] as const; export function getHomeFeaturedProjects(): PortfolioProject[] { diff --git a/src/main.tsx b/src/main.tsx index 9bf5930..7c445cc 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -6,25 +6,7 @@ import "./index.css"; import { GlobalLoaderProvider } from "./context/GlobalLoaderContext"; import { ErrorBoundary } from "./components/ErrorBoundary"; import { isSupabaseConfigured } from "./lib/supabase"; - -function MissingEnvScreen() { - return ( -
-

Setup required

-

Supabase environment variables are missing

-

- Create a .env file in the project root with{" "} - VITE_SUPABASE_URL and{" "} - VITE_SUPABASE_ANON_KEY, then restart{" "} - npm run dev. -

-

- See .env.example for the expected format. Legacy MongoDB/Express keys in{" "} - .env are not used by this frontend. -

-
- ); -} +import MissingEnvScreen from "./components/MissingEnvScreen"; const root = document.getElementById("root");