Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 0 additions & 11 deletions src/data/case-studies.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ export const caseStudies: CaseStudy[] = [
category: "Compliance Marketplace",
visual: "portal",
image: withBasePath("/images/projects/safework-global.jpg"),
status: "Live hiring in 50+ countries",
client: "SafeWork Global",
liveUrl: "https://safeworkglobal.com",
year: "2025",
Expand Down Expand Up @@ -60,7 +59,6 @@ export const caseStudies: CaseStudy[] = [
category: "B2B Connector · Integration Plugin",
visual: "portal",
image: withBasePath("/images/projects/whatsapp-profile-sync.png"),
status: "Self-hosted & Active",
year: "2026",
summary:
"A self-hosted, config-driven B2B integration plugin (SyncFlow) that turns structured WhatsApp messages and attachments into database profile upserts. Connect with me for your organization-level setup.",
Expand Down Expand Up @@ -110,7 +108,6 @@ export const caseStudies: CaseStudy[] = [
category: "Founder Product · AI Resume Optimization",
visual: "ai",
image: withBasePath("/images/projects/jobfit-ai.png"),
status: "Active SaaS workspace",
year: "2026",
summary:
"An AI-powered resume optimization workspace (JobFit AI) that reviews a candidate's existing resume against a target Job Description (JD) to identify missing skills, highlight experience gaps, and suggest keyword improvements.",
Expand Down Expand Up @@ -158,7 +155,6 @@ export const caseStudies: CaseStudy[] = [
category: "Founder Product · Invoicing SaaS",
visual: "design",
image: withBasePath("/images/projects/vyaparpost.jpg"),
status: "Uptime: 99.9% in Production",
liveUrl: "https://vyaparpost.in",
year: "2025",
summary:
Expand Down Expand Up @@ -209,7 +205,6 @@ export const caseStudies: CaseStudy[] = [
category: "Search Portal · Infrastructure B2B",
visual: "portal",
image: withBasePath("/images/projects/vendor-infra.jpg"),
status: "Active B2B search engine",
client: "Vendor Infra",
liveUrl: "https://vendorinfra.com",
year: "2024–2025",
Expand Down Expand Up @@ -268,7 +263,6 @@ export const caseStudies: CaseStudy[] = [
category: "IoT · Multi-client Dashboard",
visual: "iot",
image: withBasePath("/images/projects/solar-monitoring.png"),
status: "Active live telemetry",
year: "2020–Present",
summary:
"Multi-client IoT dashboard for solar monitoring — real-time graphs, reusable chart systems, and performance-tuned visualization for operators who need clarity at a glance.",
Expand Down Expand Up @@ -318,7 +312,6 @@ export const caseStudies: CaseStudy[] = [
category: "Creative Tooling",
visual: "design",
image: withBasePath("/images/projects/graphic-design-platform.png"),
status: "Active editor workspace",
year: "2021–Present",
summary:
"A Canva-like design product with SVG editing, brand kits, templates, zoomable canvas, and separate portals for admins and designers.",
Expand Down Expand Up @@ -375,7 +368,6 @@ export const caseStudies: CaseStudy[] = [
category: "B2B · Web & Mobile",
visual: "commerce",
image: withBasePath("/images/projects/digital-invoice.png"),
status: "Active invoicing system",
year: "2021–Present",
summary:
"End-to-end invoicing and catalog product across web and mobile — with JWT sessions, Redis-backed state, and scalable frontend architecture.",
Expand Down Expand Up @@ -432,7 +424,6 @@ export const caseStudies: CaseStudy[] = [
category: "Community Platform",
visual: "mobile",
image: withBasePath("/images/projects/vipra-community.png"),
status: "Active community hub",
year: "2022–Present",
summary:
"Community platform with matrimony, business directory, and jobs — used by real people for real life outcomes.",
Expand Down Expand Up @@ -479,7 +470,6 @@ export const caseStudies: CaseStudy[] = [
category: "IoT · Device Experience",
visual: "iot",
image: withBasePath("/images/projects/nstream-connect.png"),
status: "Active on transit hardware",
year: "2019–2020",
summary:
"IoT entertainment device experience for travelers — production frontend, media playback, and tight collaboration with embedded hardware.",
Expand Down Expand Up @@ -529,7 +519,6 @@ export const caseStudies: CaseStudy[] = [
category: "Embedded · Monitoring",
visual: "iot",
image: withBasePath("/images/projects/raspberry-pi-monitoring.png"),
status: "Active field video capture",
year: "2019–2020",
summary:
"Camera-based monitoring on Raspberry Pi Zero — MotionEye integration, camera modules, and Raspberry Pi OS customization for a reliable field device.",
Expand Down
30 changes: 4 additions & 26 deletions src/features/work/work-page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -102,19 +102,8 @@ export function BentoCard({ study, className, isWide = false, isFull = false }:
isFull ? "lg:w-2/5" : "lg:w-1/2"
)}>
<div>
<div className="flex flex-wrap items-center justify-between gap-2">
<div className="flex items-center gap-2">
<CaseStudyBadge study={study} />
{study.status && (
<span className="inline-flex items-center gap-1 rounded-full bg-emerald-500/10 px-2 py-0.5 text-[9px] font-semibold text-emerald-600 dark:text-emerald-400 border border-emerald-500/15">
<span className="relative flex h-1 w-1">
<span className="animate-ping absolute inline-flex h-full w-full rounded-full bg-emerald-400 opacity-75"></span>
<span className="relative inline-flex rounded-full h-1 w-1 bg-emerald-500"></span>
</span>
{study.status}
</span>
)}
</div>
<div className="flex items-center justify-between gap-2">
<CaseStudyBadge study={study} />
{study.year && (
<span className="text-xs text-muted-foreground font-medium">{study.year}</span>
)}
Expand Down Expand Up @@ -203,19 +192,8 @@ export function BentoCard({ study, className, isWide = false, isFull = false }:

<div className="p-6 flex-1 flex flex-col justify-between">
<div>
<div className="flex flex-wrap items-center justify-between gap-2">
<div className="flex items-center gap-2">
<CaseStudyBadge study={study} />
{study.status && (
<span className="inline-flex items-center gap-1 rounded-full bg-emerald-500/10 px-2 py-0.5 text-[9px] font-semibold text-emerald-600 dark:text-emerald-400 border border-emerald-500/15">
<span className="relative flex h-1 w-1">
<span className="animate-ping absolute inline-flex h-full w-full rounded-full bg-emerald-400 opacity-75"></span>
<span className="relative inline-flex rounded-full h-1 w-1 bg-emerald-500"></span>
</span>
{study.status}
</span>
)}
</div>
<div className="flex items-center justify-between gap-2">
<CaseStudyBadge study={study} />
{study.year && (
<span className="text-xs text-muted-foreground font-medium">{study.year}</span>
)}
Expand Down
1 change: 0 additions & 1 deletion src/types/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ export type CaseStudy = {
/** client = built for a client; founder = own product/idea */
engagement?: "client" | "founder" | "employment";
year?: string;
status?: string;
};

export type ExperienceRole = {
Expand Down
Loading