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");