content: shorten project cards and expand case studies

This commit is contained in:
2026-09-09 23:51:13 +03:30
parent 5b507d7aef
commit dd3be9f5de

View File

@@ -129,9 +129,9 @@ const projectDefinitions: ProjectDefinition[] = [
en: {
title: 'Qlockify',
date: 'FEB 2026 - PRESENT',
description: 'Built a production-ready time tracking platform for teams and freelancers to manage workspaces, projects, billable hours, and reports in one place. Users can track their work time, organize it by project, manage access inside each workspace, generate reports for admins and clients, and export insights.',
description: 'A single workspace for recording work, organizing billable time, managing access, and turning tracked activity into useful reports.',
caseStudy: {
introduction: 'A single workspace for recording work, organizing billable time, managing access, and turning tracked activity into useful reports.',
introduction: 'Built a production-ready time tracking platform for teams and freelancers to manage workspaces, projects, billable hours, and reports in one place. Users can track their work time, organize it by project, manage access inside each workspace, generate reports for admins and clients, and export insights.',
role: 'Full-stack developer and UI/UX designer',
targetUsers: 'Teams, freelancers, workspace administrators, and clients',
status: 'In progress',
@@ -158,9 +158,9 @@ const projectDefinitions: ProjectDefinition[] = [
fa: {
title: 'Qlockify',
date: 'بهمن ۱۴۰۴ تا امروز',
description: 'یک پلتفرم آماده استفاده در محیط واقعی برای ثبت زمان تیم‌ها و فریلنسرها ساختم تا فضاهای کاری، پروژه‌ها، ساعت‌های قابل‌صورتحساب و گزارش‌ها را یک‌جا مدیریت کنند. کاربران می‌توانند زمان کارشان را ثبت و بر اساس پروژه دسته‌بندی کنند، دسترسی‌های هر فضای کاری را مدیریت کنند، برای مدیران و مشتریان گزارش بسازند و خروجی بگیرند.',
description: 'یک فضای کاری یکپارچه برای ثبت فعالیت، سامان‌دهی زمان قابل‌صورتحساب، مدیریت دسترسی و تبدیل داده‌های زمانی به گزارش‌های کاربردی.',
caseStudy: {
introduction: 'یک فضای کاری یکپارچه برای ثبت فعالیت، سامان‌دهی زمان قابل‌صورتحساب، مدیریت دسترسی و تبدیل داده‌های زمانی به گزارش‌های کاربردی.',
introduction: 'یک پلتفرم آماده استفاده در محیط واقعی برای ثبت زمان تیم‌ها و فریلنسرها ساختم تا فضاهای کاری، پروژه‌ها، ساعت‌های قابل‌صورتحساب و گزارش‌ها را یک‌جا مدیریت کنند. کاربران می‌توانند زمان کارشان را ثبت و بر اساس پروژه دسته‌بندی کنند، دسترسی‌های هر فضای کاری را مدیریت کنند، برای مدیران و مشتریان گزارش بسازند و خروجی بگیرند.',
role: 'توسعه‌دهنده Full-stack و طراح UI/UX',
targetUsers: 'تیم‌ها، فریلنسرها، مدیران فضای کاری و مشتریان',
status: 'در حال توسعه',
@@ -218,9 +218,9 @@ const projectDefinitions: ProjectDefinition[] = [
en: {
title: 'Guilan ACE',
date: 'JUL 2025 - PRESENT',
description: 'Developed the Scientific Association of Computer Engineering website for event management and article publishing, helping members organize activities and users register for events, read blog posts, and share ideas through comments.',
description: 'A shared digital home for the association’s events, articles, registrations, and community discussion.',
caseStudy: {
introduction: 'A shared digital home for the association’s events, articles, registrations, and community discussion.',
introduction: 'Developed the Scientific Association of Computer Engineering website for event management and article publishing, helping members organize activities and users register for events, read blog posts, and share ideas through comments.',
role: 'Full-stack developer',
targetUsers: 'Association members, students, event attendees, and readers',
status: 'In progress',
@@ -239,9 +239,9 @@ const projectDefinitions: ProjectDefinition[] = [
fa: {
title: 'انجمن علمی مهندسی کامپیوتر گیلان',
date: 'تیر ۱۴۰۴ تا امروز',
description: 'وب‌سایت انجمن علمی مهندسی کامپیوتر را برای مدیریت رویدادها و انتشار مقاله توسعه دادم. اعضا می‌توانند فعالیت‌ها را سامان دهند و کاربران هم برای رویدادها ثبت‌نام کنند، نوشته‌های وبلاگ را بخوانند و نظرشان را در بخش دیدگاه‌ها به اشتراک بگذارند.',
description: 'یک خانه دیجیتال مشترک برای رویدادها، مقاله‌ها، ثبت‌نام و گفت‌وگوی اعضای انجمن.',
caseStudy: {
introduction: 'یک خانه دیجیتال مشترک برای رویدادها، مقاله‌ها، ثبت‌نام و گفت‌وگوی اعضای انجمن.',
introduction: 'وب‌سایت انجمن علمی مهندسی کامپیوتر را برای مدیریت رویدادها و انتشار مقاله توسعه دادم. اعضا می‌توانند فعالیت‌ها را سامان دهند و کاربران هم برای رویدادها ثبت‌نام کنند، نوشته‌های وبلاگ را بخوانند و نظرشان را در بخش دیدگاه‌ها به اشتراک بگذارند.',
role: 'توسعه‌دهنده Full-stack',
targetUsers: 'اعضای انجمن، دانشجویان، شرکت‌کنندگان رویداد و خوانندگان',
status: 'در حال توسعه',
@@ -284,9 +284,9 @@ const projectDefinitions: ProjectDefinition[] = [
en: {
title: 'Zarinpal Analytic Dashboard',
date: 'AUG 2026',
description: "AI-based dashboard for analytics insight on merchant's transactions in their different terminals and suggesting profitable campaigns to hold in special occasions based on their historical transactions and upcoming events in Persian calendar and international events that affect Iranian markets.",
description: 'An analytics dashboard that connects multi-terminal transaction history with timely campaign suggestions.',
caseStudy: {
introduction: 'An analytics dashboard that connects multi-terminal transaction history with timely campaign suggestions.',
introduction: "AI-based dashboard for analytics insight on merchant's transactions in their different terminals and suggesting profitable campaigns to hold in special occasions based on their historical transactions and upcoming events in Persian calendar and international events that affect Iranian markets.",
role: 'Full-stack developer',
targetUsers: 'Merchants operating one or more payment terminals',
status: 'Completed',
@@ -305,9 +305,9 @@ const projectDefinitions: ProjectDefinition[] = [
fa: {
title: 'داشبورد تحلیلی زرین‌پال',
date: 'مرداد ۱۴۰۵',
description: 'داشبوردی مبتنی بر هوش مصنوعی برای تحلیل تراکنش‌های پذیرنده در پایانه‌های مختلف و پیشنهاد کمپین‌های سودآور برای مناسبت‌ها ساختم. پیشنهادها بر اساس سابقه تراکنش‌ها، رویدادهای پیش رو در تقویم فارسی و رویدادهای بین‌المللی اثرگذار بر بازار ایران تهیه می‌شوند.',
description: 'داشبوردی تحلیلی که سابقه تراکنش در پایانه‌های مختلف را به پیشنهادهای به‌موقع برای کمپین‌ها متصل می‌کند.',
caseStudy: {
introduction: 'داشبوردی تحلیلی که سابقه تراکنش در پایانه‌های مختلف را به پیشنهادهای به‌موقع برای کمپین‌ها متصل می‌کند.',
introduction: 'داشبوردی مبتنی بر هوش مصنوعی برای تحلیل تراکنش‌های پذیرنده در پایانه‌های مختلف و پیشنهاد کمپین‌های سودآور برای مناسبت‌ها ساختم. پیشنهادها بر اساس سابقه تراکنش‌ها، رویدادهای پیش رو در تقویم فارسی و رویدادهای بین‌المللی اثرگذار بر بازار ایران تهیه می‌شوند.',
role: 'توسعه‌دهنده Full-stack',
targetUsers: 'پذیرندگانی که یک یا چند پایانه پرداخت را مدیریت می‌کنند',
status: 'تکمیل‌شده',
@@ -343,9 +343,9 @@ const projectDefinitions: ProjectDefinition[] = [
en: {
title: 'Iran Implant',
date: 'NOV 2025 - MAR 2026',
description: 'Developed the backend of Iran Implant, an internal management system for a specialized dental clinic, enabling staff to manage appointments, treatment rooms, payments, prescriptions, and laboratory orders through a centralized platform.',
description: 'A centralized internal system for coordinating the operational workflows of a specialized dental clinic.',
caseStudy: {
introduction: 'A centralized internal system for coordinating the operational workflows of a specialized dental clinic.',
introduction: 'Developed the backend of Iran Implant, an internal management system for a specialized dental clinic, enabling staff to manage appointments, treatment rooms, payments, prescriptions, and laboratory orders through a centralized platform.',
role: 'Backend developer',
targetUsers: 'Dental clinic staff',
status: 'Completed',
@@ -363,9 +363,9 @@ const projectDefinitions: ProjectDefinition[] = [
fa: {
title: 'ایران ایمپلنت',
date: 'آبان ۱۴۰۴ تا اسفند ۱۴۰۴',
description: 'بخش سمت سرور سامانه مدیریت داخلی ایران ایمپلنت را برای یک کلینیک تخصصی دندان‌پزشکی توسعه دادم. کارکنان از طریق یک سامانه متمرکز، نوبت‌ها، اتاق‌های درمان، پرداخت‌ها، نسخه‌ها و سفارش‌های آزمایشگاه را مدیریت می‌کنند.',
description: 'یک سامانه داخلی متمرکز برای هماهنگی فرایندهای اجرایی کلینیک تخصصی دندان‌پزشکی.',
caseStudy: {
introduction: 'یک سامانه داخلی متمرکز برای هماهنگی فرایندهای اجرایی کلینیک تخصصی دندان‌پزشکی.',
introduction: 'بخش سمت سرور سامانه مدیریت داخلی ایران ایمپلنت را برای یک کلینیک تخصصی دندان‌پزشکی توسعه دادم. کارکنان از طریق یک سامانه متمرکز، نوبت‌ها، اتاق‌های درمان، پرداخت‌ها، نسخه‌ها و سفارش‌های آزمایشگاه را مدیریت می‌کنند.',
role: 'توسعه‌دهنده Backend',
targetUsers: 'کارکنان کلینیک دندان‌پزشکی',
status: 'تکمیل‌شده',
@@ -406,9 +406,9 @@ const projectDefinitions: ProjectDefinition[] = [
en: {
title: 'Interanet Solutions',
date: 'MAR - JUN 2026',
description: 'Developed a collection of self-hosted infrastructure and deployment solutions for environments with restricted international Internet access, including automated server bootstrap scripts and deployments for tools such as GitLab/Gitea (GitHub), Penpot (Figma), and Jitsi (Google Meet).',
description: 'Self-hosted infrastructure and automated deployment paths for teams working with restricted international Internet access.',
caseStudy: {
introduction: 'Self-hosted infrastructure and automated deployment paths for teams working with restricted international Internet access.',
introduction: 'Developed a collection of self-hosted infrastructure and deployment solutions for environments with restricted international Internet access, including automated server bootstrap scripts and deployments for tools such as GitLab/Gitea (GitHub), Penpot (Figma), and Jitsi (Google Meet).',
role: 'DevOps developer',
targetUsers: 'Organizations and technical teams operating restricted-network environments',
status: 'Completed',
@@ -427,9 +427,9 @@ const projectDefinitions: ProjectDefinition[] = [
fa: {
title: 'راهکارهای اینترانت',
date: 'اسفند ۱۴۰۴ تا خرداد ۱۴۰۵',
description: 'مجموعه‌ای از راهکارهای زیرساخت و استقرار خودمیزبان برای محیط‌هایی با دسترسی محدود به اینترنت بین‌المللی توسعه دادم. این مجموعه شامل اسکریپت‌های خودکار راه‌اندازی اولیه سرور و استقرار ابزارهایی مانند GitLab و Gitea به‌جای GitHub،‏ Penpot به‌جای Figma و Jitsi به‌جای Google Meet است.',
description: 'زیرساخت خودمیزبان و مسیرهای استقرار خودکار برای تیم‌هایی که با محدودیت اینترنت بین‌المللی کار می‌کنند.',
caseStudy: {
introduction: 'زیرساخت خودمیزبان و مسیرهای استقرار خودکار برای تیم‌هایی که با محدودیت اینترنت بین‌المللی کار می‌کنند.',
introduction: 'مجموعه‌ای از راهکارهای زیرساخت و استقرار خودمیزبان برای محیط‌هایی با دسترسی محدود به اینترنت بین‌المللی توسعه دادم. این مجموعه شامل اسکریپت‌های خودکار راه‌اندازی اولیه سرور و استقرار ابزارهایی مانند GitLab و Gitea به‌جای GitHub،‏ Penpot به‌جای Figma و Jitsi به‌جای Google Meet است.',
role: 'توسعه‌دهنده DevOps',
targetUsers: 'سازمان‌ها و تیم‌های فنی فعال در شبکه‌های محدود',
status: 'تکمیل‌شده',
@@ -464,9 +464,9 @@ const projectDefinitions: ProjectDefinition[] = [
en: {
title: 'PostgreSQL Job Queue',
date: 'JUN 2026',
description: 'Built a lightweight background job system for running slow or unreliable tasks outside the main request flow. The project focuses on making job execution safe and predictable: multiple workers can pick up work at the same time without blocking each other, failed jobs are retried safely, and work remains recoverable.',
description: 'A lightweight background job system built around safe concurrency, retries, and recoverability.',
caseStudy: {
introduction: 'A lightweight background job system built around safe concurrency, retries, and recoverability.',
introduction: 'Built a lightweight background job system for running slow or unreliable tasks outside the main request flow. The project focuses on making job execution safe and predictable: multiple workers can pick up work at the same time without blocking each other, failed jobs are retried safely, and work remains recoverable.',
role: 'Backend developer',
targetUsers: 'Application developers running slow or unreliable work outside request handling',
status: 'Completed',
@@ -485,9 +485,9 @@ const projectDefinitions: ProjectDefinition[] = [
fa: {
title: 'صف کار PostgreSQL',
date: 'خرداد ۱۴۰۵',
description: 'یک سیستم سبک برای اجرای کارهای پس‌زمینه ساختم تا کارهای کند یا ناپایدار بیرون از مسیر اصلی درخواست اجرا شوند. چند پردازش‌گر می‌توانند هم‌زمان و بدون مسدودکردن یکدیگر کار بردارند، کارهای ناموفق با سازوکاری امن دوباره اجرا می‌شوند و در صورت وقفه قابل‌بازیابی می‌مانند.',
description: 'یک سیستم سبک برای اجرای کارهای پس‌زمینه با تمرکز بر هم‌زمانی امن، تلاش مجدد و بازیابی.',
caseStudy: {
introduction: 'یک سیستم سبک برای اجرای کارهای پس‌زمینه با تمرکز بر هم‌زمانی امن، تلاش مجدد و بازیابی.',
introduction: 'یک سیستم سبک برای اجرای کارهای پس‌زمینه ساختم تا کارهای کند یا ناپایدار بیرون از مسیر اصلی درخواست اجرا شوند. چند پردازش‌گر می‌توانند هم‌زمان و بدون مسدودکردن یکدیگر کار بردارند، کارهای ناموفق با سازوکاری امن دوباره اجرا می‌شوند و در صورت وقفه قابل‌بازیابی می‌مانند.',
role: 'توسعه‌دهنده Backend',
targetUsers: 'توسعه‌دهندگانی که کارهای کند یا ناپایدار را بیرون از چرخه درخواست اجرا می‌کنند',
status: 'تکمیل‌شده',
@@ -558,9 +558,9 @@ const projectDefinitions: ProjectDefinition[] = [
en: {
title: 'Subsource',
date: 'MAY 2024',
description: 'Designed the end-to-end UI/UX for SubSource, a subtitle discovery and download platform serving movie and TV audiences across multiple languages. Focused on simplifying content discovery, organizing information-heavy interfaces, and creating intuitive user flows across the product.',
description: 'An end-to-end product design for finding and downloading movie and television subtitles across languages.',
caseStudy: {
introduction: 'An end-to-end product design for finding and downloading movie and television subtitles across languages.',
introduction: 'Designed the end-to-end UI/UX for SubSource, a subtitle discovery and download platform serving movie and TV audiences across multiple languages. Focused on simplifying content discovery, organizing information-heavy interfaces, and creating intuitive user flows across the product.',
role: 'Product designer',
targetUsers: 'Movie and television audiences looking for subtitles in multiple languages',
status: 'Completed',
@@ -579,9 +579,9 @@ const projectDefinitions: ProjectDefinition[] = [
fa: {
title: 'ساب‌سورس',
date: 'اردیبهشت ۱۴۰۳',
description: 'طراحی کامل رابط و تجربه کاربری پلتفرم ساب‌سورس را انجام دادم؛ سرویسی برای پیدا کردن و دانلود زیرنویس فیلم و سریال به زبان‌های مختلف. تمرکزم بر ساده‌کردن جست‌وجوی محتوا، مرتب‌کردن رابط‌های پرجزئیات و طراحی مسیرهای کاربری روشن در سراسر محصول بود.',
description: 'طراحی کامل محصول برای پیدا کردن و دانلود زیرنویس فیلم و سریال به زبان‌های مختلف.',
caseStudy: {
introduction: 'طراحی کامل محصول برای پیدا کردن و دانلود زیرنویس فیلم و سریال به زبان‌های مختلف.',
introduction: 'طراحی کامل رابط و تجربه کاربری پلتفرم ساب‌سورس را انجام دادم؛ سرویسی برای پیدا کردن و دانلود زیرنویس فیلم و سریال به زبان‌های مختلف. تمرکزم بر ساده‌کردن جست‌وجوی محتوا، مرتب‌کردن رابط‌های پرجزئیات و طراحی مسیرهای کاربری روشن در سراسر محصول بود.',
role: 'طراح محصول',
targetUsers: 'مخاطبان فیلم و سریال که به‌دنبال زیرنویس در زبان‌های مختلف هستند',
status: 'تکمیل‌شده',