Add Iran offline deploy: Mac bundle + prebuilt Docker image.

Fix pnpm workspace error during prisma generate, and add bundle-for-iran.sh
so the app is built on Mac (full internet) and the server only copies artifacts.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Ali Taghavi
2026-05-19 01:08:17 +03:30
parent a352d4e823
commit b7fdae8967
10 changed files with 374 additions and 24 deletions

View File

@@ -0,0 +1,174 @@
-- CreateTable
CREATE TABLE `Post` (
`id` VARCHAR(191) NOT NULL,
`title` VARCHAR(500) NOT NULL,
`slug` VARCHAR(500) NOT NULL,
`locale` VARCHAR(5) NOT NULL DEFAULT 'fa',
`category` VARCHAR(100) NOT NULL,
`excerpt` TEXT NULL,
`body` LONGTEXT NULL,
`coverImage` VARCHAR(1000) NULL,
`featured` BOOLEAN NOT NULL DEFAULT false,
`publishedAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`seoTitle` VARCHAR(255) NULL,
`seoDesc` VARCHAR(500) NULL,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updatedAt` DATETIME(3) NOT NULL,
UNIQUE INDEX `Post_slug_key`(`slug`),
INDEX `Post_locale_featured_idx`(`locale`, `featured`),
INDEX `Post_locale_category_idx`(`locale`, `category`),
INDEX `Post_publishedAt_idx`(`publishedAt` DESC),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `Project` (
`id` VARCHAR(191) NOT NULL,
`title` VARCHAR(500) NOT NULL,
`slug` VARCHAR(500) NOT NULL,
`locale` VARCHAR(5) NOT NULL DEFAULT 'fa',
`projectType` VARCHAR(100) NOT NULL,
`description` TEXT NULL,
`body` LONGTEXT NULL,
`coverImage` VARCHAR(1000) NULL,
`gallery` TEXT NULL,
`techStack` TEXT NULL,
`toolsUsed` TEXT NULL,
`liveUrl` VARCHAR(500) NULL,
`githubUrl` VARCHAR(500) NULL,
`featured` BOOLEAN NOT NULL DEFAULT false,
`seoTitle` VARCHAR(255) NULL,
`seoDesc` VARCHAR(500) NULL,
`sortOrder` INTEGER NOT NULL DEFAULT 0,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updatedAt` DATETIME(3) NOT NULL,
UNIQUE INDEX `Project_slug_key`(`slug`),
INDEX `Project_locale_projectType_idx`(`locale`, `projectType`),
INDEX `Project_locale_featured_idx`(`locale`, `featured`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `Product` (
`id` VARCHAR(191) NOT NULL,
`title` VARCHAR(500) NOT NULL,
`slug` VARCHAR(500) NOT NULL,
`locale` VARCHAR(5) NOT NULL DEFAULT 'fa',
`description` TEXT NULL,
`price` DOUBLE NULL,
`currency` VARCHAR(10) NOT NULL DEFAULT 'IRR',
`coverImage` VARCHAR(1000) NULL,
`purchaseUrl` VARCHAR(500) NULL,
`productType` VARCHAR(50) NOT NULL DEFAULT 'digital',
`featured` BOOLEAN NOT NULL DEFAULT false,
`seoTitle` VARCHAR(255) NULL,
`seoDesc` VARCHAR(500) NULL,
`sortOrder` INTEGER NOT NULL DEFAULT 0,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updatedAt` DATETIME(3) NOT NULL,
UNIQUE INDEX `Product_slug_key`(`slug`),
INDEX `Product_locale_idx`(`locale`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `Tag` (
`id` VARCHAR(191) NOT NULL,
`title` VARCHAR(100) NOT NULL,
`slug` VARCHAR(100) NOT NULL,
UNIQUE INDEX `Tag_slug_key`(`slug`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `PostTag` (
`postId` VARCHAR(191) NOT NULL,
`tagId` VARCHAR(191) NOT NULL,
PRIMARY KEY (`postId`, `tagId`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `TimelineEvent` (
`id` VARCHAR(191) NOT NULL,
`title` VARCHAR(500) NOT NULL,
`date` DATETIME(3) NOT NULL,
`description` TEXT NULL,
`icon` VARCHAR(10) NULL,
`category` VARCHAR(50) NOT NULL DEFAULT 'career',
`sortOrder` INTEGER NOT NULL DEFAULT 0,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
INDEX `TimelineEvent_date_idx`(`date` DESC),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `UsesItem` (
`id` VARCHAR(191) NOT NULL,
`title` VARCHAR(255) NOT NULL,
`description` TEXT NULL,
`category` VARCHAR(50) NOT NULL,
`url` VARCHAR(500) NULL,
`image` VARCHAR(1000) NULL,
`sortOrder` INTEGER NOT NULL DEFAULT 0,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updatedAt` DATETIME(3) NOT NULL,
INDEX `UsesItem_category_idx`(`category`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `SiteSettings` (
`id` VARCHAR(191) NOT NULL DEFAULT 'main',
`siteTitle` VARCHAR(255) NOT NULL DEFAULT 'Ali Taghavi',
`description` TEXT NULL,
`currentStatus` TEXT NULL,
`telegramChannel` VARCHAR(255) NULL,
`socialGithub` VARCHAR(255) NULL,
`socialLinkedin` VARCHAR(255) NULL,
`socialTwitter` VARCHAR(255) NULL,
`socialTelegram` VARCHAR(255) NULL,
`socialInstagram` VARCHAR(255) NULL,
`updatedAt` DATETIME(3) NOT NULL,
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `AdminUser` (
`id` VARCHAR(191) NOT NULL,
`username` VARCHAR(100) NOT NULL,
`password` VARCHAR(255) NOT NULL,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
UNIQUE INDEX `AdminUser_username_key`(`username`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `ContactMessage` (
`id` VARCHAR(191) NOT NULL,
`name` VARCHAR(255) NOT NULL,
`email` VARCHAR(255) NOT NULL,
`subject` VARCHAR(500) NULL,
`message` LONGTEXT NOT NULL,
`isRead` BOOLEAN NOT NULL DEFAULT false,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
INDEX `ContactMessage_isRead_idx`(`isRead`),
INDEX `ContactMessage_createdAt_idx`(`createdAt` DESC),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- AddForeignKey
ALTER TABLE `PostTag` ADD CONSTRAINT `PostTag_postId_fkey` FOREIGN KEY (`postId`) REFERENCES `Post`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `PostTag` ADD CONSTRAINT `PostTag_tagId_fkey` FOREIGN KEY (`tagId`) REFERENCES `Tag`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;