Make admin section editor form-based and localize Montech site to Persian.
Operators can edit landing copy as plain fields instead of JSON/HTML; default CMS seed and UI chrome are now Farsi/RTL. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+113
-103
@@ -5,127 +5,127 @@ const prisma = new PrismaClient();
|
||||
|
||||
const defaultSections: Record<string, unknown> = {
|
||||
hero: {
|
||||
eyebrow: "SOFTWARE DEVELOPMENT GROUP",
|
||||
location: "[ EST. 2020 — TEHRAN / REMOTE ]",
|
||||
lines: ["We craft", "software that", "performs"],
|
||||
highlightWord: "software",
|
||||
body: "We are a senior engineering group shipping web platforms, mobile apps and cloud infrastructure for companies that refuse to blend in.",
|
||||
cta: "SEE OUR WORK",
|
||||
badge: "MONTECH ENGINEERING • SINCE 2020 •",
|
||||
coords: "35.6892° N / 51.3890° E",
|
||||
projectsLabel: "120+ PROJECTS SHIPPED",
|
||||
eyebrow: "گروه توسعه نرمافزار",
|
||||
location: "[ تأسیس ۱۴۰۰ — تهران / دورکاری ]",
|
||||
lines: ["ما نرمافزار", "میسازیم که", "عمل میکند"],
|
||||
highlightWord: "نرمافزار",
|
||||
body: "مانتک یک تیم مهندسی ارشد است که پلتفرمهای وب، اپلیکیشن موبایل و زیرساخت ابری را برای کسبوکارهایی میسازد که نمیخواهند معمولی باشند.",
|
||||
cta: "مشاهده نمونهکارها",
|
||||
badge: "مهندسی مانتک • از ۱۴۰۰ •",
|
||||
coords: "تهران، ایران",
|
||||
projectsLabel: "بیش از ۱۲۰ پروژه تحویلشده",
|
||||
},
|
||||
marquee: {
|
||||
items: [
|
||||
"WEB PLATFORMS",
|
||||
"MOBILE APPS",
|
||||
"CLOUD & DEVOPS",
|
||||
"AI SOLUTIONS",
|
||||
"DESIGN SYSTEMS",
|
||||
"API ARCHITECTURE",
|
||||
"پلتفرم وب",
|
||||
"اپلیکیشن موبایل",
|
||||
"ابرو DevOps",
|
||||
"هوش مصنوعی",
|
||||
"سیستم طراحی",
|
||||
"معماری API",
|
||||
],
|
||||
},
|
||||
manifesto: {
|
||||
tag: "Who we are",
|
||||
tag: "ما که هستیم",
|
||||
words: [
|
||||
{ text: "We", outline: false },
|
||||
{ text: "build", outline: false },
|
||||
{ text: "software", outline: true },
|
||||
{ text: "that", outline: false },
|
||||
{ text: "moves", outline: false },
|
||||
{ text: "the", outline: false },
|
||||
{ text: "needle.", outline: false },
|
||||
{ text: "MONTECH", outline: false, volt: true },
|
||||
{ text: "ما" },
|
||||
{ text: "نرمافزاری" },
|
||||
{ text: "میسازیم", volt: true },
|
||||
{ text: "که" },
|
||||
{ text: "تفاوت" },
|
||||
{ text: "ایجاد" },
|
||||
{ text: "کند." },
|
||||
{ text: "مانتک", volt: true },
|
||||
],
|
||||
body: "Strategy, design and engineering under one roof — shipped with obsessive attention to performance and craft.",
|
||||
body: "استراتژی، طراحی و مهندسی زیر یک سقف — با دقت وسواسگونه نسبت به کیفیت و عملکرد.",
|
||||
},
|
||||
services: {
|
||||
tag: "What we do",
|
||||
tag: "چه میکنیم",
|
||||
items: [
|
||||
{
|
||||
n: "01",
|
||||
title: "Product Strategy",
|
||||
desc: "We turn fuzzy ideas into validated roadmaps. Discovery sprints, user research and rapid prototyping de-risk your build before a single line of code is written.",
|
||||
tags: ["Discovery Sprints", "User Research", "Roadmapping", "MVP Scoping"],
|
||||
n: "۰۱",
|
||||
title: "استراتژی محصول",
|
||||
desc: "ایدههای مبهم را به نقشه راه معتبر تبدیل میکنیم. اسپرینت کشف، پژوهش کاربر و نمونهسازی سریع قبل از نوشتن کد.",
|
||||
tags: ["کشف محصول", "پژوهش کاربر", "نقشه راه", "MVP"],
|
||||
},
|
||||
{
|
||||
n: "02",
|
||||
title: "Web Engineering",
|
||||
desc: "Blazing-fast, scalable web platforms with modern stacks. From marketing sites to complex SaaS dashboards — engineered for performance, accessibility and conversion.",
|
||||
tags: ["React / Next.js", "Nuxt", "Node.js", "NestJS"],
|
||||
n: "۰۲",
|
||||
title: "مهندسی وب",
|
||||
desc: "پلتفرمهای وب سریع و مقیاسپذیر — از سایتهای بازاریابی تا داشبوردهای پیچیده SaaS.",
|
||||
tags: ["Nuxt", "NestJS", "Node.js", "React"],
|
||||
},
|
||||
{
|
||||
n: "03",
|
||||
title: "Mobile Applications",
|
||||
desc: "Native-quality iOS and Android experiences from a single codebase — or fully native when it matters.",
|
||||
n: "۰۳",
|
||||
title: "اپلیکیشن موبایل",
|
||||
desc: "تجربهٔ بومیگونه روی iOS و Android از یک کدبیس مشترک — یا کاملاً نیتیو وقتی لازم باشد.",
|
||||
tags: ["React Native", "Flutter", "Swift", "Kotlin"],
|
||||
},
|
||||
{
|
||||
n: "04",
|
||||
title: "Cloud & DevOps",
|
||||
desc: "Infrastructure that scales with your ambition. Resilient cloud systems, automated deployments, secure and observable platforms.",
|
||||
tags: ["AWS / GCP", "Kubernetes", "Terraform", "CI/CD"],
|
||||
n: "۰۴",
|
||||
title: "ابرو DevOps",
|
||||
desc: "زیرساختی که با رشد شما مقیاس میشود؛ استقرار خودکار، امنیت و مانیتورینگ.",
|
||||
tags: ["AWS / GCP", "کوبرنتیز", "CI/CD", "Terraform"],
|
||||
},
|
||||
{
|
||||
n: "05",
|
||||
title: "AI & Data",
|
||||
desc: "Practical AI, not science projects. LLM integrations, intelligent automation and data pipelines.",
|
||||
tags: ["LLM Integration", "ML Pipelines", "Data Engineering", "Analytics"],
|
||||
n: "۰۵",
|
||||
title: "هوش مصنوعی و داده",
|
||||
desc: "هوش مصنوعی کاربردی؛ اتصال LLM، اتوماسیون هوشمند و خطوط لوله داده.",
|
||||
tags: ["LLM", "اتوماسیون", "مهندسی داده", "تحلیل"],
|
||||
},
|
||||
],
|
||||
},
|
||||
work: {
|
||||
tag: "Selected work",
|
||||
tag: "نمونه کارها",
|
||||
items: [
|
||||
{ n: "01", title: "PULSEBOARD", cat: "Fintech Analytics Platform", year: "2024" },
|
||||
{ n: "02", title: "AEROLOOP", cat: "Logistics SaaS", year: "2024" },
|
||||
{ n: "03", title: "MEDSYNC", cat: "HealthTech Platform", year: "2023" },
|
||||
{ n: "04", title: "NOVAPAY", cat: "Payment Infrastructure", year: "2023" },
|
||||
{ n: "۰۱", title: "پالسبورد", cat: "پلتفرم تحلیلی فینتک", year: "۱۴۰۳" },
|
||||
{ n: "۰۲", title: "ایرولوپ", cat: "نرمافزار لجستیک", year: "۱۴۰۳" },
|
||||
{ n: "۰۳", title: "مدسینک", cat: "پلتفرم هلثتک", year: "۱۴۰۲" },
|
||||
{ n: "۰۴", title: "نوواپی", cat: "زیرساخت پرداخت", year: "۱۴۰۲" },
|
||||
],
|
||||
},
|
||||
process: {
|
||||
tag: "How we ship",
|
||||
tag: "چگونه کار میکنیم",
|
||||
steps: [
|
||||
{ n: "01", title: "DISCOVER", desc: "Workshops, research and alignment on outcomes that matter." },
|
||||
{ n: "02", title: "DESIGN", desc: "Systems, flows and interfaces that feel inevitable." },
|
||||
{ n: "03", title: "DEVELOP", desc: "Senior engineers shipping production-ready software." },
|
||||
{ n: "04", title: "DEPLOY & SCALE", desc: "CI/CD, observability and infrastructure that grows with you." },
|
||||
{ n: "۰۱", title: "کشف", desc: "کارگاه، پژوهش و همراستایی روی نتایجی که واقعاً مهماند." },
|
||||
{ n: "۰۲", title: "طراحی", desc: "سیستمها، جریانها و رابطهایی که ساده و قابلاعتماد به نظر میرسند." },
|
||||
{ n: "۰۳", title: "توسعه", desc: "مهندسان ارشد که نرمافزار آمادهٔ تولید تحویل میدهند." },
|
||||
{ n: "۰۴", title: "استقرار و مقیاس", desc: "CI/CD، مانیتورینگ و زیرساختی که با شما رشد میکند." },
|
||||
],
|
||||
},
|
||||
stats: {
|
||||
items: [
|
||||
{ value: 120, suffix: "+", label: "Projects shipped" },
|
||||
{ value: 40, suffix: "+", label: "Clients worldwide" },
|
||||
{ value: 15, suffix: "", label: "Engineers & designers" },
|
||||
{ value: 98, suffix: "%", label: "Client retention" },
|
||||
{ value: 120, suffix: "+", label: "پروژه تحویلشده" },
|
||||
{ value: 40, suffix: "+", label: "مشتری" },
|
||||
{ value: 15, suffix: "", label: "مهندس و طراح" },
|
||||
{ value: 98, suffix: "%", label: "ماندگاری مشتری" },
|
||||
],
|
||||
},
|
||||
team: {
|
||||
tag: "The collective",
|
||||
headline: "Meet the collective",
|
||||
body: "A tight crew of senior builders — product, design and engineering.",
|
||||
tag: "تیم",
|
||||
headline: "با جمع ما آشنا شوید",
|
||||
body: "تیمی جمعوجور از متخصصان محصول، طراحی و مهندسی.",
|
||||
members: [
|
||||
{ name: "Alexandra Reyes", role: "CEO & CO-FOUNDER" },
|
||||
{ name: "Marcus Chen", role: "CTO & CO-FOUNDER" },
|
||||
{ name: "Sofia Laurent", role: "HEAD OF DESIGN" },
|
||||
{ name: "David Okafor", role: "PRINCIPAL ENGINEER" },
|
||||
{ name: "علی رضایی", role: "مدیرعامل و همبنیانگذار" },
|
||||
{ name: "سارا محمدی", role: "مدیر فنی و همبنیانگذار" },
|
||||
{ name: "مریم حسینی", role: "سرپرست طراحی" },
|
||||
{ name: "رضا کریمی", role: "مهندس ارشد" },
|
||||
],
|
||||
},
|
||||
footer: {
|
||||
tag: "Contact",
|
||||
marquee: ["GOT A PROJECT IN MIND", "SAY HELLO", "LET'S WORK TOGETHER"],
|
||||
cta: "Start a project",
|
||||
tag: "تماس",
|
||||
marquee: ["پروژهای در ذهن دارید؟", "سلام کنید", "با هم کار کنیم"],
|
||||
cta: "شروع همکاری",
|
||||
email: "hello@montech.ir",
|
||||
phone: "+98 21 0000 0000",
|
||||
address: ["Tehran", "Iran"],
|
||||
socials: ["LinkedIn", "GitHub", "Dribbble"],
|
||||
address: ["تهران", "ایران"],
|
||||
socials: ["لینکدین", "گیتهاب", "اینستاگرام"],
|
||||
},
|
||||
};
|
||||
|
||||
async function main() {
|
||||
const mobile = process.env.ADMIN_MOBILE || "09121234567";
|
||||
const password = process.env.ADMIN_PASSWORD || "change-me-strong";
|
||||
const name = process.env.ADMIN_NAME || "Montech Admin";
|
||||
const name = process.env.ADMIN_NAME || "مدیر مانتک";
|
||||
const hash = await bcrypt.hash(password, 10);
|
||||
|
||||
await prisma.admin.upsert({
|
||||
@@ -138,46 +138,50 @@ async function main() {
|
||||
where: { id: "default" },
|
||||
create: {
|
||||
id: "default",
|
||||
brandName: "Montech",
|
||||
tagline: "Software Development Group",
|
||||
brandName: "مانتک",
|
||||
tagline: "گروه توسعه نرمافزار",
|
||||
email: "hello@montech.ir",
|
||||
phone: "+98 21 0000 0000",
|
||||
address: "Tehran, IR",
|
||||
address: "تهران، ایران",
|
||||
timezone: "Asia/Tehran",
|
||||
socials: [
|
||||
{ label: "LinkedIn", url: "https://linkedin.com" },
|
||||
{ label: "GitHub", url: "https://github.com" },
|
||||
{ label: "لینکدین", url: "https://linkedin.com" },
|
||||
{ label: "گیتهاب", url: "https://github.com" },
|
||||
],
|
||||
},
|
||||
update: {},
|
||||
update: {
|
||||
brandName: "مانتک",
|
||||
tagline: "گروه توسعه نرمافزار",
|
||||
address: "تهران، ایران",
|
||||
},
|
||||
});
|
||||
|
||||
const pages = [
|
||||
{
|
||||
key: "home",
|
||||
title: "Home",
|
||||
title: "خانه",
|
||||
seo: {
|
||||
title: "Montech — Software Development Group",
|
||||
title: "مانتک — گروه توسعه نرمافزار",
|
||||
description:
|
||||
"Montech engineers high-performance web platforms, mobile apps and cloud infrastructure. Based in Tehran, shipping worldwide.",
|
||||
"مانتک پلتفرمهای وب، اپلیکیشن موبایل و زیرساخت ابری با عملکرد بالا میسازد. مستقر در تهران، فعال در سراسر ایران.",
|
||||
canonical: "https://montech.ir/",
|
||||
},
|
||||
},
|
||||
{
|
||||
key: "blog",
|
||||
title: "Blog",
|
||||
title: "بلاگ",
|
||||
seo: {
|
||||
title: "Blog — Montech",
|
||||
description: "Notes on product, engineering and shipping software.",
|
||||
title: "بلاگ — مانتک",
|
||||
description: "یادداشتهایی درباره محصول، مهندسی و ساخت نرمافزار.",
|
||||
canonical: "https://montech.ir/blog",
|
||||
},
|
||||
},
|
||||
{
|
||||
key: "gallery",
|
||||
title: "Gallery",
|
||||
title: "گالری",
|
||||
seo: {
|
||||
title: "Gallery — Montech",
|
||||
description: "Selected visuals from Montech projects and studio life.",
|
||||
title: "گالری — مانتک",
|
||||
description: "تصاویر منتخب از پروژهها و فضای استودیو مانتک.",
|
||||
canonical: "https://montech.ir/gallery",
|
||||
},
|
||||
},
|
||||
@@ -204,22 +208,28 @@ async function main() {
|
||||
});
|
||||
}
|
||||
|
||||
const existingPost = await prisma.blogPost.findUnique({ where: { slug: "welcome-to-montech" } });
|
||||
if (!existingPost) {
|
||||
await prisma.blogPost.create({
|
||||
data: {
|
||||
slug: "welcome-to-montech",
|
||||
title: "Welcome to Montech",
|
||||
excerpt: "We build software that performs — and this is where we write about it.",
|
||||
content:
|
||||
"<p>Montech is a software development group shipping web platforms, mobile apps and cloud infrastructure.</p><p>This blog covers product craft, engineering practice and lessons from the studio.</p>",
|
||||
published: true,
|
||||
publishedAt: new Date(),
|
||||
seoTitle: "Welcome to Montech — Blog",
|
||||
seoDesc: "Introducing Montech and how we ship software.",
|
||||
},
|
||||
});
|
||||
}
|
||||
await prisma.blogPost.upsert({
|
||||
where: { slug: "welcome-to-montech" },
|
||||
create: {
|
||||
slug: "welcome-to-montech",
|
||||
title: "به مانتک خوش آمدید",
|
||||
excerpt: "ما نرمافزاری میسازیم که واقعاً کار میکند — و اینجا دربارهاش مینویسیم.",
|
||||
content:
|
||||
"مانتک یک گروه توسعه نرمافزار است که پلتفرم وب، اپلیکیشن موبایل و زیرساخت ابری میسازد.\n\nدر این بلاگ درباره ساخت محصول، مهندسی و درسآموختههای استودیو مینویسیم.",
|
||||
published: true,
|
||||
publishedAt: new Date(),
|
||||
seoTitle: "به مانتک خوش آمدید — بلاگ",
|
||||
seoDesc: "معرفی مانتک و نحوه ساخت نرمافزار در تیم ما.",
|
||||
},
|
||||
update: {
|
||||
title: "به مانتک خوش آمدید",
|
||||
excerpt: "ما نرمافزاری میسازیم که واقعاً کار میکند — و اینجا دربارهاش مینویسیم.",
|
||||
content:
|
||||
"مانتک یک گروه توسعه نرمافزار است که پلتفرم وب، اپلیکیشن موبایل و زیرساخت ابری میسازد.\n\nدر این بلاگ درباره ساخت محصول، مهندسی و درسآموختههای استودیو مینویسیم.",
|
||||
seoTitle: "به مانتک خوش آمدید — بلاگ",
|
||||
seoDesc: "معرفی مانتک و نحوه ساخت نرمافزار در تیم ما.",
|
||||
},
|
||||
});
|
||||
|
||||
console.log("Seed complete. Admin:", mobile);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user