kofi-stack-template-generator 2.1.45 → 2.1.46

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (24) hide show
  1. package/.turbo/turbo-build.log +5 -5
  2. package/dist/index.js +1384 -589
  3. package/package.json +2 -2
  4. package/src/templates.generated.ts +21 -21
  5. package/templates/marketing/payload/src/endpoints/seed/directoryhub/about.ts +22 -22
  6. package/templates/marketing/payload/src/endpoints/seed/directoryhub/faqs.ts +39 -39
  7. package/templates/marketing/payload/src/endpoints/seed/directoryhub/features/automation.ts +35 -35
  8. package/templates/marketing/payload/src/endpoints/seed/directoryhub/features/custom-fields.ts +58 -58
  9. package/templates/marketing/payload/src/endpoints/seed/directoryhub/features/dashboard.ts +46 -46
  10. package/templates/marketing/payload/src/endpoints/seed/directoryhub/features/index.ts +4 -4
  11. package/templates/marketing/payload/src/endpoints/seed/directoryhub/features/monetization.ts +64 -64
  12. package/templates/marketing/payload/src/endpoints/seed/directoryhub/features/seo.ts +65 -65
  13. package/templates/marketing/payload/src/endpoints/seed/directoryhub/features/templates.ts +55 -58
  14. package/templates/marketing/payload/src/endpoints/seed/directoryhub/home.ts +145 -145
  15. package/templates/marketing/payload/src/endpoints/seed/directoryhub/index.ts +55 -55
  16. package/templates/marketing/payload/src/endpoints/seed/directoryhub/posts.ts +231 -221
  17. package/templates/marketing/payload/src/endpoints/seed/directoryhub/pricing.ts +27 -27
  18. package/templates/marketing/payload/src/endpoints/seed/directoryhub/privacy.ts +3 -3
  19. package/templates/marketing/payload/src/endpoints/seed/directoryhub/terms.ts +6 -6
  20. package/templates/marketing/payload/src/endpoints/seed/directoryhub/use-cases/b2b-vendor-hubs.ts +63 -62
  21. package/templates/marketing/payload/src/endpoints/seed/directoryhub/use-cases/communities.ts +62 -62
  22. package/templates/marketing/payload/src/endpoints/seed/directoryhub/use-cases/index.ts +4 -4
  23. package/templates/marketing/payload/src/endpoints/seed/directoryhub/use-cases/local-services.ts +62 -62
  24. package/templates/marketing/payload/src/endpoints/seed/directoryhub/use-cases/marketplaces.ts +66 -66
package/dist/index.js CHANGED
@@ -3944,7 +3944,7 @@ export const directoryHubAbout = ({ contactForm }: AboutArgs): Partial<Page> =>
3944
3944
  format: 0,
3945
3945
  mode: "normal",
3946
3946
  style: "",
3947
- text: "We help entrepreneurs build directory businesses",
3947
+ text: "We're building the future of team productivity",
3948
3948
  version: 1,
3949
3949
  },
3950
3950
  ],
@@ -3963,7 +3963,7 @@ export const directoryHubAbout = ({ contactForm }: AboutArgs): Partial<Page> =>
3963
3963
  format: 0,
3964
3964
  mode: "normal",
3965
3965
  style: "",
3966
- text: "DirectoryHub makes it easy for anyone to launch, monetize, and grow niche directory websites \u2014 without writing code.",
3966
+ text: "SaaSify makes it easy for teams to collaborate, automate workflows, and scale their operations \u2014 all in one powerful platform.",
3967
3967
  version: 1,
3968
3968
  },
3969
3969
  ],
@@ -3987,9 +3987,9 @@ export const directoryHubAbout = ({ contactForm }: AboutArgs): Partial<Page> =>
3987
3987
  blockType: "featureShowcase",
3988
3988
  blockName: "Our Mission",
3989
3989
  label: "Our Mission",
3990
- headline: "Democratizing the directory business model",
3990
+ headline: "Making powerful tools accessible to every team",
3991
3991
  description: createParagraph(
3992
- "Directory websites remain one of the most sustainable online business models, yet building one traditionally requires significant technical expertise. We believe anyone with niche knowledge should be able to turn that expertise into a profitable directory business. DirectoryHub handles the technical complexity so you can focus on what matters: curating great content and growing your community.",
3992
+ "Great software shouldn't require a huge budget or dedicated IT team. We believe every organization deserves access to the tools that help them do their best work. SaaSify brings together the best of project management, collaboration, and automation in one intuitive platform that grows with your team.",
3993
3993
  ),
3994
3994
  link: {
3995
3995
  type: "custom",
@@ -3999,9 +3999,9 @@ export const directoryHubAbout = ({ contactForm }: AboutArgs): Partial<Page> =>
3999
3999
  },
4000
4000
  imagePosition: "right",
4001
4001
  features: [
4002
- { text: "No coding required" },
4003
- { text: "Built-in monetization" },
4004
- { text: "Enterprise-grade SEO" },
4002
+ { text: "No technical skills required" },
4003
+ { text: "100+ integrations built-in" },
4004
+ { text: "Enterprise-grade security" },
4005
4005
  { text: "Scale as you grow" },
4006
4006
  ],
4007
4007
  },
@@ -4010,9 +4010,9 @@ export const directoryHubAbout = ({ contactForm }: AboutArgs): Partial<Page> =>
4010
4010
  blockType: "proofBanner",
4011
4011
  blockName: "Impact Stats",
4012
4012
  style: "withBackground",
4013
- headline: "Trusted by directory builders worldwide",
4013
+ headline: "Trusted by teams worldwide",
4014
4014
  subtext:
4015
- "Join hundreds of entrepreneurs who have launched successful directories with DirectoryHub",
4015
+ "Join thousands of teams who have transformed how they work with SaaSify",
4016
4016
  },
4017
4017
  // Values Grid
4018
4018
  {
@@ -4027,7 +4027,7 @@ export const directoryHubAbout = ({ contactForm }: AboutArgs): Partial<Page> =>
4027
4027
  icon: "zap",
4028
4028
  title: "Simplicity First",
4029
4029
  description: createParagraph(
4030
- "We remove complexity so you can focus on building your business.",
4030
+ "We remove complexity so you can focus on what matters most.",
4031
4031
  ),
4032
4032
  },
4033
4033
  {
@@ -4036,7 +4036,7 @@ export const directoryHubAbout = ({ contactForm }: AboutArgs): Partial<Page> =>
4036
4036
  icon: "rocket",
4037
4037
  title: "Built for Growth",
4038
4038
  description: createParagraph(
4039
- "Every feature is designed to help you scale sustainably.",
4039
+ "Every feature is designed to help your team scale sustainably.",
4040
4040
  ),
4041
4041
  },
4042
4042
  {
@@ -4061,7 +4061,7 @@ export const directoryHubAbout = ({ contactForm }: AboutArgs): Partial<Page> =>
4061
4061
  icon: "globe",
4062
4062
  title: "Quality Matters",
4063
4063
  description: createParagraph(
4064
- "We build tools that help you maintain high-quality directories.",
4064
+ "We build tools that are reliable, fast, and delightful to use.",
4065
4065
  ),
4066
4066
  },
4067
4067
  {
@@ -4080,19 +4080,19 @@ export const directoryHubAbout = ({ contactForm }: AboutArgs): Partial<Page> =>
4080
4080
  blockType: "featureShowcase",
4081
4081
  blockName: "Our Story",
4082
4082
  label: "Our Story",
4083
- headline: "From frustration to solution",
4083
+ headline: "Born from real frustrations",
4084
4084
  description: createParagraph(
4085
- "DirectoryHub was born when our founders tried to build a niche directory and discovered how much technical overhead was involved. After months of custom development for what seemed like a simple project, we realized there had to be a better way. We built DirectoryHub to be the platform we wished existed \u2014 one that handles all the technical complexity while giving directory builders complete control over their business.",
4085
+ "SaaSify started when our founders experienced firsthand how fragmented and frustrating work tools had become. Juggling dozens of apps, losing context between tools, and spending more time managing work than doing it. We built the platform we wished we had \u2014 one that brings everything together and just works.",
4086
4086
  ),
4087
4087
  link: {
4088
4088
  type: "custom",
4089
4089
  url: "/sign-up",
4090
- label: "Start building free",
4090
+ label: "Start free trial",
4091
4091
  appearance: "default",
4092
4092
  },
4093
4093
  imagePosition: "left",
4094
4094
  features: [
4095
- { text: "Founded by directory builders" },
4095
+ { text: "Founded by operators, for operators" },
4096
4096
  { text: "Bootstrapped and profitable" },
4097
4097
  { text: "Customer-funded development" },
4098
4098
  { text: "Global remote team" },
@@ -4136,7 +4136,7 @@ export const directoryHubAbout = ({ contactForm }: AboutArgs): Partial<Page> =>
4136
4136
  format: 0,
4137
4137
  mode: "normal",
4138
4138
  style: "",
4139
- text: "Have questions about DirectoryHub? We'd love to hear from you. Send us a message and our team will respond within 24 hours.",
4139
+ text: "Have questions about SaaSify? We'd love to hear from you. Send us a message and our team will respond within 24 hours.",
4140
4140
  version: 1,
4141
4141
  },
4142
4142
  ],
@@ -4169,14 +4169,14 @@ export const directoryHubAbout = ({ contactForm }: AboutArgs): Partial<Page> =>
4169
4169
  blockType: "proofBanner",
4170
4170
  blockName: "Footer CTA",
4171
4171
  style: "centered",
4172
- headline: "Ready to build your directory?",
4173
- subtext: "Join hundreds of entrepreneurs building successful directory businesses.",
4172
+ headline: "Ready to transform how your team works?",
4173
+ subtext: "Join thousands of teams building their future with SaaSify.",
4174
4174
  links: [
4175
4175
  {
4176
4176
  link: {
4177
4177
  type: "custom",
4178
4178
  appearance: "default",
4179
- label: "Start for free",
4179
+ label: "Start free trial",
4180
4180
  url: "/sign-up",
4181
4181
  },
4182
4182
  },
@@ -4193,8 +4193,8 @@ export const directoryHubAbout = ({ contactForm }: AboutArgs): Partial<Page> =>
4193
4193
  ],
4194
4194
  meta: {
4195
4195
  description:
4196
- "Learn about DirectoryHub \u2014 the platform that makes it easy to build, monetize, and grow directory websites. Founded by directory builders, for directory builders.",
4197
- title: "About DirectoryHub \u2014 Our Mission & Story",
4196
+ "Learn about SaaSify \u2014 the platform that makes it easy to collaborate, automate, and scale. Built by operators, for operators.",
4197
+ title: "About SaaSify \u2014 Our Mission & Story",
4198
4198
  },
4199
4199
  title: "About",
4200
4200
  }
@@ -4206,33 +4206,33 @@ import { createParagraph } from "./richtext-helper"
4206
4206
  export const faqData: Partial<Faq>[] = [
4207
4207
  // Getting Started FAQs
4208
4208
  {
4209
- question: "How quickly can I launch my directory?",
4209
+ question: "How quickly can I get my team started?",
4210
4210
  answer: createParagraph(
4211
- "Most customers launch their first directory within 1-2 days. Pick a template, customize your branding, add your first listings, and you're live. No coding required.",
4211
+ "Most teams are up and running within hours. Invite your team members, configure your workspace, and start collaborating immediately. No lengthy setup or technical expertise required.",
4212
4212
  ),
4213
4213
  category: "getting-started",
4214
4214
  order: 1,
4215
4215
  },
4216
4216
  {
4217
- question: "Do I need technical skills to use DirectoryHub?",
4217
+ question: "Do I need technical skills to use SaaSify?",
4218
4218
  answer: createParagraph(
4219
- "No technical skills required. DirectoryHub is designed for non-technical users. Our visual editor lets you customize everything from colors to layouts without writing any code.",
4219
+ "No technical skills required. Our intuitive interface lets anyone configure workflows, set up integrations, and manage their workspace without writing any code.",
4220
4220
  ),
4221
4221
  category: "getting-started",
4222
4222
  order: 2,
4223
4223
  },
4224
4224
  {
4225
- question: "Can I import existing listings from another platform?",
4225
+ question: "Can I import data from other tools?",
4226
4226
  answer: createParagraph(
4227
- "Yes! You can import listings via CSV upload. We also offer migration assistance for larger directories moving from other platforms. Contact our support team for help with migrations.",
4227
+ "Yes! Import data via CSV or use our native integrations to sync data from tools like Salesforce, HubSpot, Notion, and more. We also offer migration assistance for larger accounts.",
4228
4228
  ),
4229
4229
  category: "getting-started",
4230
4230
  order: 3,
4231
4231
  },
4232
4232
  {
4233
- question: "What kind of directories can I build?",
4233
+ question: "What teams and use cases is SaaSify best for?",
4234
4234
  answer: createParagraph(
4235
- "DirectoryHub works for any type of directory: local services, B2B vendors, community directories, marketplaces, job boards, real estate, and more. Our templates cover the most popular use cases, and custom fields let you build any schema.",
4235
+ "SaaSify works for any team that needs to collaborate and get work done: sales, marketing, product, operations, customer success, and more. Our flexible platform adapts to your workflows.",
4236
4236
  ),
4237
4237
  category: "getting-started",
4238
4238
  order: 4,
@@ -4242,7 +4242,7 @@ export const faqData: Partial<Faq>[] = [
4242
4242
  {
4243
4243
  question: "Is there a free plan?",
4244
4244
  answer: createParagraph(
4245
- "Yes! Start with our Free plan to explore the platform. You can launch a basic directory with up to 50 listings. Upgrade anytime to unlock premium features and higher limits.",
4245
+ "Yes! Start with our Free plan for up to 3 users. Explore the platform, set up your workspace, and upgrade anytime to unlock more users and advanced features.",
4246
4246
  ),
4247
4247
  category: "pricing",
4248
4248
  order: 1,
@@ -4250,7 +4250,7 @@ export const faqData: Partial<Faq>[] = [
4250
4250
  {
4251
4251
  question: "What payment methods do you accept?",
4252
4252
  answer: createParagraph(
4253
- "We accept all major credit cards (Visa, Mastercard, American Express) and debit cards through Stripe. Annual plans can also be paid via invoice for qualifying accounts.",
4253
+ "We accept all major credit cards (Visa, Mastercard, American Express) through Stripe. Annual plans can also be paid via invoice for qualifying accounts.",
4254
4254
  ),
4255
4255
  category: "pricing",
4256
4256
  order: 2,
@@ -4272,9 +4272,9 @@ export const faqData: Partial<Faq>[] = [
4272
4272
  order: 4,
4273
4273
  },
4274
4274
  {
4275
- question: "What happens if I exceed my listing limit?",
4275
+ question: "What happens if my team grows beyond my plan limits?",
4276
4276
  answer: createParagraph(
4277
- "You'll receive a notification when approaching your limit. You can upgrade your plan to increase limits, or we'll help you identify which listings to archive if you prefer to stay on your current plan.",
4277
+ "We'll notify you when approaching your user limit. You can upgrade your plan to increase limits, or we'll help you optimize your current plan to get the most value.",
4278
4278
  ),
4279
4279
  category: "pricing",
4280
4280
  order: 5,
@@ -4282,7 +4282,7 @@ export const faqData: Partial<Faq>[] = [
4282
4282
  {
4283
4283
  question: "Is there a refund policy?",
4284
4284
  answer: createParagraph(
4285
- "We offer a 14-day money-back guarantee for all paid plans. If you're not satisfied within the first 14 days, contact support for a full refund, no questions asked.",
4285
+ "We offer a 14-day money-back guarantee on all paid plans. If you're not satisfied within the first 14 days, contact support for a full refund, no questions asked.",
4286
4286
  ),
4287
4287
  category: "pricing",
4288
4288
  order: 6,
@@ -4290,49 +4290,49 @@ export const faqData: Partial<Faq>[] = [
4290
4290
 
4291
4291
  // Features FAQs
4292
4292
  {
4293
- question: "Can I accept payments through my directory?",
4293
+ question: "What integrations does SaaSify support?",
4294
4294
  answer: createParagraph(
4295
- "Yes! Connect your Stripe account to accept payments for premium listings, subscriptions, and featured placements. We handle the payment flow; you keep the revenue minus Stripe's standard fees.",
4295
+ "We integrate with 100+ tools including Slack, Salesforce, HubSpot, Jira, Notion, Google Workspace, Microsoft 365, and more. New integrations are added regularly based on customer requests.",
4296
4296
  ),
4297
4297
  category: "features",
4298
4298
  order: 1,
4299
4299
  },
4300
4300
  {
4301
- question: "How does SEO work with DirectoryHub?",
4301
+ question: "How does reporting and analytics work?",
4302
4302
  answer: createParagraph(
4303
- "Every directory includes automatic SEO optimization: schema markup, dynamic sitemaps, meta tags, and clean URLs. Your listings are structured for Google's rich results and local pack rankings.",
4303
+ "Real-time dashboards show key metrics for your team and projects. Create custom reports, schedule automated delivery to stakeholders, and export data anytime for deeper analysis.",
4304
4304
  ),
4305
4305
  category: "features",
4306
4306
  order: 2,
4307
4307
  },
4308
4308
  {
4309
- question: "Can I use my own domain name?",
4309
+ question: "Can team members manage their own workspaces?",
4310
4310
  answer: createParagraph(
4311
- "Yes! Custom domains are supported on all paid plans. Point your domain to DirectoryHub, and we'll handle SSL certificates and domain configuration automatically.",
4311
+ "Yes! Team members can customize their workspace, set personal preferences, and manage their own workflows within your organization's guidelines. Admins maintain control over permissions.",
4312
4312
  ),
4313
4313
  category: "features",
4314
4314
  order: 3,
4315
4315
  },
4316
4316
  {
4317
- question: "Do you support reviews and ratings?",
4317
+ question: "Is there an API available?",
4318
4318
  answer: createParagraph(
4319
- "Yes! Enable user reviews and ratings for your listings. You can moderate reviews, require verification, and display aggregate ratings. Review schema is automatically added for rich snippets.",
4319
+ "Yes! Our REST API is available on Pro and Business plans. Use it to build custom integrations, automate workflows programmatically, or connect SaaSify to your internal tools.",
4320
4320
  ),
4321
4321
  category: "features",
4322
4322
  order: 4,
4323
4323
  },
4324
4324
  {
4325
- question: "Can businesses manage their own listings?",
4325
+ question: "Can I automate workflows?",
4326
4326
  answer: createParagraph(
4327
- "Absolutely. Business owners can claim and manage their listings through dedicated dashboards. They can update information, respond to reviews, track analytics, and manage their subscription.",
4327
+ "Absolutely. Our visual workflow builder lets you automate approvals, notifications, data syncing, and more without writing code. Set triggers, conditions, and actions in minutes.",
4328
4328
  ),
4329
4329
  category: "features",
4330
4330
  order: 5,
4331
4331
  },
4332
4332
  {
4333
- question: "Is there an API available?",
4333
+ question: "Do you support custom fields and data types?",
4334
4334
  answer: createParagraph(
4335
- "Yes! Our REST API is available on Professional and Enterprise plans. Use it to integrate your directory with other tools, import data programmatically, or build custom applications.",
4335
+ "Yes! Create custom fields to capture any data your team needs. We support text, numbers, dates, dropdowns, checkboxes, file attachments, and more.",
4336
4336
  ),
4337
4337
  category: "features",
4338
4338
  order: 6,
@@ -4342,15 +4342,15 @@ export const faqData: Partial<Faq>[] = [
4342
4342
  {
4343
4343
  question: "Where is my data hosted?",
4344
4344
  answer: createParagraph(
4345
- "All data is hosted on secure servers in the United States and Europe. We use enterprise-grade infrastructure with automatic backups, redundancy, and 99.9% uptime SLA.",
4345
+ "All data is hosted on secure AWS infrastructure in US and EU regions. We maintain a 99.9% uptime SLA with automatic failover and regular backups.",
4346
4346
  ),
4347
4347
  category: "technical",
4348
4348
  order: 1,
4349
4349
  },
4350
4350
  {
4351
- question: "Is DirectoryHub GDPR compliant?",
4351
+ question: "Is SaaSify GDPR compliant?",
4352
4352
  answer: createParagraph(
4353
- "Yes. We are fully GDPR compliant. We provide data processing agreements, respect user consent preferences, and offer data export/deletion tools for you to fulfill user requests.",
4353
+ "Yes. We're fully GDPR and CCPA compliant. We provide data processing agreements, consent management tools, and data export/deletion capabilities to help you meet your obligations.",
4354
4354
  ),
4355
4355
  category: "technical",
4356
4356
  order: 2,
@@ -4358,15 +4358,15 @@ export const faqData: Partial<Faq>[] = [
4358
4358
  {
4359
4359
  question: "Can I export my data?",
4360
4360
  answer: createParagraph(
4361
- "Yes! Export your listings, users, and analytics data at any time. We provide CSV exports for all data types. You own your data and can take it with you if you ever decide to leave.",
4361
+ "Yes! Export all your data anytime via CSV or API. You own your data and can take it with you if you ever decide to leave. No lock-in, no hassle.",
4362
4362
  ),
4363
4363
  category: "technical",
4364
4364
  order: 3,
4365
4365
  },
4366
4366
  {
4367
- question: "How secure is my directory?",
4367
+ question: "How secure is SaaSify?",
4368
4368
  answer: createParagraph(
4369
- "Security is a top priority. We use SSL encryption, secure payment processing via Stripe, regular security audits, and follow OWASP best practices. Enterprise plans include SOC 2 compliance.",
4369
+ "We're SOC 2 Type II certified with end-to-end encryption, SSO/SAML support, and regular third-party security audits. Your data security is our top priority.",
4370
4370
  ),
4371
4371
  category: "technical",
4372
4372
  order: 4,
@@ -4376,7 +4376,7 @@ export const faqData: Partial<Faq>[] = [
4376
4376
  {
4377
4377
  question: "What support options are available?",
4378
4378
  answer: createParagraph(
4379
- "All plans include email support with 24-hour response times. Professional plans add live chat support. Enterprise plans include dedicated account managers and phone support.",
4379
+ "All plans include email support with 24-hour response times. Pro plans add live chat support. Business plans include a dedicated customer success manager and phone support.",
4380
4380
  ),
4381
4381
  category: "support",
4382
4382
  order: 1,
@@ -4384,7 +4384,7 @@ export const faqData: Partial<Faq>[] = [
4384
4384
  {
4385
4385
  question: "Do you offer onboarding assistance?",
4386
4386
  answer: createParagraph(
4387
- "Yes! All paid plans include onboarding guides and video tutorials. Professional and Enterprise plans include personalized onboarding calls to help you get set up for success.",
4387
+ "Yes! All paid plans include onboarding guides and video tutorials. Pro and Business plans include personalized onboarding calls to help you get set up for success.",
4388
4388
  ),
4389
4389
  category: "support",
4390
4390
  order: 2,
@@ -4392,7 +4392,7 @@ export const faqData: Partial<Faq>[] = [
4392
4392
  {
4393
4393
  question: "Can I request new features?",
4394
4394
  answer: createParagraph(
4395
- "Absolutely! We love hearing from customers. Submit feature requests through our feedback portal. Many of our most popular features came directly from customer suggestions.",
4395
+ "Absolutely! Submit feature requests through our feedback portal. Many of our most popular features came directly from customer suggestions. We prioritize based on demand.",
4396
4396
  ),
4397
4397
  category: "support",
4398
4398
  order: 3,
@@ -4400,17 +4400,17 @@ export const faqData: Partial<Faq>[] = [
4400
4400
 
4401
4401
  // General FAQs
4402
4402
  {
4403
- question: "What makes DirectoryHub different from other platforms?",
4403
+ question: "What makes SaaSify different from other platforms?",
4404
4404
  answer: createParagraph(
4405
- "DirectoryHub is purpose-built for directories. Unlike general website builders or generic CMS platforms, every feature is designed specifically for the directory use case\u2014from listing schemas to monetization tools.",
4405
+ "SaaSify brings together the best of project management, CRM, and collaboration tools in one unified platform designed for how modern teams actually work. No more app switching or lost context.",
4406
4406
  ),
4407
4407
  category: "general",
4408
4408
  order: 1,
4409
4409
  },
4410
4410
  {
4411
- question: "Can I use DirectoryHub for multiple directories?",
4411
+ question: "Can I use SaaSify for multiple teams?",
4412
4412
  answer: createParagraph(
4413
- "Yes! Our Professional and Enterprise plans support multiple directories under one account. Manage all your directories from a single dashboard with unified billing and analytics.",
4413
+ "Yes! Our Business plan supports unlimited teams and workspaces with unified billing and cross-team visibility. Perfect for organizations with multiple departments.",
4414
4414
  ),
4415
4415
  category: "general",
4416
4416
  order: 2,
@@ -4418,22 +4418,21 @@ export const faqData: Partial<Faq>[] = [
4418
4418
  {
4419
4419
  question: "How do I contact sales?",
4420
4420
  answer: createParagraph(
4421
- "For sales inquiries, contact us at sales@directoryhub.com or book a demo through our website. Our team will help you understand which plan and features are right for your needs.",
4421
+ "For sales inquiries, contact us at sales@saasify.com or book a demo through our website. Our team will help you understand which plan and features are right for your needs.",
4422
4422
  ),
4423
4423
  category: "general",
4424
4424
  order: 3,
4425
4425
  },
4426
4426
  ]
4427
4427
  `,
4428
- "marketing/payload/src/endpoints/seed/directoryhub/features/automation.ts": 'import type { Page } from "@/payload-types"\nimport { createParagraph } from "../richtext-helper"\n\nexport const automationPage = (): Partial<Page> => {\n return {\n slug: "features/automation",\n _status: "published",\n title: "Automation",\n hero: {\n type: "lowImpact",\n richText: {\n root: {\n type: "root",\n children: [\n {\n type: "heading",\n children: [\n {\n type: "text",\n detail: 0,\n format: 0,\n mode: "normal",\n style: "",\n text: "Automate the busywork, focus on growth",\n version: 1,\n },\n ],\n direction: "ltr" as const,\n format: "" as const,\n indent: 0,\n tag: "h1",\n version: 1,\n },\n {\n type: "paragraph",\n children: [\n {\n type: "text",\n detail: 0,\n format: 0,\n mode: "normal",\n style: "",\n text: "Set up workflows that handle repetitive tasks automatically. From email notifications to listing expirations, let automation do the heavy lifting.",\n version: 1,\n },\n ],\n direction: "ltr" as const,\n format: "" as const,\n indent: 0,\n textFormat: 0,\n version: 1,\n },\n ],\n direction: "ltr" as const,\n format: "" as const,\n indent: 0,\n version: 1,\n },\n },\n links: [\n {\n link: {\n type: "custom",\n appearance: "default",\n label: "Start automating",\n url: "/sign-up",\n },\n },\n {\n link: {\n type: "custom",\n appearance: "outline",\n label: "See automation examples",\n url: "/features",\n },\n },\n ],\n },\n layout: [\n {\n blockType: "featureShowcase",\n blockName: "Email Automation",\n label: "Email Workflows",\n headline: "Automated emails that nurture and convert",\n description: createParagraph(\n "Welcome new users, remind about expiring listings, confirm submissions, and celebrate milestones. Set up email sequences once and let them run automatically.",\n ),\n link: {\n type: "custom",\n label: "Learn about email automation",\n url: "/features",\n appearance: "default",\n },\n imagePosition: "right",\n features: [\n { text: "Welcome email sequences" },\n { text: "Listing expiration reminders" },\n { text: "Submission confirmation emails" },\n { text: "Payment receipt notifications" },\n ],\n },\n {\n blockType: "featureShowcase",\n blockName: "Workflow Automation",\n label: "Smart Workflows",\n headline: "Build custom workflows without code",\n description: createParagraph(\n "Create trigger-based workflows that respond to events in your directory. When a listing is submitted, approved, or expires, trigger the right actions automatically.",\n ),\n link: {\n type: "custom",\n label: "Explore workflow builder",\n url: "/features",\n appearance: "default",\n },\n imagePosition: "left",\n features: [\n { text: "Visual workflow builder" },\n { text: "Event-based triggers" },\n { text: "Conditional logic branches" },\n { text: "Third-party integrations" },\n ],\n },\n {\n blockType: "featureShowcase",\n blockName: "Scheduled Tasks",\n label: "Scheduled Actions",\n headline: "Set it and forget it with scheduled tasks",\n description: createParagraph(\n "Schedule recurring tasks like content cleanup, report generation, and backup exports. Keep your directory running smoothly without manual intervention.",\n ),\n link: {\n type: "custom",\n label: "See scheduling options",\n url: "/features",\n appearance: "default",\n },\n imagePosition: "right",\n features: [\n { text: "Automated content expiration" },\n { text: "Scheduled report emails" },\n { text: "Recurring backup exports" },\n { text: "Periodic data cleanup" },\n ],\n },\n {\n blockType: "bentoFeatures",\n blockName: "Automation Features",\n heading: "Automation that saves hours every week",\n subheading: "Focus on growing your directory while automation handles the rest",\n features: [\n {\n size: "small",\n style: "gradient",\n icon: "zap",\n stat: "10x",\n title: "Faster Operations",\n description: createParagraph("Automate repetitive tasks instantly."),\n },\n {\n size: "small",\n style: "accent",\n icon: "settings",\n title: "No-Code Setup",\n description: createParagraph("Build automations without developers."),\n },\n {\n size: "small",\n style: "default",\n icon: "rocket",\n title: "Instant Triggers",\n description: createParagraph("React to events in real-time."),\n },\n {\n size: "small",\n style: "primary",\n icon: "layers",\n title: "Webhook Support",\n description: createParagraph("Connect to any external service."),\n },\n {\n size: "small",\n style: "default",\n icon: "database",\n title: "Action History",\n description: createParagraph("Full logs of all automated actions."),\n },\n {\n size: "small",\n style: "default",\n icon: "shield",\n title: "Fail-Safe Design",\n description: createParagraph("Automatic retries and error handling."),\n },\n ],\n },\n {\n blockType: "proofBanner",\n blockName: "CTA Section",\n style: "centered",\n headline: "Let automation do the work",\n subtext: "Set up workflows once and save hours every week. Start automating today.",\n links: [\n {\n link: {\n type: "custom",\n appearance: "default",\n label: "Get started free",\n url: "/sign-up",\n },\n },\n {\n link: {\n type: "custom",\n appearance: "outline",\n label: "See all features",\n url: "/features",\n },\n },\n ],\n },\n ],\n meta: {\n description:\n "Automate your directory operations with smart workflows, email sequences, and scheduled tasks. Save hours every week without writing code.",\n title: "Automation Features \u2014 DirectoryHub Workflow Tools",\n },\n }\n}\n',
4429
- "marketing/payload/src/endpoints/seed/directoryhub/features/custom-fields.ts": `import type { Page } from "@/payload-types"
4428
+ "marketing/payload/src/endpoints/seed/directoryhub/features/automation.ts": `import type { Page } from "@/payload-types"
4430
4429
  import { createParagraph } from "../richtext-helper"
4431
4430
 
4432
- export const customFieldsPage = (): Partial<Page> => {
4431
+ export const automationPage = (): Partial<Page> => {
4433
4432
  return {
4434
- slug: "features/custom-fields",
4433
+ slug: "features/automation",
4435
4434
  _status: "published",
4436
- title: "Custom Fields",
4435
+ title: "Automation",
4437
4436
  hero: {
4438
4437
  type: "lowImpact",
4439
4438
  richText: {
@@ -4449,7 +4448,7 @@ export const customFieldsPage = (): Partial<Page> => {
4449
4448
  format: 0,
4450
4449
  mode: "normal",
4451
4450
  style: "",
4452
- text: "Flexible schemas for any directory type",
4451
+ text: "Eliminate busywork with smart automation",
4453
4452
  version: 1,
4454
4453
  },
4455
4454
  ],
@@ -4468,7 +4467,7 @@ export const customFieldsPage = (): Partial<Page> => {
4468
4467
  format: 0,
4469
4468
  mode: "normal",
4470
4469
  style: "",
4471
- text: "Create custom fields that match your niche perfectly. Text, numbers, dropdowns, images, locations, and more. Build the exact data structure your directory needs.",
4470
+ text: "Build powerful automations without code. Automate approvals, notifications, data entry, and repetitive tasks. Let your team focus on work that matters.",
4472
4471
  version: 1,
4473
4472
  },
4474
4473
  ],
@@ -4490,7 +4489,7 @@ export const customFieldsPage = (): Partial<Page> => {
4490
4489
  link: {
4491
4490
  type: "custom",
4492
4491
  appearance: "default",
4493
- label: "Start building",
4492
+ label: "Start free trial",
4494
4493
  url: "/sign-up",
4495
4494
  },
4496
4495
  },
@@ -4498,7 +4497,7 @@ export const customFieldsPage = (): Partial<Page> => {
4498
4497
  link: {
4499
4498
  type: "custom",
4500
4499
  appearance: "outline",
4501
- label: "See field types",
4500
+ label: "See automation examples",
4502
4501
  url: "/features",
4503
4502
  },
4504
4503
  },
@@ -4507,118 +4506,348 @@ export const customFieldsPage = (): Partial<Page> => {
4507
4506
  layout: [
4508
4507
  {
4509
4508
  blockType: "featureShowcase",
4510
- blockName: "Field Types",
4511
- label: "Rich Field Types",
4512
- headline: "Every field type you need",
4509
+ blockName: "Visual Builder",
4510
+ label: "No-Code Builder",
4511
+ headline: "Build automations visually, no code required",
4513
4512
  description: createParagraph(
4514
- "From simple text and numbers to complex relationships and media galleries. Choose from 20+ field types to capture exactly the data your directory requires.",
4513
+ "Our visual workflow builder makes automation accessible to everyone. Drag and drop triggers, conditions, and actions to create powerful automations in minutes.",
4515
4514
  ),
4516
4515
  link: {
4517
4516
  type: "custom",
4518
- label: "Explore field types",
4519
- url: "/features",
4517
+ label: "Try the workflow builder",
4518
+ url: "/sign-up",
4520
4519
  appearance: "default",
4521
4520
  },
4522
4521
  imagePosition: "right",
4523
4522
  features: [
4524
- { text: "Text, rich text, and numbers" },
4525
- { text: "Dropdowns and multi-select" },
4526
- { text: "Images and file uploads" },
4527
- { text: "Location and map fields" },
4523
+ { text: "Drag-and-drop interface" },
4524
+ { text: "Pre-built templates" },
4525
+ { text: "Test before you deploy" },
4526
+ { text: "Version history" },
4528
4527
  ],
4529
4528
  },
4530
4529
  {
4531
4530
  blockType: "featureShowcase",
4532
- blockName: "Dynamic Filtering",
4533
- label: "Smart Filters",
4534
- headline: "Custom fields power smart filtering",
4531
+ blockName: "Triggers & Actions",
4532
+ label: "Smart Triggers",
4533
+ headline: "React to any event automatically",
4535
4534
  description: createParagraph(
4536
- "Every custom field becomes a filterable attribute. Users can search and filter by any field you create, making it easy to find exactly what they're looking for.",
4535
+ "Trigger automations based on form submissions, status changes, dates, or custom conditions. Chain multiple actions together for complex workflows.",
4537
4536
  ),
4538
4537
  link: {
4539
4538
  type: "custom",
4540
- label: "See filtering in action",
4539
+ label: "Explore triggers",
4541
4540
  url: "/features",
4542
4541
  appearance: "default",
4543
4542
  },
4544
4543
  imagePosition: "left",
4545
4544
  features: [
4546
- { text: "Automatic filter generation" },
4547
- { text: "Range sliders for numbers" },
4548
- { text: "Multi-select tag filters" },
4549
- { text: "Location-based search" },
4545
+ { text: "Event-based triggers" },
4546
+ { text: "Scheduled automations" },
4547
+ { text: "Conditional logic" },
4548
+ { text: "Multi-step workflows" },
4549
+ ],
4550
+ },
4551
+ {
4552
+ blockType: "featureShowcase",
4553
+ blockName: "Cross-App Automation",
4554
+ label: "Connected Actions",
4555
+ headline: "Automate across all your tools",
4556
+ description: createParagraph(
4557
+ "Connect automations to Slack, email, Salesforce, and 100+ other tools. When something happens in SaaSify, trigger actions anywhere in your tech stack.",
4558
+ ),
4559
+ link: {
4560
+ type: "custom",
4561
+ label: "See integrations",
4562
+ url: "/features/integrations",
4563
+ appearance: "default",
4564
+ },
4565
+ imagePosition: "right",
4566
+ features: [
4567
+ { text: "100+ app integrations" },
4568
+ { text: "Custom webhooks" },
4569
+ { text: "API actions" },
4570
+ { text: "Two-way data sync" },
4571
+ ],
4572
+ },
4573
+ {
4574
+ blockType: "bentoFeatures",
4575
+ blockName: "Automation Features",
4576
+ heading: "Automation that saves hours every week",
4577
+ subheading: "Focus on meaningful work while automation handles the rest",
4578
+ features: [
4579
+ {
4580
+ size: "small",
4581
+ style: "gradient",
4582
+ icon: "zap",
4583
+ stat: "10x",
4584
+ title: "Faster Operations",
4585
+ description: createParagraph("Automate repetitive tasks instantly."),
4586
+ },
4587
+ {
4588
+ size: "small",
4589
+ style: "accent",
4590
+ icon: "settings",
4591
+ title: "No-Code Setup",
4592
+ description: createParagraph("Build automations without developers."),
4593
+ },
4594
+ {
4595
+ size: "small",
4596
+ style: "default",
4597
+ icon: "rocket",
4598
+ title: "Instant Triggers",
4599
+ description: createParagraph("React to events in real-time."),
4600
+ },
4601
+ {
4602
+ size: "small",
4603
+ style: "primary",
4604
+ icon: "layers",
4605
+ title: "Webhook Support",
4606
+ description: createParagraph("Connect to any external service."),
4607
+ },
4608
+ {
4609
+ size: "small",
4610
+ style: "default",
4611
+ icon: "database",
4612
+ title: "Action History",
4613
+ description: createParagraph("Full logs of all automated actions."),
4614
+ },
4615
+ {
4616
+ size: "small",
4617
+ style: "default",
4618
+ icon: "shield",
4619
+ title: "Fail-Safe Design",
4620
+ description: createParagraph("Automatic retries and error handling."),
4621
+ },
4622
+ ],
4623
+ },
4624
+ {
4625
+ blockType: "proofBanner",
4626
+ blockName: "CTA Section",
4627
+ style: "centered",
4628
+ headline: "Let automation do the work",
4629
+ subtext: "Set up workflows once and save hours every week. Start automating today.",
4630
+ links: [
4631
+ {
4632
+ link: {
4633
+ type: "custom",
4634
+ appearance: "default",
4635
+ label: "Start free trial",
4636
+ url: "/sign-up",
4637
+ },
4638
+ },
4639
+ {
4640
+ link: {
4641
+ type: "custom",
4642
+ appearance: "outline",
4643
+ label: "See all features",
4644
+ url: "/features",
4645
+ },
4646
+ },
4647
+ ],
4648
+ },
4649
+ ],
4650
+ meta: {
4651
+ description:
4652
+ "Build powerful automations without code. Automate approvals, notifications, and cross-app workflows with SaaSify's visual automation builder.",
4653
+ title: "Automation \u2014 SaaSify No-Code Workflow Builder",
4654
+ },
4655
+ }
4656
+ }
4657
+ `,
4658
+ "marketing/payload/src/endpoints/seed/directoryhub/features/custom-fields.ts": `import type { Page } from "@/payload-types"
4659
+ import { createParagraph } from "../richtext-helper"
4660
+
4661
+ export const workflowsPage = (): Partial<Page> => {
4662
+ return {
4663
+ slug: "features/workflows",
4664
+ _status: "published",
4665
+ title: "Workflows",
4666
+ hero: {
4667
+ type: "lowImpact",
4668
+ richText: {
4669
+ root: {
4670
+ type: "root",
4671
+ children: [
4672
+ {
4673
+ type: "heading",
4674
+ children: [
4675
+ {
4676
+ type: "text",
4677
+ detail: 0,
4678
+ format: 0,
4679
+ mode: "normal",
4680
+ style: "",
4681
+ text: "Build custom processes without code",
4682
+ version: 1,
4683
+ },
4684
+ ],
4685
+ direction: "ltr" as const,
4686
+ format: "" as const,
4687
+ indent: 0,
4688
+ tag: "h1",
4689
+ version: 1,
4690
+ },
4691
+ {
4692
+ type: "paragraph",
4693
+ children: [
4694
+ {
4695
+ type: "text",
4696
+ detail: 0,
4697
+ format: 0,
4698
+ mode: "normal",
4699
+ style: "",
4700
+ text: "Create workflows that match exactly how your team works. Visual builders, conditional logic, and templates make it easy to digitize any process.",
4701
+ version: 1,
4702
+ },
4703
+ ],
4704
+ direction: "ltr" as const,
4705
+ format: "" as const,
4706
+ indent: 0,
4707
+ textFormat: 0,
4708
+ version: 1,
4709
+ },
4710
+ ],
4711
+ direction: "ltr" as const,
4712
+ format: "" as const,
4713
+ indent: 0,
4714
+ version: 1,
4715
+ },
4716
+ },
4717
+ links: [
4718
+ {
4719
+ link: {
4720
+ type: "custom",
4721
+ appearance: "default",
4722
+ label: "Start free trial",
4723
+ url: "/sign-up",
4724
+ },
4725
+ },
4726
+ {
4727
+ link: {
4728
+ type: "custom",
4729
+ appearance: "outline",
4730
+ label: "See workflow templates",
4731
+ url: "/templates",
4732
+ },
4733
+ },
4734
+ ],
4735
+ },
4736
+ layout: [
4737
+ {
4738
+ blockType: "featureShowcase",
4739
+ blockName: "Visual Builder",
4740
+ label: "Workflow Builder",
4741
+ headline: "Design workflows visually",
4742
+ description: createParagraph(
4743
+ "Drag and drop to create multi-step workflows. Add approvals, conditions, notifications, and integrations. See your entire process at a glance.",
4744
+ ),
4745
+ link: {
4746
+ type: "custom",
4747
+ label: "Try the builder",
4748
+ url: "/sign-up",
4749
+ appearance: "default",
4750
+ },
4751
+ imagePosition: "right",
4752
+ features: [
4753
+ { text: "Drag-and-drop interface" },
4754
+ { text: "Multi-step workflows" },
4755
+ { text: "Parallel branches" },
4756
+ { text: "Visual process maps" },
4550
4757
  ],
4551
4758
  },
4552
4759
  {
4553
4760
  blockType: "featureShowcase",
4554
- blockName: "Conditional Logic",
4555
- label: "Conditional Fields",
4556
- headline: "Show fields based on conditions",
4761
+ blockName: "Approvals",
4762
+ label: "Approval Workflows",
4763
+ headline: "Streamline approvals and reviews",
4557
4764
  description: createParagraph(
4558
- "Display different fields based on category, listing type, or user selections. Create smart forms that only show relevant fields to keep the submission process simple.",
4765
+ "Route requests to the right approvers automatically. Set up sequential or parallel approvals, escalations, and delegation rules.",
4559
4766
  ),
4560
4767
  link: {
4561
4768
  type: "custom",
4562
- label: "Learn about conditions",
4769
+ label: "Learn about approvals",
4563
4770
  url: "/features",
4564
4771
  appearance: "default",
4565
4772
  },
4773
+ imagePosition: "left",
4774
+ features: [
4775
+ { text: "Multi-level approvals" },
4776
+ { text: "Automatic escalation" },
4777
+ { text: "Delegation and backup" },
4778
+ { text: "Approval history" },
4779
+ ],
4780
+ },
4781
+ {
4782
+ blockType: "featureShowcase",
4783
+ blockName: "Templates",
4784
+ label: "Workflow Templates",
4785
+ headline: "Start fast with pre-built templates",
4786
+ description: createParagraph(
4787
+ "Choose from dozens of workflow templates for common processes. Customize to fit your needs or build from scratch.",
4788
+ ),
4789
+ link: {
4790
+ type: "custom",
4791
+ label: "Browse templates",
4792
+ url: "/templates",
4793
+ appearance: "default",
4794
+ },
4566
4795
  imagePosition: "right",
4567
4796
  features: [
4568
- { text: "Category-specific fields" },
4569
- { text: "Conditional visibility rules" },
4570
- { text: "Dynamic form sections" },
4571
- { text: "Required field logic" },
4797
+ { text: "50+ workflow templates" },
4798
+ { text: "Onboarding workflows" },
4799
+ { text: "Request and approval flows" },
4800
+ { text: "Project workflows" },
4572
4801
  ],
4573
4802
  },
4574
4803
  {
4575
4804
  blockType: "bentoFeatures",
4576
- blockName: "Custom Field Features",
4577
- heading: "Build any directory schema",
4578
- subheading: "No limitations on what data you can collect and display",
4805
+ blockName: "Workflow Features",
4806
+ heading: "Workflows for any process",
4807
+ subheading: "From simple approvals to complex multi-department processes",
4579
4808
  features: [
4580
4809
  {
4581
4810
  size: "small",
4582
4811
  style: "gradient",
4583
4812
  icon: "layers",
4584
- stat: "20+",
4585
- title: "Field Types",
4586
- description: createParagraph("Every data type you could need."),
4813
+ stat: "50+",
4814
+ title: "Templates",
4815
+ description: createParagraph("Pre-built workflows ready to use."),
4587
4816
  },
4588
4817
  {
4589
4818
  size: "small",
4590
4819
  style: "accent",
4591
4820
  icon: "settings",
4592
- title: "Drag & Drop",
4593
- description: createParagraph("Visual field builder interface."),
4821
+ title: "No-Code Builder",
4822
+ description: createParagraph("Visual workflow design interface."),
4594
4823
  },
4595
4824
  {
4596
4825
  size: "small",
4597
4826
  style: "default",
4598
4827
  icon: "search",
4599
- title: "Searchable",
4600
- description: createParagraph("All fields indexed for search."),
4828
+ title: "Forms & Fields",
4829
+ description: createParagraph("Custom forms for data collection."),
4601
4830
  },
4602
4831
  {
4603
4832
  size: "small",
4604
4833
  style: "primary",
4605
4834
  icon: "database",
4606
- title: "Structured Data",
4607
- description: createParagraph("Automatic schema.org mapping."),
4835
+ title: "Data Routing",
4836
+ description: createParagraph("Route data based on conditions."),
4608
4837
  },
4609
4838
  {
4610
4839
  size: "small",
4611
4840
  style: "default",
4612
4841
  icon: "globe",
4613
- title: "Multi-Language",
4614
- description: createParagraph("Localized field labels and values."),
4842
+ title: "Integrations",
4843
+ description: createParagraph("Connect to 100+ apps."),
4615
4844
  },
4616
4845
  {
4617
4846
  size: "small",
4618
4847
  style: "default",
4619
4848
  icon: "shield",
4620
- title: "Validation Rules",
4621
- description: createParagraph("Required, format, and custom rules."),
4849
+ title: "Audit Trail",
4850
+ description: createParagraph("Complete history of every workflow."),
4622
4851
  },
4623
4852
  ],
4624
4853
  },
@@ -4626,14 +4855,14 @@ export const customFieldsPage = (): Partial<Page> => {
4626
4855
  blockType: "proofBanner",
4627
4856
  blockName: "CTA Section",
4628
4857
  style: "centered",
4629
- headline: "Build your perfect directory schema",
4630
- subtext: "No coding required. Create custom fields in minutes and start collecting data.",
4858
+ headline: "Digitize your processes today",
4859
+ subtext: "Build custom workflows in minutes. No coding required.",
4631
4860
  links: [
4632
4861
  {
4633
4862
  link: {
4634
4863
  type: "custom",
4635
4864
  appearance: "default",
4636
- label: "Start for free",
4865
+ label: "Start free trial",
4637
4866
  url: "/sign-up",
4638
4867
  },
4639
4868
  },
@@ -4650,8 +4879,8 @@ export const customFieldsPage = (): Partial<Page> => {
4650
4879
  ],
4651
4880
  meta: {
4652
4881
  description:
4653
- "Create custom fields for your directory with 20+ field types. Text, numbers, dropdowns, images, locations, and more. Build any schema without code.",
4654
- title: "Custom Fields \u2014 DirectoryHub Flexible Schemas",
4882
+ "Build custom workflows for any process with SaaSify's visual workflow builder. Approvals, forms, conditions, and integrations without code.",
4883
+ title: "Workflows \u2014 SaaSify Custom Process Builder",
4655
4884
  },
4656
4885
  }
4657
4886
  }
@@ -4663,7 +4892,7 @@ export const dashboardPage = (): Partial<Page> => {
4663
4892
  return {
4664
4893
  slug: "features/dashboard",
4665
4894
  _status: "published",
4666
- title: "Admin Dashboard",
4895
+ title: "Dashboard",
4667
4896
  hero: {
4668
4897
  type: "lowImpact",
4669
4898
  richText: {
@@ -4679,7 +4908,7 @@ export const dashboardPage = (): Partial<Page> => {
4679
4908
  format: 0,
4680
4909
  mode: "normal",
4681
4910
  style: "",
4682
- text: "Manage everything from one powerful dashboard",
4911
+ text: "Your unified command center",
4683
4912
  version: 1,
4684
4913
  },
4685
4914
  ],
@@ -4698,7 +4927,7 @@ export const dashboardPage = (): Partial<Page> => {
4698
4927
  format: 0,
4699
4928
  mode: "normal",
4700
4929
  style: "",
4701
- text: "Review submissions, moderate content, track analytics, and manage payments all in one place. Built-in tools help you maintain quality while scaling your directory business.",
4930
+ text: "Everything your team needs in one place. Track projects, monitor progress, manage tasks, and collaborate seamlessly from a single intuitive dashboard.",
4702
4931
  version: 1,
4703
4932
  },
4704
4933
  ],
@@ -4720,7 +4949,7 @@ export const dashboardPage = (): Partial<Page> => {
4720
4949
  link: {
4721
4950
  type: "custom",
4722
4951
  appearance: "default",
4723
- label: "Try the dashboard",
4952
+ label: "Start free trial",
4724
4953
  url: "/sign-up",
4725
4954
  },
4726
4955
  },
@@ -4728,8 +4957,8 @@ export const dashboardPage = (): Partial<Page> => {
4728
4957
  link: {
4729
4958
  type: "custom",
4730
4959
  appearance: "outline",
4731
- label: "See a demo",
4732
- url: "/contact",
4960
+ label: "Watch demo",
4961
+ url: "/demo",
4733
4962
  },
4734
4963
  },
4735
4964
  ],
@@ -4737,75 +4966,75 @@ export const dashboardPage = (): Partial<Page> => {
4737
4966
  layout: [
4738
4967
  {
4739
4968
  blockType: "featureShowcase",
4740
- blockName: "Content Moderation",
4741
- label: "Moderation Tools",
4742
- headline: "Review and approve submissions effortlessly",
4969
+ blockName: "Project Overview",
4970
+ label: "Project Management",
4971
+ headline: "See all your projects at a glance",
4743
4972
  description: createParagraph(
4744
- "Submission queues, bulk actions, and smart filters make content moderation fast. Approve, reject, or request changes with one click. Keep your directory quality high without the manual overhead.",
4973
+ "Get a bird's-eye view of every project, task, and deadline. Customizable views let you organize work the way that makes sense for your team.",
4745
4974
  ),
4746
4975
  link: {
4747
4976
  type: "custom",
4748
- label: "See moderation tools",
4977
+ label: "See project views",
4749
4978
  url: "/features",
4750
4979
  appearance: "default",
4751
4980
  },
4752
4981
  imagePosition: "right",
4753
4982
  features: [
4754
- { text: "Submission review queues" },
4755
- { text: "Bulk approve and reject" },
4756
- { text: "Request changes workflow" },
4757
- { text: "Automated spam detection" },
4983
+ { text: "List, board, and calendar views" },
4984
+ { text: "Custom project templates" },
4985
+ { text: "Milestone tracking" },
4986
+ { text: "Dependencies and blockers" },
4758
4987
  ],
4759
4988
  },
4760
4989
  {
4761
4990
  blockType: "featureShowcase",
4762
- blockName: "Analytics",
4763
- label: "Real-Time Analytics",
4764
- headline: "Track what matters with built-in analytics",
4991
+ blockName: "Task Management",
4992
+ label: "Task Tracking",
4993
+ headline: "Never lose track of a task again",
4765
4994
  description: createParagraph(
4766
- "See how your directory is performing at a glance. Track page views, listing engagement, conversion rates, and revenue metrics. Export reports or integrate with your favorite analytics tools.",
4995
+ "Create, assign, and track tasks with ease. Set priorities, due dates, and assignees. Get notifications when things change so nothing falls through the cracks.",
4767
4996
  ),
4768
4997
  link: {
4769
4998
  type: "custom",
4770
- label: "Explore analytics",
4999
+ label: "Explore task features",
4771
5000
  url: "/features",
4772
5001
  appearance: "default",
4773
5002
  },
4774
5003
  imagePosition: "left",
4775
5004
  features: [
4776
- { text: "Traffic and engagement metrics" },
4777
- { text: "Revenue and subscription tracking" },
4778
- { text: "Listing performance insights" },
4779
- { text: "Custom report generation" },
5005
+ { text: "Drag-and-drop task management" },
5006
+ { text: "Priority levels and labels" },
5007
+ { text: "Due dates and reminders" },
5008
+ { text: "Subtasks and checklists" },
4780
5009
  ],
4781
5010
  },
4782
5011
  {
4783
5012
  blockType: "featureShowcase",
4784
- blockName: "User Management",
4785
- label: "User Administration",
4786
- headline: "Manage users and permissions with ease",
5013
+ blockName: "Team Collaboration",
5014
+ label: "Team Features",
5015
+ headline: "Collaborate in real-time with your team",
4787
5016
  description: createParagraph(
4788
- "Control who can do what in your directory. Set up team members with different roles, manage listing owners, and handle user support all from the dashboard.",
5017
+ "Comments, mentions, and activity feeds keep everyone in sync. Share files, leave feedback, and make decisions together without leaving the dashboard.",
4789
5018
  ),
4790
5019
  link: {
4791
5020
  type: "custom",
4792
- label: "Learn about permissions",
5021
+ label: "Learn about collaboration",
4793
5022
  url: "/features",
4794
5023
  appearance: "default",
4795
5024
  },
4796
5025
  imagePosition: "right",
4797
5026
  features: [
4798
- { text: "Role-based access control" },
4799
- { text: "Team member management" },
4800
- { text: "User activity logs" },
4801
- { text: "Account suspension tools" },
5027
+ { text: "Comments and @mentions" },
5028
+ { text: "File sharing and attachments" },
5029
+ { text: "Activity feed and updates" },
5030
+ { text: "Team workload view" },
4802
5031
  ],
4803
5032
  },
4804
5033
  {
4805
5034
  blockType: "bentoFeatures",
4806
5035
  blockName: "Dashboard Features",
4807
- heading: "Everything you need to run your directory",
4808
- subheading: "A complete admin experience without the complexity",
5036
+ heading: "Everything your team needs",
5037
+ subheading: "A complete workspace without the complexity",
4809
5038
  features: [
4810
5039
  {
4811
5040
  size: "small",
@@ -4826,21 +5055,21 @@ export const dashboardPage = (): Partial<Page> => {
4826
5055
  style: "default",
4827
5056
  icon: "search",
4828
5057
  title: "Global Search",
4829
- description: createParagraph("Find any listing, user, or setting instantly."),
5058
+ description: createParagraph("Find any project, task, or document instantly."),
4830
5059
  },
4831
5060
  {
4832
5061
  size: "small",
4833
5062
  style: "primary",
4834
5063
  icon: "shield",
4835
5064
  title: "Activity Logs",
4836
- description: createParagraph("Full audit trail of all admin actions."),
5065
+ description: createParagraph("Full audit trail of all team activity."),
4837
5066
  },
4838
5067
  {
4839
5068
  size: "small",
4840
5069
  style: "default",
4841
5070
  icon: "settings",
4842
- title: "Settings Hub",
4843
- description: createParagraph("Configure every aspect of your directory."),
5071
+ title: "Customization",
5072
+ description: createParagraph("Personalize your workspace and views."),
4844
5073
  },
4845
5074
  {
4846
5075
  size: "small",
@@ -4855,14 +5084,14 @@ export const dashboardPage = (): Partial<Page> => {
4855
5084
  blockType: "proofBanner",
4856
5085
  blockName: "CTA Section",
4857
5086
  style: "centered",
4858
- headline: "Take control of your directory",
4859
- subtext: "Powerful admin tools that scale with your business. Start managing today.",
5087
+ headline: "Get your team organized today",
5088
+ subtext: "A powerful dashboard that scales with your business. Free to start.",
4860
5089
  links: [
4861
5090
  {
4862
5091
  link: {
4863
5092
  type: "custom",
4864
5093
  appearance: "default",
4865
- label: "Get started free",
5094
+ label: "Start free trial",
4866
5095
  url: "/sign-up",
4867
5096
  },
4868
5097
  },
@@ -4870,8 +5099,8 @@ export const dashboardPage = (): Partial<Page> => {
4870
5099
  link: {
4871
5100
  type: "custom",
4872
5101
  appearance: "outline",
4873
- label: "Request a demo",
4874
- url: "/contact",
5102
+ label: "Watch demo",
5103
+ url: "/demo",
4875
5104
  },
4876
5105
  },
4877
5106
  ],
@@ -4879,24 +5108,265 @@ export const dashboardPage = (): Partial<Page> => {
4879
5108
  ],
4880
5109
  meta: {
4881
5110
  description:
4882
- "Manage your directory with a powerful admin dashboard. Content moderation, analytics, user management, and more in one intuitive interface.",
4883
- title: "Admin Dashboard \u2014 DirectoryHub Management Tools",
5111
+ "Manage projects, track tasks, and collaborate with your team from one unified dashboard. Intuitive interface, powerful features, no complexity.",
5112
+ title: "Dashboard \u2014 SaaSify Team Command Center",
4884
5113
  },
4885
5114
  }
4886
5115
  }
4887
5116
  `,
4888
- "marketing/payload/src/endpoints/seed/directoryhub/features/index.ts": 'export { templatesPage } from "./templates"\nexport { monetizationPage } from "./monetization"\nexport { seoPage } from "./seo"\nexport { dashboardPage } from "./dashboard"\nexport { automationPage } from "./automation"\nexport { customFieldsPage } from "./custom-fields"\n',
4889
- "marketing/payload/src/endpoints/seed/directoryhub/features/monetization.ts": 'import type { Page } from "@/payload-types"\nimport { createParagraph } from "../richtext-helper"\n\nexport const monetizationPage = (): Partial<Page> => {\n return {\n slug: "features/monetization",\n _status: "published",\n title: "Monetization",\n hero: {\n type: "lowImpact",\n richText: {\n root: {\n type: "root",\n children: [\n {\n type: "heading",\n children: [\n {\n type: "text",\n detail: 0,\n format: 0,\n mode: "normal",\n style: "",\n text: "Turn your directory into a revenue machine",\n version: 1,\n },\n ],\n direction: "ltr" as const,\n format: "" as const,\n indent: 0,\n tag: "h1",\n version: 1,\n },\n {\n type: "paragraph",\n children: [\n {\n type: "text",\n detail: 0,\n format: 0,\n mode: "normal",\n style: "",\n text: "Built-in payment processing, subscription management, and premium placements. Start earning from day one without writing payment code.",\n version: 1,\n },\n ],\n direction: "ltr" as const,\n format: "" as const,\n indent: 0,\n textFormat: 0,\n version: 1,\n },\n ],\n direction: "ltr" as const,\n format: "" as const,\n indent: 0,\n version: 1,\n },\n },\n links: [\n {\n link: {\n type: "custom",\n appearance: "default",\n label: "Start monetizing",\n url: "/sign-up",\n },\n },\n {\n link: {\n type: "custom",\n appearance: "outline",\n label: "See pricing",\n url: "/pricing",\n },\n },\n ],\n },\n layout: [\n {\n blockType: "featureShowcase",\n blockName: "Subscription Tiers",\n label: "Subscription Management",\n headline: "Create recurring revenue with subscription tiers",\n description: createParagraph(\n "Set up multiple subscription tiers with different features and pricing. Let businesses choose the plan that fits their needs while you collect recurring payments automatically.",\n ),\n link: {\n type: "custom",\n label: "Learn about subscriptions",\n url: "/pricing",\n appearance: "default",\n },\n imagePosition: "right",\n features: [\n { text: "Unlimited subscription tiers" },\n { text: "Annual and monthly billing" },\n { text: "Free trial periods" },\n { text: "Automatic renewals" },\n ],\n },\n {\n blockType: "featureShowcase",\n blockName: "Featured Placements",\n label: "Premium Placements",\n headline: "Sell premium visibility",\n description: createParagraph(\n "Offer featured spots, homepage placements, and category highlights. Businesses pay for premium visibility, you collect the revenue. Simple pricing, instant upgrades.",\n ),\n link: {\n type: "custom",\n label: "Explore placement options",\n url: "/features",\n appearance: "default",\n },\n imagePosition: "left",\n features: [\n { text: "Featured listing badges" },\n { text: "Homepage spotlight sections" },\n { text: "Category top placements" },\n { text: "Search result boosting" },\n ],\n },\n {\n blockType: "featureShowcase",\n blockName: "Payment Processing",\n label: "Stripe Integration",\n headline: "Payments powered by Stripe",\n description: createParagraph(\n "Secure payment processing with Stripe handles everything from card payments to invoicing. Accept payments globally with support for 135+ currencies and dozens of payment methods.",\n ),\n link: {\n type: "custom",\n label: "View payment options",\n url: "/features",\n appearance: "default",\n },\n imagePosition: "right",\n features: [\n { text: "Credit cards and digital wallets" },\n { text: "Automatic invoicing" },\n { text: "135+ currencies supported" },\n { text: "PCI compliant security" },\n ],\n },\n {\n blockType: "bentoFeatures",\n blockName: "Revenue Features",\n heading: "Everything you need to generate revenue",\n subheading: "From one-time payments to complex subscription models",\n features: [\n {\n size: "small",\n style: "gradient",\n icon: "dollarSign",\n stat: "$0",\n title: "Setup fees",\n description: createParagraph("Start collecting payments with no upfront costs."),\n },\n {\n size: "small",\n style: "accent",\n icon: "zap",\n title: "Instant payouts",\n description: createParagraph("Get paid directly to your bank account."),\n },\n {\n size: "small",\n style: "default",\n icon: "shield",\n title: "Fraud protection",\n description: createParagraph("Built-in fraud detection and prevention."),\n },\n {\n size: "small",\n style: "primary",\n icon: "barChart",\n title: "Revenue analytics",\n description: createParagraph("Track MRR, churn, and growth metrics."),\n },\n {\n size: "small",\n style: "default",\n icon: "globe",\n title: "Global payments",\n description: createParagraph("Accept payments from anywhere in the world."),\n },\n {\n size: "small",\n style: "default",\n icon: "settings",\n title: "Tax handling",\n description: createParagraph("Automatic tax calculation and collection."),\n },\n ],\n },\n {\n blockType: "proofBanner",\n blockName: "CTA Section",\n style: "centered",\n headline: "Start generating revenue today",\n subtext:\n "Connect Stripe in minutes and start accepting payments. No payment code to write.",\n links: [\n {\n link: {\n type: "custom",\n appearance: "default",\n label: "Get started free",\n url: "/sign-up",\n },\n },\n {\n link: {\n type: "custom",\n appearance: "outline",\n label: "Talk to sales",\n url: "/contact",\n },\n },\n ],\n },\n ],\n meta: {\n description:\n "Monetize your directory with built-in payments, subscriptions, and premium placements. Stripe integration, automatic invoicing, and revenue analytics included.",\n title: "Monetization Features \u2014 DirectoryHub Revenue Tools",\n },\n }\n}\n',
4890
- "marketing/payload/src/endpoints/seed/directoryhub/features/seo.ts": `import type { Page } from "@/payload-types"
5117
+ "marketing/payload/src/endpoints/seed/directoryhub/features/index.ts": 'export { integrationsPage } from "./templates"\nexport { analyticsPage } from "./monetization"\nexport { securityPage } from "./seo"\nexport { dashboardPage } from "./dashboard"\nexport { automationPage } from "./automation"\nexport { workflowsPage } from "./custom-fields"\n',
5118
+ "marketing/payload/src/endpoints/seed/directoryhub/features/monetization.ts": `import type { Page } from "@/payload-types"
4891
5119
  import { createParagraph } from "../richtext-helper"
4892
5120
 
4893
- export const seoPage = (): Partial<Page> => {
5121
+ export const analyticsPage = (): Partial<Page> => {
5122
+ return {
5123
+ slug: "features/analytics",
5124
+ _status: "published",
5125
+ title: "Analytics & Reporting",
5126
+ hero: {
5127
+ type: "lowImpact",
5128
+ richText: {
5129
+ root: {
5130
+ type: "root",
5131
+ children: [
5132
+ {
5133
+ type: "heading",
5134
+ children: [
5135
+ {
5136
+ type: "text",
5137
+ detail: 0,
5138
+ format: 0,
5139
+ mode: "normal",
5140
+ style: "",
5141
+ text: "Turn data into actionable insights",
5142
+ version: 1,
5143
+ },
5144
+ ],
5145
+ direction: "ltr" as const,
5146
+ format: "" as const,
5147
+ indent: 0,
5148
+ tag: "h1",
5149
+ version: 1,
5150
+ },
5151
+ {
5152
+ type: "paragraph",
5153
+ children: [
5154
+ {
5155
+ type: "text",
5156
+ detail: 0,
5157
+ format: 0,
5158
+ mode: "normal",
5159
+ style: "",
5160
+ text: "Real-time dashboards, custom reports, and automated insights help you make data-driven decisions. Track the metrics that matter without spreadsheet chaos.",
5161
+ version: 1,
5162
+ },
5163
+ ],
5164
+ direction: "ltr" as const,
5165
+ format: "" as const,
5166
+ indent: 0,
5167
+ textFormat: 0,
5168
+ version: 1,
5169
+ },
5170
+ ],
5171
+ direction: "ltr" as const,
5172
+ format: "" as const,
5173
+ indent: 0,
5174
+ version: 1,
5175
+ },
5176
+ },
5177
+ links: [
5178
+ {
5179
+ link: {
5180
+ type: "custom",
5181
+ appearance: "default",
5182
+ label: "Start free trial",
5183
+ url: "/sign-up",
5184
+ },
5185
+ },
5186
+ {
5187
+ link: {
5188
+ type: "custom",
5189
+ appearance: "outline",
5190
+ label: "See demo",
5191
+ url: "/demo",
5192
+ },
5193
+ },
5194
+ ],
5195
+ },
5196
+ layout: [
5197
+ {
5198
+ blockType: "featureShowcase",
5199
+ blockName: "Real-Time Dashboards",
5200
+ label: "Live Dashboards",
5201
+ headline: "See what's happening right now",
5202
+ description: createParagraph(
5203
+ "Real-time dashboards update instantly as your team works. Track key metrics, monitor progress, and spot trends the moment they emerge.",
5204
+ ),
5205
+ link: {
5206
+ type: "custom",
5207
+ label: "See dashboard examples",
5208
+ url: "/demo",
5209
+ appearance: "default",
5210
+ },
5211
+ imagePosition: "right",
5212
+ features: [
5213
+ { text: "Real-time data updates" },
5214
+ { text: "Customizable widgets" },
5215
+ { text: "Team and individual views" },
5216
+ { text: "Mobile-friendly dashboards" },
5217
+ ],
5218
+ },
5219
+ {
5220
+ blockType: "featureShowcase",
5221
+ blockName: "Custom Reports",
5222
+ label: "Reporting Tools",
5223
+ headline: "Build reports that answer your questions",
5224
+ description: createParagraph(
5225
+ "Create custom reports with drag-and-drop simplicity. Filter, group, and visualize your data exactly how you need it. Schedule reports to deliver automatically.",
5226
+ ),
5227
+ link: {
5228
+ type: "custom",
5229
+ label: "Explore report builder",
5230
+ url: "/features",
5231
+ appearance: "default",
5232
+ },
5233
+ imagePosition: "left",
5234
+ features: [
5235
+ { text: "Drag-and-drop report builder" },
5236
+ { text: "Multiple chart types" },
5237
+ { text: "Scheduled report delivery" },
5238
+ { text: "Export to PDF, CSV, Excel" },
5239
+ ],
5240
+ },
5241
+ {
5242
+ blockType: "featureShowcase",
5243
+ blockName: "Team Analytics",
5244
+ label: "Performance Insights",
5245
+ headline: "Understand team performance at a glance",
5246
+ description: createParagraph(
5247
+ "Track productivity, workload distribution, and goal progress. Identify bottlenecks, celebrate wins, and make data-backed decisions about resource allocation.",
5248
+ ),
5249
+ link: {
5250
+ type: "custom",
5251
+ label: "View team analytics",
5252
+ url: "/features",
5253
+ appearance: "default",
5254
+ },
5255
+ imagePosition: "right",
5256
+ features: [
5257
+ { text: "Individual performance metrics" },
5258
+ { text: "Team workload distribution" },
5259
+ { text: "Goal tracking and progress" },
5260
+ { text: "Historical trend analysis" },
5261
+ ],
5262
+ },
5263
+ {
5264
+ blockType: "bentoFeatures",
5265
+ blockName: "Analytics Features",
5266
+ heading: "Analytics that drive results",
5267
+ subheading: "From overview dashboards to granular insights",
5268
+ features: [
5269
+ {
5270
+ size: "small",
5271
+ style: "gradient",
5272
+ icon: "barChart",
5273
+ stat: "50+",
5274
+ title: "Built-in Metrics",
5275
+ description: createParagraph("Pre-configured metrics ready to use."),
5276
+ },
5277
+ {
5278
+ size: "small",
5279
+ style: "accent",
5280
+ icon: "zap",
5281
+ title: "Real-Time",
5282
+ description: createParagraph("Data updates in seconds, not hours."),
5283
+ },
5284
+ {
5285
+ size: "small",
5286
+ style: "default",
5287
+ icon: "search",
5288
+ title: "Data Explorer",
5289
+ description: createParagraph("Query and explore raw data."),
5290
+ },
5291
+ {
5292
+ size: "small",
5293
+ style: "primary",
5294
+ icon: "layout",
5295
+ title: "Custom Views",
5296
+ description: createParagraph("Save and share personalized dashboards."),
5297
+ },
5298
+ {
5299
+ size: "small",
5300
+ style: "default",
5301
+ icon: "database",
5302
+ title: "Data Export",
5303
+ description: createParagraph("Export to any format or tool."),
5304
+ },
5305
+ {
5306
+ size: "small",
5307
+ style: "default",
5308
+ icon: "globe",
5309
+ title: "API Access",
5310
+ description: createParagraph("Pull analytics into your own tools."),
5311
+ },
5312
+ ],
5313
+ },
5314
+ {
5315
+ blockType: "proofBanner",
5316
+ blockName: "CTA Section",
5317
+ style: "centered",
5318
+ headline: "Start making data-driven decisions",
5319
+ subtext:
5320
+ "Real-time dashboards and custom reports included in every plan. No setup required.",
5321
+ links: [
5322
+ {
5323
+ link: {
5324
+ type: "custom",
5325
+ appearance: "default",
5326
+ label: "Start free trial",
5327
+ url: "/sign-up",
5328
+ },
5329
+ },
5330
+ {
5331
+ link: {
5332
+ type: "custom",
5333
+ appearance: "outline",
5334
+ label: "See a demo",
5335
+ url: "/demo",
5336
+ },
5337
+ },
5338
+ ],
5339
+ },
5340
+ ],
5341
+ meta: {
5342
+ description:
5343
+ "Real-time dashboards, custom reports, and team analytics. Make data-driven decisions with SaaSify's powerful analytics and reporting tools.",
5344
+ title: "Analytics & Reporting \u2014 SaaSify Business Intelligence",
5345
+ },
5346
+ }
5347
+ }
5348
+ `,
5349
+ "marketing/payload/src/endpoints/seed/directoryhub/features/seo.ts": 'import type { Page } from "@/payload-types"\nimport { createParagraph } from "../richtext-helper"\n\nexport const securityPage = (): Partial<Page> => {\n return {\n slug: "features/security",\n _status: "published",\n title: "Security & Compliance",\n hero: {\n type: "lowImpact",\n richText: {\n root: {\n type: "root",\n children: [\n {\n type: "heading",\n children: [\n {\n type: "text",\n detail: 0,\n format: 0,\n mode: "normal",\n style: "",\n text: "Enterprise-grade security without the complexity",\n version: 1,\n },\n ],\n direction: "ltr" as const,\n format: "" as const,\n indent: 0,\n tag: "h1",\n version: 1,\n },\n {\n type: "paragraph",\n children: [\n {\n type: "text",\n detail: 0,\n format: 0,\n mode: "normal",\n style: "",\n text: "SOC 2 Type II certified with end-to-end encryption, SSO support, and comprehensive audit logs. Your data is protected by the same standards used by Fortune 500 companies.",\n version: 1,\n },\n ],\n direction: "ltr" as const,\n format: "" as const,\n indent: 0,\n textFormat: 0,\n version: 1,\n },\n ],\n direction: "ltr" as const,\n format: "" as const,\n indent: 0,\n version: 1,\n },\n },\n links: [\n {\n link: {\n type: "custom",\n appearance: "default",\n label: "Start free trial",\n url: "/sign-up",\n },\n },\n {\n link: {\n type: "custom",\n appearance: "outline",\n label: "View security docs",\n url: "/security",\n },\n },\n ],\n },\n layout: [\n {\n blockType: "featureShowcase",\n blockName: "Data Encryption",\n label: "Data Protection",\n headline: "Your data encrypted at rest and in transit",\n description: createParagraph(\n "AES-256 encryption protects your data at rest, while TLS 1.3 secures all data in transit. Your information is protected by the same standards used by financial institutions.",\n ),\n link: {\n type: "custom",\n label: "Learn about encryption",\n url: "/security",\n appearance: "default",\n },\n imagePosition: "right",\n features: [\n { text: "AES-256 encryption at rest" },\n { text: "TLS 1.3 for data in transit" },\n { text: "Encrypted backups" },\n { text: "Key management best practices" },\n ],\n },\n {\n blockType: "featureShowcase",\n blockName: "Access Control",\n label: "Access Management",\n headline: "Granular permissions and SSO support",\n description: createParagraph(\n "Role-based access control lets you define exactly who can see and do what. SAML SSO integration works with Okta, Azure AD, Google Workspace, and other identity providers.",\n ),\n link: {\n type: "custom",\n label: "Explore access controls",\n url: "/security",\n appearance: "default",\n },\n imagePosition: "left",\n features: [\n { text: "Role-based access control (RBAC)" },\n { text: "SAML SSO integration" },\n { text: "Two-factor authentication" },\n { text: "Session management" },\n ],\n },\n {\n blockType: "featureShowcase",\n blockName: "Compliance",\n label: "Compliance & Auditing",\n headline: "Meet compliance requirements with confidence",\n description: createParagraph(\n "SOC 2 Type II certified with comprehensive audit logs and data governance tools. Export reports for auditors and meet GDPR, CCPA, and HIPAA requirements.",\n ),\n link: {\n type: "custom",\n label: "View compliance docs",\n url: "/security",\n appearance: "default",\n },\n imagePosition: "right",\n features: [\n { text: "SOC 2 Type II certified" },\n { text: "GDPR and CCPA compliant" },\n { text: "Comprehensive audit logs" },\n { text: "Data retention controls" },\n ],\n },\n {\n blockType: "bentoFeatures",\n blockName: "Security Features",\n heading: "Security you can trust",\n subheading: "Enterprise-grade protection without enterprise complexity",\n features: [\n {\n size: "small",\n style: "gradient",\n icon: "shield",\n stat: "SOC 2",\n title: "Certified",\n description: createParagraph("Type II certification verified annually."),\n },\n {\n size: "small",\n style: "accent",\n icon: "lock",\n title: "Zero Trust",\n description: createParagraph("Verify every request, every time."),\n },\n {\n size: "small",\n style: "default",\n icon: "globe",\n title: "Global Infrastructure",\n description: createParagraph("Redundant systems across regions."),\n },\n {\n size: "small",\n style: "primary",\n icon: "database",\n title: "Backup & Recovery",\n description: createParagraph("Automated backups with point-in-time recovery."),\n },\n {\n size: "small",\n style: "default",\n icon: "search",\n title: "Threat Detection",\n description: createParagraph("24/7 monitoring for suspicious activity."),\n },\n {\n size: "small",\n style: "default",\n icon: "barChart",\n title: "Security Reports",\n description: createParagraph("Regular penetration testing and audits."),\n },\n ],\n },\n {\n blockType: "proofBanner",\n blockName: "CTA Section",\n style: "centered",\n headline: "Security that scales with you",\n subtext: "Enterprise-grade protection from day one. SOC 2 certified, GDPR compliant.",\n links: [\n {\n link: {\n type: "custom",\n appearance: "default",\n label: "Start free trial",\n url: "/sign-up",\n },\n },\n {\n link: {\n type: "custom",\n appearance: "outline",\n label: "Request security docs",\n url: "/contact",\n },\n },\n ],\n },\n ],\n meta: {\n description:\n "Enterprise-grade security with SOC 2 Type II certification, end-to-end encryption, SSO support, and comprehensive compliance tools.",\n title: "Security & Compliance \u2014 SaaSify Enterprise Protection",\n },\n }\n}\n',
5350
+ "marketing/payload/src/endpoints/seed/directoryhub/features/templates.ts": 'import type { Page } from "@/payload-types"\nimport { createParagraph } from "../richtext-helper"\n\nexport const integrationsPage = (): Partial<Page> => {\n return {\n slug: "features/integrations",\n _status: "published",\n title: "Integrations",\n hero: {\n type: "lowImpact",\n richText: {\n root: {\n type: "root",\n children: [\n {\n type: "heading",\n children: [\n {\n type: "text",\n detail: 0,\n format: 0,\n mode: "normal",\n style: "",\n text: "Connect all your tools in one place",\n version: 1,\n },\n ],\n direction: "ltr" as const,\n format: "" as const,\n indent: 0,\n tag: "h1",\n version: 1,\n },\n {\n type: "paragraph",\n children: [\n {\n type: "text",\n detail: 0,\n format: 0,\n mode: "normal",\n style: "",\n text: "One-click connections to 100+ apps your team already uses. Sync data, automate workflows, and eliminate context switching.",\n version: 1,\n },\n ],\n direction: "ltr" as const,\n format: "" as const,\n indent: 0,\n textFormat: 0,\n version: 1,\n },\n ],\n direction: "ltr" as const,\n format: "" as const,\n indent: 0,\n version: 1,\n },\n },\n links: [\n {\n link: {\n type: "custom",\n appearance: "default",\n label: "Start free trial",\n url: "/sign-up",\n },\n },\n {\n link: {\n type: "custom",\n appearance: "outline",\n label: "View all integrations",\n url: "/integrations",\n },\n },\n ],\n },\n layout: [\n {\n blockType: "featureShowcase",\n blockName: "Native Integrations",\n label: "100+ Integrations",\n headline: "Connect your favorite tools instantly",\n description: createParagraph(\n "Native integrations with Slack, Salesforce, HubSpot, Jira, Notion, Google Workspace, Microsoft 365, and more. Set up in minutes, not days.",\n ),\n link: {\n type: "custom",\n label: "Browse integrations",\n url: "/integrations",\n appearance: "default",\n },\n imagePosition: "right",\n features: [\n { text: "100+ native integrations" },\n { text: "Two-way data sync" },\n { text: "Real-time updates" },\n { text: "No coding required" },\n ],\n },\n {\n blockType: "featureShowcase",\n blockName: "Custom Integrations",\n label: "Developer Tools",\n headline: "Build custom integrations with our API",\n description: createParagraph(\n "REST API and webhooks let you connect any tool or build custom integrations. Comprehensive documentation and SDKs for popular languages.",\n ),\n link: {\n type: "custom",\n label: "View API docs",\n url: "/developers",\n appearance: "default",\n },\n imagePosition: "left",\n features: [\n { text: "RESTful API access" },\n { text: "Custom webhooks" },\n { text: "SDKs for popular languages" },\n { text: "Detailed documentation" },\n ],\n },\n {\n blockType: "bentoFeatures",\n blockName: "Integration Categories",\n heading: "Integrations for every workflow",\n subheading:\n "Connect your entire tech stack and keep data flowing seamlessly",\n features: [\n {\n size: "small",\n style: "gradient",\n icon: "messageSquare",\n title: "Communication",\n description: createParagraph(\n "Slack, Microsoft Teams, Discord, and email integrations.",\n ),\n },\n {\n size: "small",\n style: "accent",\n icon: "users",\n title: "CRM & Sales",\n description: createParagraph(\n "Salesforce, HubSpot, Pipedrive, and more.",\n ),\n },\n {\n size: "small",\n style: "default",\n icon: "folder",\n title: "Project Management",\n description: createParagraph(\n "Jira, Asana, Monday.com, Trello integrations.",\n ),\n },\n {\n size: "small",\n style: "primary",\n icon: "database",\n title: "Data & Storage",\n description: createParagraph(\n "Google Drive, Dropbox, AWS S3, and databases.",\n ),\n },\n {\n size: "small",\n style: "default",\n icon: "barChart",\n title: "Analytics",\n description: createParagraph("Google Analytics, Mixpanel, Amplitude."),\n },\n {\n size: "small",\n style: "default",\n icon: "zap",\n title: "Automation",\n description: createParagraph("Zapier, Make, n8n for custom workflows."),\n },\n ],\n },\n {\n blockType: "proofBanner",\n blockName: "CTA Section",\n style: "centered",\n headline: "Connect your tools today",\n subtext: "One-click integrations with 100+ apps. Set up in minutes, not days.",\n links: [\n {\n link: {\n type: "custom",\n appearance: "default",\n label: "Start free trial",\n url: "/sign-up",\n },\n },\n {\n link: {\n type: "custom",\n appearance: "outline",\n label: "View all integrations",\n url: "/integrations",\n },\n },\n ],\n },\n ],\n meta: {\n description:\n "Connect SaaSify with 100+ tools including Slack, Salesforce, HubSpot, and more. Native integrations, custom webhooks, and REST API access.",\n title: "Integrations \u2014 Connect Your Tools with SaaSify",\n },\n }\n}\n',
5351
+ "marketing/payload/src/endpoints/seed/directoryhub/home.ts": `import type { Media, Page } from "@/payload-types"
5352
+ import { createParagraph } from "./richtext-helper"
5353
+
5354
+ interface HomePageParams {
5355
+ heroImage?: Media | null
5356
+ testimonialImages?: (Media | null)[]
5357
+ }
5358
+
5359
+ export const directoryHubHome = ({
5360
+ heroImage,
5361
+ testimonialImages = [],
5362
+ }: HomePageParams = {}): Partial<Page> => {
4894
5363
  return {
4895
- slug: "features/seo",
5364
+ slug: "home",
4896
5365
  _status: "published",
4897
- title: "SEO Optimization",
4898
5366
  hero: {
4899
- type: "lowImpact",
5367
+ type: "productShowcase",
5368
+ // Include media reference if heroImage was uploaded
5369
+ ...(heroImage && { media: heroImage.id }),
4900
5370
  richText: {
4901
5371
  root: {
4902
5372
  type: "root",
@@ -4910,12 +5380,12 @@ export const seoPage = (): Partial<Page> => {
4910
5380
  format: 0,
4911
5381
  mode: "normal",
4912
5382
  style: "",
4913
- text: "Rank on page one without the technical overhead",
5383
+ text: "The modern platform for growing teams",
4914
5384
  version: 1,
4915
5385
  },
4916
5386
  ],
4917
- direction: "ltr" as const,
4918
- format: "" as const,
5387
+ direction: "ltr",
5388
+ format: "",
4919
5389
  indent: 0,
4920
5390
  tag: "h1",
4921
5391
  version: 1,
@@ -4929,19 +5399,19 @@ export const seoPage = (): Partial<Page> => {
4929
5399
  format: 0,
4930
5400
  mode: "normal",
4931
5401
  style: "",
4932
- text: "Enterprise-grade SEO built into every directory. Structured data, dynamic sitemaps, and optimized meta tags work automatically so your listings get discovered.",
5402
+ text: "Streamline workflows, boost productivity, and scale your business with one powerful platform.",
4933
5403
  version: 1,
4934
5404
  },
4935
5405
  ],
4936
- direction: "ltr" as const,
4937
- format: "" as const,
5406
+ direction: "ltr",
5407
+ format: "",
4938
5408
  indent: 0,
4939
5409
  textFormat: 0,
4940
5410
  version: 1,
4941
5411
  },
4942
5412
  ],
4943
- direction: "ltr" as const,
4944
- format: "" as const,
5413
+ direction: "ltr",
5414
+ format: "",
4945
5415
  indent: 0,
4946
5416
  version: 1,
4947
5417
  },
@@ -4951,7 +5421,7 @@ export const seoPage = (): Partial<Page> => {
4951
5421
  link: {
4952
5422
  type: "custom",
4953
5423
  appearance: "default",
4954
- label: "Start ranking",
5424
+ label: "Start free trial",
4955
5425
  url: "/sign-up",
4956
5426
  },
4957
5427
  },
@@ -4959,151 +5429,467 @@ export const seoPage = (): Partial<Page> => {
4959
5429
  link: {
4960
5430
  type: "custom",
4961
5431
  appearance: "outline",
4962
- label: "See SEO features",
4963
- url: "/features",
5432
+ label: "Watch demo",
5433
+ url: "/demo",
4964
5434
  },
4965
5435
  },
4966
5436
  ],
4967
5437
  },
4968
5438
  layout: [
5439
+ // 1. Logo Banner - Social proof strip
5440
+ {
5441
+ blockType: "logoBanner",
5442
+ blockName: "Trusted By",
5443
+ heading: "Trusted by fast-growing companies everywhere",
5444
+ style: "scroll",
5445
+ logos: [
5446
+ { name: "TechFlow Inc" },
5447
+ { name: "Acme Corp" },
5448
+ { name: "Evergreen HQ" },
5449
+ { name: "Atlas Network" },
5450
+ { name: "Beacon Digital" },
5451
+ { name: "Cascade Systems" },
5452
+ ],
5453
+ },
5454
+
5455
+ // 2. Value Proposition - Bird-style headline section
5456
+ {
5457
+ blockType: "proofBanner",
5458
+ blockName: "Value Proposition",
5459
+ style: "centered",
5460
+ headline: "Transform how your team works, collaborates, and grows",
5461
+ subtext:
5462
+ "Every interaction feeds into a powerful platform that powers personalized experiences, seamless collaboration, and intelligent automation across every touchpoint.",
5463
+ links: [
5464
+ {
5465
+ link: {
5466
+ type: "custom",
5467
+ appearance: "default",
5468
+ label: "Start free trial",
5469
+ url: "/sign-up",
5470
+ },
5471
+ },
5472
+ {
5473
+ link: {
5474
+ type: "custom",
5475
+ appearance: "outline",
5476
+ label: "Book a demo",
5477
+ url: "/contact",
5478
+ },
5479
+ },
5480
+ ],
5481
+ },
5482
+
5483
+ // 3. Bento Features - Asymmetric bento grid with 8 cards
5484
+ {
5485
+ blockType: "bentoFeatures",
5486
+ blockName: "Get to know SaaSify",
5487
+ heading: "Discover what SaaSify can do",
5488
+ subheading: "Everything you need to work smarter and scale faster",
5489
+ features: [
5490
+ // Position 1: Small (1x1) - top left
5491
+ {
5492
+ size: "small",
5493
+ style: "gradient",
5494
+ icon: "zap",
5495
+ stat: "5x",
5496
+ title: "Faster onboarding",
5497
+ description: createParagraph("Get your team up and running in hours, not weeks."),
5498
+ },
5499
+ // Position 2: Small (1x1) - top middle
5500
+ {
5501
+ size: "small",
5502
+ style: "accent",
5503
+ icon: "rocket",
5504
+ title: "Quick setup",
5505
+ description: createParagraph("Configure your workspace, invite your team, and start collaborating."),
5506
+ },
5507
+ // Position 3: Small (1x1) - top right
5508
+ {
5509
+ size: "small",
5510
+ style: "default",
5511
+ icon: "layers",
5512
+ title: "Powerful integrations",
5513
+ description: createParagraph("Connect with 100+ tools you already use."),
5514
+ },
5515
+ // Position 4: Tall (1x2) - left side spanning 2 rows
5516
+ {
5517
+ size: "tall",
5518
+ style: "primary",
5519
+ icon: "shield",
5520
+ title: "Enterprise security",
5521
+ description: createParagraph(
5522
+ "SOC 2 compliant with end-to-end encryption and complete audit trails for peace of mind.",
5523
+ ),
5524
+ },
5525
+ // Position 5: Small (1x1) - row 2, middle
5526
+ {
5527
+ size: "small",
5528
+ style: "default",
5529
+ icon: "globe",
5530
+ stat: "99.9%",
5531
+ title: "Uptime",
5532
+ description: createParagraph("Reliable infrastructure you can count on."),
5533
+ },
5534
+ // Position 6: Small (1x1) - row 2, right
5535
+ {
5536
+ size: "small",
5537
+ style: "default",
5538
+ icon: "globe",
5539
+ title: "Global scale",
5540
+ description: createParagraph("Multi-region with custom domains."),
5541
+ },
5542
+ // Position 7: Small (1x1) - row 3, middle
5543
+ {
5544
+ size: "small",
5545
+ style: "default",
5546
+ icon: "settings",
5547
+ title: "Smart automation",
5548
+ description: createParagraph("Automate repetitive tasks and workflows."),
5549
+ },
5550
+ // Position 8: Small (1x1) - row 3, right
5551
+ {
5552
+ size: "small",
5553
+ style: "default",
5554
+ icon: "layers",
5555
+ title: "Flexible workflows",
5556
+ description: createParagraph("Build custom processes for any use case."),
5557
+ },
5558
+ ],
5559
+ },
5560
+
5561
+ // 4. Feature Showcase: Integrations (image right)
4969
5562
  {
4970
5563
  blockType: "featureShowcase",
4971
- blockName: "Structured Data",
4972
- label: "Schema Markup",
4973
- headline: "Automatic schema markup for rich results",
5564
+ blockName: "Feature: Integrations",
5565
+ label: "Seamless Integrations",
5566
+ headline: "Connect everything your team uses in one place",
4974
5567
  description: createParagraph(
4975
- "Every listing gets proper schema.org markup automatically. Local businesses, organizations, products, and services are all structured for Google's rich results and knowledge panels.",
5568
+ "Integrate with 100+ popular tools including Slack, Salesforce, HubSpot, and more. Two-way sync keeps everything up to date automatically.",
4976
5569
  ),
4977
5570
  link: {
4978
5571
  type: "custom",
4979
- label: "Learn about structured data",
4980
- url: "/features",
5572
+ label: "Explore integrations",
5573
+ url: "/features/integrations",
4981
5574
  appearance: "default",
4982
5575
  },
4983
5576
  imagePosition: "right",
4984
5577
  features: [
4985
- { text: "LocalBusiness schema for local directories" },
4986
- { text: "Organization schema for B2B" },
4987
- { text: "Product schema for marketplaces" },
4988
- { text: "Rich snippets in search results" },
5578
+ { text: "100+ native integrations" },
5579
+ { text: "Two-way data sync" },
5580
+ { text: "Custom webhooks" },
5581
+ { text: "API access included" },
4989
5582
  ],
4990
5583
  },
5584
+
5585
+ // 5. Feature Showcase: Analytics (image left)
4991
5586
  {
4992
5587
  blockType: "featureShowcase",
4993
- blockName: "Sitemaps",
4994
- label: "Dynamic Sitemaps",
4995
- headline: "Sitemaps that update automatically",
5588
+ blockName: "Feature: Analytics",
5589
+ label: "Actionable Analytics",
5590
+ headline: "Make decisions backed by real-time data",
4996
5591
  description: createParagraph(
4997
- "XML sitemaps are generated and updated automatically as listings are added or changed. Google and other search engines always know about your latest content.",
5592
+ "Track every metric that matters. From team performance to customer insights, get the visibility you need to drive growth.",
4998
5593
  ),
4999
5594
  link: {
5000
5595
  type: "custom",
5001
- label: "Explore sitemap features",
5002
- url: "/features",
5596
+ label: "Learn about analytics",
5597
+ url: "/features/analytics",
5003
5598
  appearance: "default",
5004
5599
  },
5005
5600
  imagePosition: "left",
5006
5601
  features: [
5007
- { text: "Auto-generated XML sitemaps" },
5008
- { text: "Real-time updates" },
5009
- { text: "Priority and frequency hints" },
5010
- { text: "Automatic search engine ping" },
5602
+ { text: "Real-time dashboards" },
5603
+ { text: "Custom reports" },
5604
+ { text: "Team performance metrics" },
5605
+ { text: "Automated insights" },
5011
5606
  ],
5012
5607
  },
5608
+
5609
+ // 6. Feature Showcase: Automation (image right)
5013
5610
  {
5014
5611
  blockType: "featureShowcase",
5015
- blockName: "Meta Tags",
5016
- label: "Meta Optimization",
5017
- headline: "Optimized meta tags for every page",
5612
+ blockName: "Feature: Automation",
5613
+ label: "Workflow Automation",
5614
+ headline: "Eliminate busywork with smart automation",
5018
5615
  description: createParagraph(
5019
- "Custom meta titles, descriptions, and Open Graph tags for every listing and category. Social sharing previews look great and drive more clicks from search and social.",
5616
+ "Build powerful workflows without code. Automate approvals, notifications, data entry, and more to focus on what matters.",
5020
5617
  ),
5021
5618
  link: {
5022
5619
  type: "custom",
5023
- label: "See meta features",
5024
- url: "/features",
5620
+ label: "See automation features",
5621
+ url: "/features/automation",
5025
5622
  appearance: "default",
5026
5623
  },
5027
5624
  imagePosition: "right",
5028
5625
  features: [
5029
- { text: "Custom meta titles and descriptions" },
5030
- { text: "Open Graph tags for social sharing" },
5031
- { text: "Twitter Card support" },
5032
- { text: "Canonical URLs to prevent duplicates" },
5626
+ { text: "Visual workflow builder" },
5627
+ { text: "Conditional logic" },
5628
+ { text: "Scheduled triggers" },
5629
+ { text: "Cross-app automation" },
5033
5630
  ],
5034
5631
  },
5632
+
5633
+ // 7. Feature Showcase: Collaboration (image left)
5035
5634
  {
5036
- blockType: "bentoFeatures",
5037
- blockName: "SEO Features",
5038
- heading: "Built-in SEO that works",
5039
- subheading: "Technical SEO handled automatically so you can focus on content",
5635
+ blockType: "featureShowcase",
5636
+ blockName: "Feature: Collaboration",
5637
+ label: "Team Collaboration",
5638
+ headline: "Work together seamlessly, from anywhere",
5639
+ description: createParagraph(
5640
+ "Real-time collaboration features keep everyone aligned. Share workspaces, leave comments, and track activity across your entire team.",
5641
+ ),
5642
+ link: {
5643
+ type: "custom",
5644
+ label: "Explore collaboration",
5645
+ url: "/features",
5646
+ appearance: "default",
5647
+ },
5648
+ imagePosition: "left",
5040
5649
  features: [
5650
+ { text: "Real-time collaboration" },
5651
+ { text: "Shared workspaces" },
5652
+ { text: "Comments and mentions" },
5653
+ { text: "Activity tracking" },
5654
+ ],
5655
+ },
5656
+
5657
+ // 8. Industry Tabs - Team solutions
5658
+ {
5659
+ blockType: "industryTabs",
5660
+ blockName: "Team Solutions",
5661
+ heading: "Solutions that deliver real results",
5662
+ subheading:
5663
+ "Whether you're in sales, marketing, or product, SaaSify adapts to how your team works.",
5664
+ tabs: [
5041
5665
  {
5042
- size: "small",
5043
- style: "gradient",
5044
- icon: "search",
5045
- stat: "100%",
5046
- title: "SEO Coverage",
5047
- description: createParagraph("Every page optimized automatically."),
5666
+ name: "Sales Teams",
5667
+ stat: "40%",
5668
+ statLabel: "Faster deal cycles with smart pipeline tools",
5669
+ description:
5670
+ "Close deals faster with intelligent pipeline management, automated follow-ups, and real-time insights that help your team hit quota every quarter.",
5671
+ link: {
5672
+ type: "custom",
5673
+ label: "Solutions for sales",
5674
+ url: "/use-cases/sales",
5675
+ appearance: "default",
5676
+ },
5048
5677
  },
5049
5678
  {
5050
- size: "small",
5051
- style: "accent",
5052
- icon: "zap",
5053
- title: "Fast Loading",
5054
- description: createParagraph("Core Web Vitals optimized out of the box."),
5679
+ name: "Marketing Teams",
5680
+ stat: "3x",
5681
+ statLabel: "Campaign velocity with streamlined workflows",
5682
+ description:
5683
+ "Launch campaigns that convert with collaborative planning, asset management, and performance analytics all in one place.",
5684
+ link: {
5685
+ type: "custom",
5686
+ label: "Solutions for marketing",
5687
+ url: "/use-cases/marketing",
5688
+ appearance: "default",
5689
+ },
5055
5690
  },
5056
5691
  {
5057
- size: "small",
5058
- style: "default",
5059
- icon: "globe",
5060
- title: "Clean URLs",
5061
- description: createParagraph("SEO-friendly URL structure."),
5692
+ name: "Product Teams",
5693
+ stat: "50%",
5694
+ statLabel: "Faster shipping with better prioritization",
5695
+ description:
5696
+ "Ship features users love with roadmap planning, feedback collection, and release management that keeps everyone aligned.",
5697
+ link: {
5698
+ type: "custom",
5699
+ label: "Solutions for product",
5700
+ url: "/use-cases/product",
5701
+ appearance: "default",
5702
+ },
5062
5703
  },
5063
5704
  {
5064
- size: "small",
5065
- style: "primary",
5066
- icon: "layout",
5067
- title: "Mobile First",
5068
- description: createParagraph("Mobile-optimized for Google's mobile-first indexing."),
5705
+ name: "Operations",
5706
+ stat: "60%",
5707
+ statLabel: "Time saved with process automation",
5708
+ description:
5709
+ "Scale your operations without the chaos. Automate processes, manage resources, and get visibility across your entire organization.",
5710
+ link: {
5711
+ type: "custom",
5712
+ label: "Solutions for ops",
5713
+ url: "/use-cases/operations",
5714
+ appearance: "default",
5715
+ },
5716
+ },
5717
+ ],
5718
+ },
5719
+
5720
+ // 9. Testimonials Grid - Bird-style stats with photos
5721
+ {
5722
+ blockType: "testimonialsGrid",
5723
+ blockName: "Customer Stories",
5724
+ heading: "Loved by teams at companies of all sizes",
5725
+ subheading:
5726
+ "See how leading teams use SaaSify to drive growth and productivity.",
5727
+ testimonials: [
5728
+ {
5729
+ ...(testimonialImages[0] && { image: testimonialImages[0].id }),
5730
+ stat: "94%",
5731
+ statLabel: "Faster onboarding",
5732
+ quote:
5733
+ "We got our entire team onboarded in under a day. The intuitive interface and powerful integrations saved us weeks of setup time.",
5734
+ author: "Sarah Chen",
5735
+ company: "TechFlow Inc",
5069
5736
  },
5070
5737
  {
5071
- size: "small",
5072
- style: "default",
5073
- icon: "database",
5074
- title: "Crawl Efficient",
5075
- description: createParagraph("Optimized for search engine crawlers."),
5738
+ ...(testimonialImages[1] && { image: testimonialImages[1].id }),
5739
+ stat: "3x",
5740
+ statLabel: "Productivity",
5741
+ quote:
5742
+ "Our team is shipping features faster than ever. The automation tools eliminated hours of manual work every week.",
5743
+ author: "Marcus Rivera",
5744
+ company: "Beacon Digital",
5076
5745
  },
5077
5746
  {
5078
- size: "small",
5079
- style: "default",
5080
- icon: "barChart",
5081
- title: "Analytics Ready",
5082
- description: createParagraph("Track rankings and organic traffic."),
5747
+ ...(testimonialImages[2] && { image: testimonialImages[2].id }),
5748
+ stat: "40%",
5749
+ statLabel: "Cost reduction",
5750
+ quote:
5751
+ "We consolidated five different tools into SaaSify. The ROI was immediate and our team loves having everything in one place.",
5752
+ author: "David Kim",
5753
+ company: "Cascade Systems",
5083
5754
  },
5084
5755
  ],
5085
5756
  },
5757
+
5758
+ // 10. Trust Columns - Bird-style two-column section
5086
5759
  {
5087
- blockType: "proofBanner",
5088
- blockName: "CTA Section",
5089
- style: "centered",
5090
- headline: "Get discovered by the right audience",
5091
- subtext: "Every directory comes with enterprise-grade SEO. No plugins, no configuration.",
5092
- links: [
5760
+ blockType: "trustColumns",
5761
+ blockName: "Trust & Security",
5762
+ columns: [
5763
+ {
5764
+ label: "Integrations",
5765
+ heading: "Connect anywhere",
5766
+ description:
5767
+ "Plug in and get started immediately with pre-built connectors for every major platform.",
5768
+ items: [
5769
+ { icon: "zap", text: "Go live in minutes" },
5770
+ { icon: "plug", text: "Pre-built connectors" },
5771
+ { icon: "database", text: "Complete data sync" },
5772
+ { icon: "cloud", text: "Cloud-native infrastructure" },
5773
+ ],
5774
+ },
5775
+ {
5776
+ label: "Security & Compliance",
5777
+ heading: "Enterprise-level security",
5778
+ description:
5779
+ "Keep your data safe with encryption, granular access control, and compliance-ready infrastructure.",
5780
+ items: [
5781
+ { icon: "shield", text: "SOC 2 Type II certified" },
5782
+ { icon: "lock", text: "End-to-end encryption" },
5783
+ { icon: "award", text: "Complete audit trails" },
5784
+ { icon: "globe", text: "GDPR compliant" },
5785
+ ],
5786
+ },
5787
+ ],
5788
+ },
5789
+
5790
+ // 11. Integrations Banner
5791
+ {
5792
+ blockType: "logoBanner",
5793
+ blockName: "Integrations",
5794
+ heading: "Integrates with your favorite tools",
5795
+ style: "grid",
5796
+ logos: [
5797
+ { name: "Slack" },
5798
+ { name: "Salesforce" },
5799
+ { name: "HubSpot" },
5800
+ { name: "Google Workspace" },
5801
+ { name: "Zapier" },
5802
+ { name: "Jira" },
5803
+ ],
5804
+ },
5805
+
5806
+ // 12. Pricing
5807
+ {
5808
+ blockType: "pricingTable",
5809
+ blockName: "Pricing",
5810
+ heading: "Simple, transparent pricing",
5811
+ subheading: "Start free, upgrade as your team grows. No hidden fees.",
5812
+ showComparisonTable: false,
5813
+ showViewAllLink: true,
5814
+ maxFeaturesOnCard: 4,
5815
+ plans: [
5816
+ {
5817
+ name: "Free",
5818
+ price: "$0/mo",
5819
+ description: "Perfect for trying SaaSify.",
5820
+ features: [
5821
+ { feature: "Up to 3 users", included: true },
5822
+ { feature: "Basic features", included: true },
5823
+ { feature: "Community support", included: true },
5824
+ ],
5825
+ link: {
5826
+ type: "custom",
5827
+ label: "Get started free",
5828
+ url: "/sign-up",
5829
+ appearance: "outline",
5830
+ },
5831
+ },
5093
5832
  {
5833
+ name: "Pro",
5834
+ price: "$29/mo",
5835
+ description: "For small teams getting started.",
5836
+ featured: true,
5837
+ features: [
5838
+ { feature: "Up to 10 users", included: true },
5839
+ { feature: "Advanced features", included: true },
5840
+ { feature: "Integrations", included: true },
5841
+ { feature: "Priority support", included: true },
5842
+ ],
5094
5843
  link: {
5095
5844
  type: "custom",
5845
+ label: "Get Pro",
5846
+ url: "/sign-up",
5096
5847
  appearance: "default",
5097
- label: "Start for free",
5848
+ },
5849
+ },
5850
+ {
5851
+ name: "Business",
5852
+ price: "$99/mo",
5853
+ description: "For teams ready to scale.",
5854
+ features: [
5855
+ { feature: "Unlimited users", included: true },
5856
+ { feature: "All features", included: true },
5857
+ { feature: "API access", included: true },
5858
+ { feature: "Dedicated support", included: true },
5859
+ ],
5860
+ link: {
5861
+ type: "custom",
5862
+ label: "Get Business",
5098
5863
  url: "/sign-up",
5864
+ appearance: "outline",
5099
5865
  },
5100
5866
  },
5867
+ ],
5868
+ },
5869
+
5870
+ // 13. Final CTA - Bird-style full-width with background
5871
+ {
5872
+ blockType: "finalCta",
5873
+ blockName: "Final CTA",
5874
+ headline: "Ready to transform how your team works?",
5875
+ subheading:
5876
+ "Join thousands of teams who chose the smarter way to work. Start free, upgrade as you grow.",
5877
+ style: "dark",
5878
+ links: [
5101
5879
  {
5102
5880
  link: {
5103
5881
  type: "custom",
5104
5882
  appearance: "outline",
5105
- label: "See all features",
5106
- url: "/features",
5883
+ label: "Start free trial",
5884
+ url: "/sign-up",
5885
+ },
5886
+ },
5887
+ {
5888
+ link: {
5889
+ type: "custom",
5890
+ appearance: "default",
5891
+ label: "Book a demo",
5892
+ url: "/contact",
5107
5893
  },
5108
5894
  },
5109
5895
  ],
@@ -5111,15 +5897,14 @@ export const seoPage = (): Partial<Page> => {
5111
5897
  ],
5112
5898
  meta: {
5113
5899
  description:
5114
- "Built-in SEO features including automatic schema markup, dynamic sitemaps, and optimized meta tags. Get your directory listings ranking on Google.",
5115
- title: "SEO Features \u2014 DirectoryHub Search Optimization",
5900
+ "Streamline workflows, boost productivity, and scale your business with SaaSify. The modern platform for growing teams. Free to start.",
5901
+ title: "SaaSify \u2014 The Modern Platform for Growing Teams",
5116
5902
  },
5903
+ title: "Home",
5117
5904
  }
5118
5905
  }
5119
5906
  `,
5120
- "marketing/payload/src/endpoints/seed/directoryhub/features/templates.ts": 'import type { Page } from "@/payload-types"\nimport { createParagraph } from "../richtext-helper"\n\nexport const templatesPage = (): Partial<Page> => {\n return {\n slug: "features/templates",\n _status: "published",\n title: "Directory Templates",\n hero: {\n type: "lowImpact",\n richText: {\n root: {\n type: "root",\n children: [\n {\n type: "heading",\n children: [\n {\n type: "text",\n detail: 0,\n format: 0,\n mode: "normal",\n style: "",\n text: "Launch your directory in days, not months",\n version: 1,\n },\n ],\n direction: "ltr" as const,\n format: "" as const,\n indent: 0,\n tag: "h1",\n version: 1,\n },\n {\n type: "paragraph",\n children: [\n {\n type: "text",\n detail: 0,\n format: 0,\n mode: "normal",\n style: "",\n text: "Choose from professionally designed directory templates, customize to match your brand, and go live instantly. No coding required.",\n version: 1,\n },\n ],\n direction: "ltr" as const,\n format: "" as const,\n indent: 0,\n textFormat: 0,\n version: 1,\n },\n ],\n direction: "ltr" as const,\n format: "" as const,\n indent: 0,\n version: 1,\n },\n },\n links: [\n {\n link: {\n type: "custom",\n appearance: "default",\n label: "Get started free",\n url: "/sign-up",\n },\n },\n {\n link: {\n type: "custom",\n appearance: "outline",\n label: "View all templates",\n url: "/templates",\n },\n },\n ],\n },\n layout: [\n // Feature showcase blocks\n {\n blockType: "featureShowcase",\n blockName: "Template Gallery",\n label: "Ready-Made Templates",\n headline: "Pick a template, customize, launch",\n description: createParagraph(\n "Our template library covers every niche from local services to B2B vendor directories. Each template is designed for conversions with optimized layouts, smart filtering, and mobile-first responsive design.",\n ),\n link: {\n type: "custom",\n label: "Browse templates",\n url: "/templates",\n appearance: "default",\n },\n imagePosition: "right",\n features: [\n { text: "10+ professionally designed templates" },\n { text: "Niche-specific layouts and fields" },\n { text: "Mobile-first responsive design" },\n { text: "One-click preview and deploy" },\n ],\n },\n {\n blockType: "featureShowcase",\n blockName: "Customization",\n label: "Brand Customization",\n headline: "Make it yours in minutes",\n description: createParagraph(\n "Every template is fully customizable. Change colors, fonts, layouts, and content without touching a line of code. Our visual editor makes it simple to match your brand identity perfectly.",\n ),\n link: {\n type: "custom",\n label: "See customization options",\n url: "/features",\n appearance: "default",\n },\n imagePosition: "left",\n features: [\n { text: "Visual drag-and-drop editor" },\n { text: "Custom color schemes and fonts" },\n { text: "Logo and branding integration" },\n { text: "Custom domain support" },\n ],\n },\n // Bento features for specific capabilities\n {\n blockType: "bentoFeatures",\n blockName: "Template Features",\n heading: "Built for every directory type",\n subheading:\n "Templates designed for specific use cases with pre-configured schemas and optimized layouts",\n features: [\n {\n size: "small",\n style: "gradient",\n icon: "layout",\n title: "Local Services",\n description: createParagraph(\n "Plumbers, photographers, restaurants with map integration.",\n ),\n },\n {\n size: "small",\n style: "accent",\n icon: "building",\n title: "B2B Directories",\n description: createParagraph(\n "Software vendors, agencies, consultants with comparison views.",\n ),\n },\n {\n size: "small",\n style: "default",\n icon: "users",\n title: "Community Directories",\n description: createParagraph(\n "Member directories, alumni networks, professional groups.",\n ),\n },\n {\n size: "small",\n style: "primary",\n icon: "building",\n title: "Marketplaces",\n description: createParagraph(\n "Multi-vendor platforms with seller profiles and products.",\n ),\n },\n {\n size: "small",\n style: "default",\n icon: "globe",\n title: "Global Ready",\n description: createParagraph("Multi-language support and localization built-in."),\n },\n {\n size: "small",\n style: "default",\n icon: "zap",\n title: "Fast Loading",\n description: createParagraph("Optimized for speed with edge caching."),\n },\n ],\n },\n // Proof banner\n {\n blockType: "proofBanner",\n blockName: "CTA Section",\n style: "centered",\n headline: "Ready to launch your directory?",\n subtext: "Pick a template and go live today. Free to start, upgrade as you grow.",\n links: [\n {\n link: {\n type: "custom",\n appearance: "default",\n label: "Start for free",\n url: "/sign-up",\n },\n },\n {\n link: {\n type: "custom",\n appearance: "outline",\n label: "Book a demo",\n url: "/contact",\n },\n },\n ],\n },\n ],\n meta: {\n description:\n "Launch your directory website in days with professionally designed templates. Customize colors, layouts, and content without coding. Start free today.",\n title: "Directory Templates \u2014 Launch Fast with DirectoryHub",\n },\n }\n}\n',
5121
- "marketing/payload/src/endpoints/seed/directoryhub/home.ts": 'import type { Media, Page } from "@/payload-types"\nimport { createParagraph } from "./richtext-helper"\n\ninterface HomePageParams {\n heroImage?: Media | null\n testimonialImages?: (Media | null)[]\n}\n\nexport const directoryHubHome = ({\n heroImage,\n testimonialImages = [],\n}: HomePageParams = {}): Partial<Page> => {\n return {\n slug: "home",\n _status: "published",\n hero: {\n type: "productShowcase",\n // Include media reference if heroImage was uploaded\n ...(heroImage && { media: heroImage.id }),\n richText: {\n root: {\n type: "root",\n children: [\n {\n type: "heading",\n children: [\n {\n type: "text",\n detail: 0,\n format: 0,\n mode: "normal",\n style: "",\n text: "Launch, monetize, and scale directories fast",\n version: 1,\n },\n ],\n direction: "ltr",\n format: "",\n indent: 0,\n tag: "h1",\n version: 1,\n },\n {\n type: "paragraph",\n children: [\n {\n type: "text",\n detail: 0,\n format: 0,\n mode: "normal",\n style: "",\n text: "The platform that accelerates directory launches, automates operations, and grows revenue.",\n version: 1,\n },\n ],\n direction: "ltr",\n format: "",\n indent: 0,\n textFormat: 0,\n version: 1,\n },\n ],\n direction: "ltr",\n format: "",\n indent: 0,\n version: 1,\n },\n },\n links: [\n {\n link: {\n type: "custom",\n appearance: "default",\n label: "Get started",\n url: "/sign-up",\n },\n },\n {\n link: {\n type: "custom",\n appearance: "outline",\n label: "View templates",\n url: "/templates",\n },\n },\n ],\n },\n layout: [\n // 1. Logo Banner - Social proof strip (KEEP)\n {\n blockType: "logoBanner",\n blockName: "Trusted By",\n heading: "Built for businesses where directories matter",\n style: "scroll",\n logos: [\n { name: "Northwind Market" },\n { name: "Acme Listings" },\n { name: "Evergreen HQ" },\n { name: "Atlas Network" },\n { name: "Beacon Partners" },\n { name: "Cascade Labs" },\n ],\n },\n\n // 2. Value Proposition - Bird-style headline section\n {\n blockType: "proofBanner",\n blockName: "Value Proposition",\n style: "centered",\n headline: "Turn your niche expertise into a revenue-generating directory",\n subtext:\n "Every interaction feeds into a powerful platform that powers personalized experiences, targeted discovery, and intelligent automation across every touchpoint.",\n links: [\n {\n link: {\n type: "custom",\n appearance: "default",\n label: "Start for free",\n url: "/sign-up",\n },\n },\n {\n link: {\n type: "custom",\n appearance: "outline",\n label: "Book a demo",\n url: "/contact",\n },\n },\n ],\n },\n\n // 3. Bento Features - Asymmetric bento grid with 8 cards\n {\n blockType: "bentoFeatures",\n blockName: "Get to know DirectoryHub",\n heading: "Get to know DirectoryHub",\n subheading: "Everything you need to launch and monetize directories",\n features: [\n // Position 1: Small (1x1) - top left\n {\n size: "small",\n style: "gradient",\n icon: "zap",\n stat: "5x",\n title: "Faster launches",\n description: createParagraph("Launch your directory in days, not months."),\n },\n // Position 2: Small (1x1) - top middle\n {\n size: "small",\n style: "accent",\n icon: "rocket",\n title: "Go live quickly",\n description: createParagraph("Pick a template, customize your brand, and publish."),\n },\n // Position 3: Small (1x1) - top right\n {\n size: "small",\n style: "default",\n icon: "dollarSign",\n title: "Monetize instantly",\n description: createParagraph("Stripe payments and subscription tiers built-in."),\n },\n // Position 4: Tall (1x2) - left side spanning 2 rows\n {\n size: "tall",\n style: "primary",\n icon: "shield",\n title: "Enterprise security",\n description: createParagraph(\n "Per-tenant isolation, encrypted data, and complete audit trails for peace of mind.",\n ),\n },\n // Position 5: Small (1x1) - row 2, middle\n {\n size: "small",\n style: "default",\n icon: "search",\n stat: "100%",\n title: "SEO ready",\n description: createParagraph("Schema markup and sitemaps generated automatically."),\n },\n // Position 6: Small (1x1) - row 2, right\n {\n size: "small",\n style: "default",\n icon: "globe",\n title: "Global scale",\n description: createParagraph("Multi-tenant with custom domains."),\n },\n // Position 7: Small (1x1) - row 3, middle\n {\n size: "small",\n style: "default",\n icon: "settings",\n title: "Smart automation",\n description: createParagraph("Automated workflows and moderation."),\n },\n // Position 8: Small (1x1) - row 3, right\n {\n size: "small",\n style: "default",\n icon: "layers",\n title: "Custom fields",\n description: createParagraph("Flexible schemas for any directory type."),\n },\n ],\n },\n\n // 4. Feature Showcase: Templates (image right)\n {\n blockType: "featureShowcase",\n blockName: "Feature: Templates",\n label: "Directory Templates",\n headline: "Go from idea to live directory in a weekend",\n description: createParagraph(\n "High-converting directory templates designed for every niche. Benefit from schema pre-fills, dynamic UI, smart search, and intelligent optimizations that drive engagement.",\n ),\n link: {\n type: "custom",\n label: "Explore templates",\n url: "/templates",\n appearance: "default",\n },\n imagePosition: "right",\n features: [\n { text: "10+ ready-to-use templates" },\n { text: "Custom domain in minutes" },\n { text: "Mobile-first responsive design" },\n { text: "Deep localization support" },\n ],\n },\n\n // 5. Feature Showcase: Monetization (image left)\n {\n blockType: "featureShowcase",\n blockName: "Feature: Monetization",\n label: "Revenue Engine",\n headline: "Drive revenue with built-in monetization",\n description: createParagraph(\n "Stop leaving money on the table. Charge for listings, offer premium placements, and run subscription tiers without writing a line of payment code. Automated invoicing and tax handling included.",\n ),\n link: {\n type: "custom",\n label: "Learn about monetization",\n url: "/pricing",\n appearance: "default",\n },\n imagePosition: "left",\n features: [\n { text: "Subscription tiers" },\n { text: "Featured placements" },\n { text: "Pay-per-listing options" },\n { text: "Automated payouts" },\n ],\n },\n\n // 6. Feature Showcase: SEO (image right)\n {\n blockType: "featureShowcase",\n blockName: "Feature: SEO",\n label: "Search Optimization",\n headline: "Rank on page one without the technical overhead",\n description: createParagraph(\n "Every directory comes with enterprise-grade SEO built-in. Structured data, dynamic sitemaps, and optimized meta tags ensure your listings get discovered by the right audience.",\n ),\n link: {\n type: "custom",\n label: "See SEO features",\n url: "/features",\n appearance: "default",\n },\n imagePosition: "right",\n features: [\n { text: "Automatic schema markup" },\n { text: "Dynamic XML sitemaps" },\n { text: "SEO-friendly URLs" },\n { text: "Social sharing optimization" },\n ],\n },\n\n // 7. Feature Showcase: Management (image left)\n {\n blockType: "featureShowcase",\n blockName: "Feature: Management",\n label: "Admin Dashboard",\n headline: "Manage everything from one powerful dashboard",\n description: createParagraph(\n "Review submissions, moderate content, track analytics, and manage payments all in one place. Built-in tools help you maintain quality while scaling your directory business.",\n ),\n link: {\n type: "custom",\n label: "Explore dashboard",\n url: "/features",\n appearance: "default",\n },\n imagePosition: "left",\n features: [\n { text: "Submission review queues" },\n { text: "Bulk moderation tools" },\n { text: "Real-time analytics" },\n { text: "User management" },\n ],\n },\n\n // 8. Industry Tabs - Bird-style tabbed use cases\n {\n blockType: "industryTabs",\n blockName: "Use Cases",\n heading: "Directories that turn data into intelligent experiences",\n subheading:\n "Whether you are building for local services or global marketplaces, DirectoryHub adapts to your model.",\n tabs: [\n {\n name: "Local Services",\n stat: "340%",\n statLabel: "Higher conversion with location-based discovery",\n description:\n "Plumbers, photographers, restaurants. Card grids with reviews, maps, and geo-filtering that help customers find exactly what they need.",\n link: {\n type: "custom",\n label: "Local directory solutions",\n url: "/templates",\n appearance: "default",\n },\n },\n {\n name: "B2B Vendor Hubs",\n stat: "94%",\n statLabel: "Faster vendor onboarding with smart filters",\n description:\n "SaaS tools, agencies, consultants. Advanced filters, comparison views, and lead capture that convert browsers into buyers.",\n link: {\n type: "custom",\n label: "B2B directory solutions",\n url: "/templates",\n appearance: "default",\n },\n },\n {\n name: "Communities",\n stat: "+12K",\n statLabel: "Members connected through curated networks",\n description:\n "Member directories, alumni networks, professional associations with gated access and rich member profiles.",\n link: {\n type: "custom",\n label: "Community solutions",\n url: "/templates",\n appearance: "default",\n },\n },\n {\n name: "Marketplaces",\n stat: "$2M+",\n statLabel: "Revenue processed through integrated payments",\n description:\n "Multi-vendor search, featured slots, automated payouts to sellers. Everything you need to run a thriving marketplace.",\n link: {\n type: "custom",\n label: "Marketplace solutions",\n url: "/templates",\n appearance: "default",\n },\n },\n ],\n },\n\n // 9. Testimonials Grid - Bird-style stats with photos\n {\n blockType: "testimonialsGrid",\n blockName: "Customer Stories",\n heading: "Trusted by founders who depend on their directories",\n subheading:\n "See how leading directory builders use DirectoryHub to drive intelligent growth.",\n testimonials: [\n {\n ...(testimonialImages[0] && { image: testimonialImages[0].id }),\n stat: "94%",\n statLabel: "Faster launch time",\n quote:\n "We went from idea to collecting payments in 3 days. The templates and Stripe integration saved us months of development time.",\n author: "Sarah Chen",\n company: "Northwind Market",\n },\n {\n ...(testimonialImages[1] && { image: testimonialImages[1].id }),\n stat: "+300%",\n statLabel: "Traffic growth",\n quote:\n "Our niche directory started ranking on page 1 within weeks. The structured data and sitemaps are handled automatically.",\n author: "Marcus Rivera",\n company: "Beacon Partners",\n },\n {\n ...(testimonialImages[2] && { image: testimonialImages[2].id }),\n stat: "161%",\n statLabel: "Revenue increase",\n quote:\n "Featured placements and premium tiers covered our costs in the first month. The monetization tools just work.",\n author: "David Kim",\n company: "Cascade Labs",\n },\n ],\n },\n\n // 10. Trust Columns - Bird-style two-column section\n {\n blockType: "trustColumns",\n blockName: "Trust & Security",\n columns: [\n {\n label: "Integrations",\n heading: "Connect anywhere",\n description:\n "Plug in and get started immediately with pre-built connectors for every major platform.",\n items: [\n { icon: "zap", text: "Go live in minutes" },\n { icon: "plug", text: "Pre-built connectors" },\n { icon: "database", text: "Complete data sync" },\n { icon: "cloud", text: "Cloud-native infrastructure" },\n ],\n },\n {\n label: "Security & Compliance",\n heading: "Enterprise-level security",\n description:\n "Keep your data private with encryption, granular access control, and compliance-ready infrastructure.",\n items: [\n { icon: "shield", text: "SOC 2-minded controls" },\n { icon: "lock", text: "Per-tenant data isolation" },\n { icon: "award", text: "Complete audit trails" },\n { icon: "globe", text: "GDPR-ready infrastructure" },\n ],\n },\n ],\n },\n\n // 11. Integrations Banner (KEEP)\n {\n blockType: "logoBanner",\n blockName: "Integrations",\n heading: "Powered by industry-leading technology",\n style: "grid",\n logos: [\n { name: "Stripe" },\n { name: "Vercel" },\n { name: "AWS" },\n { name: "Google Analytics" },\n { name: "Zapier" },\n { name: "Convex" },\n ],\n },\n\n // 12. Pricing (KEEP)\n {\n blockType: "pricingTable",\n blockName: "Pricing",\n heading: "Simple, transparent pricing",\n subheading: "Start free, upgrade as you grow. No hidden fees.",\n showComparisonTable: false,\n showViewAllLink: true,\n maxFeaturesOnCard: 4,\n plans: [\n {\n name: "Free",\n price: "$0/mo",\n description: "Perfect for getting started.",\n features: [\n { feature: "1 directory site", included: true },\n { feature: "Basic customization", included: true },\n { feature: "Community support", included: true },\n ],\n link: {\n type: "custom",\n label: "Get started free",\n url: "/sign-up",\n appearance: "outline",\n },\n },\n {\n name: "Pro",\n price: "$29/mo",\n description: "For growing businesses.",\n featured: true,\n features: [\n { feature: "5 directory sites", included: true },\n { feature: "Advanced customization", included: true },\n { feature: "Custom domains", included: true },\n { feature: "Priority support", included: true },\n ],\n link: {\n type: "custom",\n label: "Get Pro",\n url: "/sign-up",\n appearance: "default",\n },\n },\n {\n name: "Business",\n price: "$99/mo",\n description: "For teams and agencies.",\n features: [\n { feature: "Unlimited directory sites", included: true },\n { feature: "White-label branding", included: true },\n { feature: "API access", included: true },\n { feature: "Dedicated support", included: true },\n ],\n link: {\n type: "custom",\n label: "Get Business",\n url: "/sign-up",\n appearance: "outline",\n },\n },\n ],\n },\n\n // 13. Final CTA - Bird-style full-width with background\n {\n blockType: "finalCta",\n blockName: "Final CTA",\n headline: "The complete platform that scales with your directory business",\n subheading:\n "Join hundreds of founders who chose the faster path to a profitable directory business. Start free, upgrade as you grow.",\n style: "dark",\n links: [\n {\n link: {\n type: "custom",\n appearance: "outline",\n label: "Get started",\n url: "/sign-up",\n },\n },\n {\n link: {\n type: "custom",\n appearance: "default",\n label: "Book a demo",\n url: "/contact",\n },\n },\n ],\n },\n ],\n meta: {\n description:\n "Launch a profitable directory business in minutes with built-in payments, SEO, and automation. Free to start.",\n title: "DirectoryHub \u2014 Launch revenue-first directories fast",\n },\n title: "Home",\n }\n}\n',
5122
- "marketing/payload/src/endpoints/seed/directoryhub/index.ts": 'import * as fs from "node:fs"\nimport * as path from "node:path"\nimport type { CollectionSlug, File, Payload, PayloadRequest } from "payload"\n\nimport { directoryHubAbout } from "./about"\nimport { faqData } from "./faqs"\nimport {\n automationPage,\n customFieldsPage,\n dashboardPage,\n monetizationPage,\n seoPage,\n templatesPage,\n} from "./features"\nimport { directoryHubHome } from "./home"\nimport { blogPosts } from "./posts"\nimport { directoryHubPricing } from "./pricing"\nimport { directoryHubPrivacy } from "./privacy"\nimport { directoryHubTerms } from "./terms"\nimport {\n b2bVendorHubsPage,\n communitiesPage,\n localServicesPage,\n marketplacesPage,\n} from "./use-cases"\n\nconst collections: CollectionSlug[] = [\n "categories",\n "media",\n "pages",\n "posts",\n "forms",\n "form-submissions",\n "search",\n "faqs",\n]\n\nconst categories = [\n { title: "Business", slug: "business" },\n { title: "Technology", slug: "technology" },\n { title: "News", slug: "news" },\n { title: "Guides", slug: "guides" },\n]\n\n// Contact form configuration for DirectoryHub\nconst contactFormData = {\n title: "Contact Form",\n confirmationMessage: {\n root: {\n type: "root",\n children: [\n {\n type: "paragraph",\n children: [\n {\n type: "text",\n detail: 0,\n format: 0,\n mode: "normal",\n style: "",\n text: "Thanks for reaching out! We\'ll get back to you within 24 hours.",\n version: 1,\n },\n ],\n direction: "ltr" as const,\n format: "" as const,\n indent: 0,\n textFormat: 0,\n version: 1,\n },\n ],\n direction: "ltr" as const,\n format: "" as const,\n indent: 0,\n version: 1,\n },\n },\n confirmationType: "message" as const,\n fields: [\n {\n name: "name",\n label: "Name",\n required: true,\n blockType: "text" as const,\n },\n {\n name: "email",\n label: "Email",\n required: true,\n blockType: "email" as const,\n },\n {\n name: "subject",\n label: "Subject",\n required: false,\n blockType: "text" as const,\n },\n {\n name: "message",\n label: "Message",\n required: true,\n blockType: "textarea" as const,\n },\n ],\n submitButtonLabel: "Send Message",\n}\n\nexport const seedDirectoryHub = async ({\n payload,\n req,\n}: {\n payload: Payload\n req: PayloadRequest\n}): Promise<void> => {\n payload.logger.info("Seeding DirectoryHub database...")\n\n // Clear collections and globals\n payload.logger.info("\u2014 Clearing collections and globals...")\n\n // Clear header\n await payload.updateGlobal({\n slug: "header",\n data: {\n navItems: [],\n },\n depth: 0,\n context: {\n disableRevalidate: true,\n },\n })\n\n // Clear footer with new structure\n await payload.updateGlobal({\n slug: "footer",\n data: {\n columns: [],\n socialLinks: {},\n newsletter: { enabled: false },\n copyrightText: "",\n bottomLinks: [],\n },\n depth: 0,\n context: {\n disableRevalidate: true,\n },\n })\n\n // Delete collections sequentially to avoid database deadlocks\n for (const collection of collections) {\n if (payload.collections[collection]) {\n try {\n await payload.db.deleteMany({ collection, req, where: {} })\n } catch (error) {\n payload.logger.warn(`Warning: Could not clear ${collection}: ${error}`)\n }\n }\n }\n\n // Delete versions sequentially\n for (const collection of collections) {\n if (payload.collections[collection]?.config?.versions) {\n try {\n await payload.db.deleteVersions({ collection, req, where: {} })\n } catch (error) {\n payload.logger.warn(`Warning: Could not clear ${collection} versions: ${error}`)\n }\n }\n }\n\n payload.logger.info("\u2014 Seeding demo author...")\n\n await payload.delete({\n collection: "users",\n depth: 0,\n where: {\n email: {\n equals: "demo-author@example.com",\n },\n },\n })\n\n const _demoAuthor = await payload.create({\n collection: "users",\n data: {\n name: "DirectoryHub Team",\n email: "demo-author@example.com",\n password: "password",\n },\n })\n\n // Seed categories\n payload.logger.info("\u2014 Seeding categories...")\n\n const categoryDocs = await Promise.all(\n categories.map((category) =>\n payload.create({\n collection: "categories",\n data: {\n title: category.title,\n slug: category.slug,\n },\n }),\n ),\n )\n\n // Seed FAQs\n payload.logger.info("\u2014 Seeding FAQs...")\n\n const faqDocs = await Promise.all(\n faqData.map((faq) =>\n payload.create({\n collection: "faqs",\n // biome-ignore lint/suspicious/noExplicitAny: Payload seed data type mismatch\n data: faq as any,\n }),\n ),\n )\n\n payload.logger.info(`\u2014 Seeded ${faqDocs.length} FAQs`)\n\n // Upload hero dashboard image\n payload.logger.info("\u2014 Uploading hero media...")\n\n let heroImageDoc = null\n try {\n const heroImagePath = path.join(process.cwd(), "public/media/hero-dashboard.png")\n if (fs.existsSync(heroImagePath)) {\n const heroImageBuffer = fs.readFileSync(heroImagePath)\n const heroImageFile: File = {\n name: "hero-dashboard.png",\n data: heroImageBuffer,\n mimetype: "image/png",\n size: heroImageBuffer.byteLength,\n }\n heroImageDoc = await payload.create({\n collection: "media",\n data: {\n alt: "DirectoryHub Dashboard - Manage directories, track usage, and configure settings",\n },\n file: heroImageFile,\n })\n payload.logger.info("\u2014 Hero image uploaded successfully")\n } else {\n payload.logger.info("\u2014 Hero image not found, using animated mockup fallback")\n }\n } catch (_error) {\n payload.logger.info("\u2014 Error uploading hero image, using animated mockup fallback")\n }\n\n // Upload testimonial images\n payload.logger.info("\u2014 Uploading testimonial images...")\n\n const testimonialImages: (typeof heroImageDoc)[] = []\n const testimonialImageFiles = [\n { name: "testimonial-1.jpg", alt: "Professional woman entrepreneur" },\n { name: "testimonial-2.jpg", alt: "Business professional reviewing analytics" },\n { name: "testimonial-3.jpg", alt: "Team collaboration meeting" },\n ]\n\n for (const imgData of testimonialImageFiles) {\n try {\n const imagePath = path.join(process.cwd(), `public/media/${imgData.name}`)\n if (fs.existsSync(imagePath)) {\n const imageBuffer = fs.readFileSync(imagePath)\n const imageFile: File = {\n name: imgData.name,\n data: imageBuffer,\n mimetype: "image/jpeg",\n size: imageBuffer.byteLength,\n }\n const imageDoc = await payload.create({\n collection: "media",\n data: {\n alt: imgData.alt,\n },\n file: imageFile,\n })\n testimonialImages.push(imageDoc)\n }\n } catch (_error) {\n payload.logger.info(`\u2014 Error uploading ${imgData.name}`)\n }\n }\n payload.logger.info(`\u2014 Uploaded ${testimonialImages.length} testimonial images`)\n\n payload.logger.info("\u2014 Seeding contact form...")\n\n const contactForm = await payload.create({\n collection: "forms",\n depth: 0,\n data: contactFormData,\n })\n\n payload.logger.info("\u2014 Seeding pages...")\n\n // Seed main pages\n const [homePage, pricingPage, aboutPage, privacyPage, termsPage] = await Promise.all([\n payload.create({\n collection: "pages",\n depth: 0,\n context: {\n disableRevalidate: true,\n },\n // biome-ignore lint/suspicious/noExplicitAny: Payload seed data type mismatch\n data: directoryHubHome({ heroImage: heroImageDoc, testimonialImages }) as any,\n }),\n payload.create({\n collection: "pages",\n depth: 0,\n context: {\n disableRevalidate: true,\n },\n // biome-ignore lint/suspicious/noExplicitAny: Payload seed data type mismatch\n data: directoryHubPricing() as any,\n }),\n payload.create({\n collection: "pages",\n depth: 0,\n context: {\n disableRevalidate: true,\n },\n // biome-ignore lint/suspicious/noExplicitAny: Payload seed data type mismatch\n data: directoryHubAbout({ contactForm }) as any,\n }),\n payload.create({\n collection: "pages",\n depth: 0,\n context: {\n disableRevalidate: true,\n },\n // biome-ignore lint/suspicious/noExplicitAny: Payload seed data type mismatch\n data: directoryHubPrivacy() as any,\n }),\n payload.create({\n collection: "pages",\n depth: 0,\n context: {\n disableRevalidate: true,\n },\n // biome-ignore lint/suspicious/noExplicitAny: Payload seed data type mismatch\n data: directoryHubTerms() as any,\n }),\n ])\n\n // Seed feature pages\n payload.logger.info("\u2014 Seeding feature pages...")\n\n const featurePages = await Promise.all([\n payload.create({\n collection: "pages",\n depth: 0,\n context: { disableRevalidate: true },\n // biome-ignore lint/suspicious/noExplicitAny: Payload seed data type mismatch\n data: templatesPage() as any,\n }),\n payload.create({\n collection: "pages",\n depth: 0,\n context: { disableRevalidate: true },\n // biome-ignore lint/suspicious/noExplicitAny: Payload seed data type mismatch\n data: monetizationPage() as any,\n }),\n payload.create({\n collection: "pages",\n depth: 0,\n context: { disableRevalidate: true },\n // biome-ignore lint/suspicious/noExplicitAny: Payload seed data type mismatch\n data: seoPage() as any,\n }),\n payload.create({\n collection: "pages",\n depth: 0,\n context: { disableRevalidate: true },\n // biome-ignore lint/suspicious/noExplicitAny: Payload seed data type mismatch\n data: dashboardPage() as any,\n }),\n payload.create({\n collection: "pages",\n depth: 0,\n context: { disableRevalidate: true },\n // biome-ignore lint/suspicious/noExplicitAny: Payload seed data type mismatch\n data: automationPage() as any,\n }),\n payload.create({\n collection: "pages",\n depth: 0,\n context: { disableRevalidate: true },\n // biome-ignore lint/suspicious/noExplicitAny: Payload seed data type mismatch\n data: customFieldsPage() as any,\n }),\n ])\n\n payload.logger.info(`\u2014 Seeded ${featurePages.length} feature pages`)\n\n // Seed use case pages\n payload.logger.info("\u2014 Seeding use case pages...")\n\n const useCasePages = await Promise.all([\n payload.create({\n collection: "pages",\n depth: 0,\n context: { disableRevalidate: true },\n // biome-ignore lint/suspicious/noExplicitAny: Payload seed data type mismatch\n data: localServicesPage() as any,\n }),\n payload.create({\n collection: "pages",\n depth: 0,\n context: { disableRevalidate: true },\n // biome-ignore lint/suspicious/noExplicitAny: Payload seed data type mismatch\n data: b2bVendorHubsPage() as any,\n }),\n payload.create({\n collection: "pages",\n depth: 0,\n context: { disableRevalidate: true },\n // biome-ignore lint/suspicious/noExplicitAny: Payload seed data type mismatch\n data: communitiesPage() as any,\n }),\n payload.create({\n collection: "pages",\n depth: 0,\n context: { disableRevalidate: true },\n // biome-ignore lint/suspicious/noExplicitAny: Payload seed data type mismatch\n data: marketplacesPage() as any,\n }),\n ])\n\n payload.logger.info(`\u2014 Seeded ${useCasePages.length} use case pages`)\n\n // Seed blog posts\n payload.logger.info("\u2014 Seeding blog posts...")\n\n const posts = blogPosts(categoryDocs)\n const createdPosts = await Promise.all(\n posts.map((post) =>\n payload.create({\n collection: "posts",\n depth: 0,\n context: { disableRevalidate: true },\n // biome-ignore lint/suspicious/noExplicitAny: Payload seed data type mismatch\n data: post as any,\n }),\n ),\n )\n\n payload.logger.info(`\u2014 Seeded ${createdPosts.length} blog posts`)\n\n payload.logger.info("\u2014 Seeding globals...")\n\n await Promise.all([\n payload.updateGlobal({\n slug: "header",\n context: {\n disableRevalidate: true,\n },\n data: {\n navItems: [\n {\n type: "megaMenu",\n label: "Product",\n megaMenuColumns: [\n {\n columnLabel: "Features",\n items: [\n {\n label: "Templates",\n description: "Beautiful, ready-to-use directory templates",\n icon: "layout",\n link: {\n type: "reference",\n reference: {\n relationTo: "pages",\n value: featurePages[0].id,\n },\n },\n },\n {\n label: "Monetization",\n description: "Built-in payments and subscriptions",\n icon: "dollarSign",\n link: {\n type: "reference",\n reference: {\n relationTo: "pages",\n value: featurePages[1].id,\n },\n },\n },\n {\n label: "SEO",\n description: "Schema markup and optimizations",\n icon: "search",\n link: {\n type: "reference",\n reference: {\n relationTo: "pages",\n value: featurePages[2].id,\n },\n },\n },\n ],\n },\n {\n columnLabel: "Tools",\n items: [\n {\n label: "Dashboard",\n description: "Powerful admin and analytics",\n icon: "barChart",\n link: {\n type: "reference",\n reference: {\n relationTo: "pages",\n value: featurePages[3].id,\n },\n },\n },\n {\n label: "Automation",\n description: "Smart workflows and actions",\n icon: "zap",\n link: {\n type: "reference",\n reference: {\n relationTo: "pages",\n value: featurePages[4].id,\n },\n },\n },\n {\n label: "Custom Fields",\n description: "Flexible schemas for any niche",\n icon: "layers",\n link: {\n type: "reference",\n reference: {\n relationTo: "pages",\n value: featurePages[5].id,\n },\n },\n },\n ],\n },\n ],\n },\n {\n type: "megaMenu",\n label: "Use Cases",\n megaMenuColumns: [\n {\n columnLabel: "Directory Types",\n items: [\n {\n label: "Local Services",\n description: "Plumbers, restaurants, photographers",\n icon: "globe",\n link: {\n type: "reference",\n reference: {\n relationTo: "pages",\n value: useCasePages[0].id,\n },\n },\n },\n {\n label: "B2B Vendor Hubs",\n description: "SaaS tools, agencies, consultants",\n icon: "building",\n link: {\n type: "reference",\n reference: {\n relationTo: "pages",\n value: useCasePages[1].id,\n },\n },\n },\n {\n label: "Communities",\n description: "Member directories, alumni networks",\n icon: "users",\n link: {\n type: "reference",\n reference: {\n relationTo: "pages",\n value: useCasePages[2].id,\n },\n },\n },\n {\n label: "Marketplaces",\n description: "Multi-vendor platforms",\n icon: "store",\n link: {\n type: "reference",\n reference: {\n relationTo: "pages",\n value: useCasePages[3].id,\n },\n },\n },\n ],\n },\n ],\n },\n {\n type: "link",\n label: "Pricing",\n link: {\n type: "reference",\n reference: {\n relationTo: "pages",\n value: pricingPage.id,\n },\n },\n },\n {\n type: "link",\n label: "Blog",\n link: {\n type: "custom",\n url: "/posts",\n },\n },\n {\n type: "link",\n label: "Sign In",\n link: {\n type: "custom",\n url: "/sign-in",\n },\n },\n {\n type: "link",\n label: "Get Started",\n link: {\n type: "custom",\n url: "/sign-up",\n },\n },\n ],\n },\n }),\n payload.updateGlobal({\n slug: "footer",\n context: {\n disableRevalidate: true,\n },\n data: {\n columns: [\n {\n title: "Product",\n links: [\n {\n link: {\n type: "reference",\n label: "Home",\n reference: {\n relationTo: "pages",\n value: homePage.id,\n },\n },\n },\n {\n link: {\n type: "reference",\n label: "Pricing",\n reference: {\n relationTo: "pages",\n value: pricingPage.id,\n },\n },\n },\n {\n link: {\n type: "reference",\n label: "Templates",\n reference: {\n relationTo: "pages",\n value: featurePages[0].id,\n },\n },\n },\n ],\n },\n {\n title: "Resources",\n links: [\n {\n link: {\n type: "custom",\n label: "Blog",\n url: "/posts",\n },\n },\n {\n link: {\n type: "custom",\n label: "Documentation",\n url: "/docs",\n },\n },\n ],\n },\n {\n title: "Company",\n links: [\n {\n link: {\n type: "reference",\n label: "About",\n reference: {\n relationTo: "pages",\n value: aboutPage.id,\n },\n },\n },\n ],\n },\n {\n title: "Legal",\n links: [\n {\n link: {\n type: "reference",\n label: "Privacy",\n reference: {\n relationTo: "pages",\n value: privacyPage.id,\n },\n },\n },\n {\n link: {\n type: "reference",\n label: "Terms",\n reference: {\n relationTo: "pages",\n value: termsPage.id,\n },\n },\n },\n ],\n },\n ],\n socialLinks: {\n twitter: "https://x.com/directoryhub",\n linkedin: "https://linkedin.com/company/directoryhub",\n github: "https://github.com/directoryhub",\n },\n newsletter: {\n enabled: true,\n title: "Newsletter",\n description: "Stay up to date with DirectoryHub through weekly updates to your inbox.",\n buttonText: "Subscribe",\n placeholder: "Enter your email",\n },\n copyrightText: "DirectoryHub",\n bottomLinks: [\n {\n link: {\n type: "custom",\n label: "Contact Support",\n url: "/support",\n },\n },\n ],\n },\n }),\n ])\n\n payload.logger.info("DirectoryHub database seeded successfully!")\n}\n',
5907
+ "marketing/payload/src/endpoints/seed/directoryhub/index.ts": 'import * as fs from "node:fs"\nimport * as path from "node:path"\nimport type { CollectionSlug, File, Payload, PayloadRequest } from "payload"\n\nimport { directoryHubAbout } from "./about"\nimport { faqData } from "./faqs"\nimport {\n analyticsPage,\n automationPage,\n dashboardPage,\n integrationsPage,\n securityPage,\n workflowsPage,\n} from "./features"\nimport { directoryHubHome } from "./home"\nimport { blogPosts } from "./posts"\nimport { directoryHubPricing } from "./pricing"\nimport { directoryHubPrivacy } from "./privacy"\nimport { directoryHubTerms } from "./terms"\nimport {\n marketingPage,\n operationsPage,\n productPage,\n salesPage,\n} from "./use-cases"\n\nconst collections: CollectionSlug[] = [\n "categories",\n "media",\n "pages",\n "posts",\n "forms",\n "form-submissions",\n "search",\n "faqs",\n]\n\nconst categories = [\n { title: "Business", slug: "business" },\n { title: "Technology", slug: "technology" },\n { title: "News", slug: "news" },\n { title: "Guides", slug: "guides" },\n]\n\n// Contact form configuration for DirectoryHub\nconst contactFormData = {\n title: "Contact Form",\n confirmationMessage: {\n root: {\n type: "root",\n children: [\n {\n type: "paragraph",\n children: [\n {\n type: "text",\n detail: 0,\n format: 0,\n mode: "normal",\n style: "",\n text: "Thanks for reaching out! We\'ll get back to you within 24 hours.",\n version: 1,\n },\n ],\n direction: "ltr" as const,\n format: "" as const,\n indent: 0,\n textFormat: 0,\n version: 1,\n },\n ],\n direction: "ltr" as const,\n format: "" as const,\n indent: 0,\n version: 1,\n },\n },\n confirmationType: "message" as const,\n fields: [\n {\n name: "name",\n label: "Name",\n required: true,\n blockType: "text" as const,\n },\n {\n name: "email",\n label: "Email",\n required: true,\n blockType: "email" as const,\n },\n {\n name: "subject",\n label: "Subject",\n required: false,\n blockType: "text" as const,\n },\n {\n name: "message",\n label: "Message",\n required: true,\n blockType: "textarea" as const,\n },\n ],\n submitButtonLabel: "Send Message",\n}\n\nexport const seedDirectoryHub = async ({\n payload,\n req,\n}: {\n payload: Payload\n req: PayloadRequest\n}): Promise<void> => {\n payload.logger.info("Seeding SaaSify database...")\n\n // Clear collections and globals\n payload.logger.info("\u2014 Clearing collections and globals...")\n\n // Clear header\n await payload.updateGlobal({\n slug: "header",\n data: {\n navItems: [],\n },\n depth: 0,\n context: {\n disableRevalidate: true,\n },\n })\n\n // Clear footer with new structure\n await payload.updateGlobal({\n slug: "footer",\n data: {\n columns: [],\n socialLinks: {},\n newsletter: { enabled: false },\n copyrightText: "",\n bottomLinks: [],\n },\n depth: 0,\n context: {\n disableRevalidate: true,\n },\n })\n\n // Delete collections sequentially to avoid database deadlocks\n for (const collection of collections) {\n if (payload.collections[collection]) {\n try {\n await payload.db.deleteMany({ collection, req, where: {} })\n } catch (error) {\n payload.logger.warn(`Warning: Could not clear ${collection}: ${error}`)\n }\n }\n }\n\n // Delete versions sequentially\n for (const collection of collections) {\n if (payload.collections[collection]?.config?.versions) {\n try {\n await payload.db.deleteVersions({ collection, req, where: {} })\n } catch (error) {\n payload.logger.warn(`Warning: Could not clear ${collection} versions: ${error}`)\n }\n }\n }\n\n payload.logger.info("\u2014 Seeding demo author...")\n\n await payload.delete({\n collection: "users",\n depth: 0,\n where: {\n email: {\n equals: "demo-author@example.com",\n },\n },\n })\n\n const _demoAuthor = await payload.create({\n collection: "users",\n data: {\n name: "SaaSify Team",\n email: "demo-author@example.com",\n password: "password",\n },\n })\n\n // Seed categories\n payload.logger.info("\u2014 Seeding categories...")\n\n const categoryDocs = await Promise.all(\n categories.map((category) =>\n payload.create({\n collection: "categories",\n data: {\n title: category.title,\n slug: category.slug,\n },\n }),\n ),\n )\n\n // Seed FAQs\n payload.logger.info("\u2014 Seeding FAQs...")\n\n const faqDocs = await Promise.all(\n faqData.map((faq) =>\n payload.create({\n collection: "faqs",\n // biome-ignore lint/suspicious/noExplicitAny: Payload seed data type mismatch\n data: faq as any,\n }),\n ),\n )\n\n payload.logger.info(`\u2014 Seeded ${faqDocs.length} FAQs`)\n\n // Upload hero dashboard image\n payload.logger.info("\u2014 Uploading hero media...")\n\n let heroImageDoc = null\n try {\n const heroImagePath = path.join(process.cwd(), "public/media/hero-dashboard.png")\n if (fs.existsSync(heroImagePath)) {\n const heroImageBuffer = fs.readFileSync(heroImagePath)\n const heroImageFile: File = {\n name: "hero-dashboard.png",\n data: heroImageBuffer,\n mimetype: "image/png",\n size: heroImageBuffer.byteLength,\n }\n heroImageDoc = await payload.create({\n collection: "media",\n data: {\n alt: "SaaSify Dashboard - Manage projects, track metrics, and configure settings",\n },\n file: heroImageFile,\n })\n payload.logger.info("\u2014 Hero image uploaded successfully")\n } else {\n payload.logger.info("\u2014 Hero image not found, using animated mockup fallback")\n }\n } catch (_error) {\n payload.logger.info("\u2014 Error uploading hero image, using animated mockup fallback")\n }\n\n // Upload testimonial images\n payload.logger.info("\u2014 Uploading testimonial images...")\n\n const testimonialImages: (typeof heroImageDoc)[] = []\n const testimonialImageFiles = [\n { name: "testimonial-1.jpg", alt: "Professional woman entrepreneur" },\n { name: "testimonial-2.jpg", alt: "Business professional reviewing analytics" },\n { name: "testimonial-3.jpg", alt: "Team collaboration meeting" },\n ]\n\n for (const imgData of testimonialImageFiles) {\n try {\n const imagePath = path.join(process.cwd(), `public/media/${imgData.name}`)\n if (fs.existsSync(imagePath)) {\n const imageBuffer = fs.readFileSync(imagePath)\n const imageFile: File = {\n name: imgData.name,\n data: imageBuffer,\n mimetype: "image/jpeg",\n size: imageBuffer.byteLength,\n }\n const imageDoc = await payload.create({\n collection: "media",\n data: {\n alt: imgData.alt,\n },\n file: imageFile,\n })\n testimonialImages.push(imageDoc)\n }\n } catch (_error) {\n payload.logger.info(`\u2014 Error uploading ${imgData.name}`)\n }\n }\n payload.logger.info(`\u2014 Uploaded ${testimonialImages.length} testimonial images`)\n\n payload.logger.info("\u2014 Seeding contact form...")\n\n const contactForm = await payload.create({\n collection: "forms",\n depth: 0,\n data: contactFormData,\n })\n\n payload.logger.info("\u2014 Seeding pages...")\n\n // Seed main pages\n const [homePage, pricingPage, aboutPage, privacyPage, termsPage] = await Promise.all([\n payload.create({\n collection: "pages",\n depth: 0,\n context: {\n disableRevalidate: true,\n },\n // biome-ignore lint/suspicious/noExplicitAny: Payload seed data type mismatch\n data: directoryHubHome({ heroImage: heroImageDoc, testimonialImages }) as any,\n }),\n payload.create({\n collection: "pages",\n depth: 0,\n context: {\n disableRevalidate: true,\n },\n // biome-ignore lint/suspicious/noExplicitAny: Payload seed data type mismatch\n data: directoryHubPricing() as any,\n }),\n payload.create({\n collection: "pages",\n depth: 0,\n context: {\n disableRevalidate: true,\n },\n // biome-ignore lint/suspicious/noExplicitAny: Payload seed data type mismatch\n data: directoryHubAbout({ contactForm }) as any,\n }),\n payload.create({\n collection: "pages",\n depth: 0,\n context: {\n disableRevalidate: true,\n },\n // biome-ignore lint/suspicious/noExplicitAny: Payload seed data type mismatch\n data: directoryHubPrivacy() as any,\n }),\n payload.create({\n collection: "pages",\n depth: 0,\n context: {\n disableRevalidate: true,\n },\n // biome-ignore lint/suspicious/noExplicitAny: Payload seed data type mismatch\n data: directoryHubTerms() as any,\n }),\n ])\n\n // Seed feature pages\n payload.logger.info("\u2014 Seeding feature pages...")\n\n const featurePages = await Promise.all([\n payload.create({\n collection: "pages",\n depth: 0,\n context: { disableRevalidate: true },\n // biome-ignore lint/suspicious/noExplicitAny: Payload seed data type mismatch\n data: integrationsPage() as any,\n }),\n payload.create({\n collection: "pages",\n depth: 0,\n context: { disableRevalidate: true },\n // biome-ignore lint/suspicious/noExplicitAny: Payload seed data type mismatch\n data: analyticsPage() as any,\n }),\n payload.create({\n collection: "pages",\n depth: 0,\n context: { disableRevalidate: true },\n // biome-ignore lint/suspicious/noExplicitAny: Payload seed data type mismatch\n data: securityPage() as any,\n }),\n payload.create({\n collection: "pages",\n depth: 0,\n context: { disableRevalidate: true },\n // biome-ignore lint/suspicious/noExplicitAny: Payload seed data type mismatch\n data: dashboardPage() as any,\n }),\n payload.create({\n collection: "pages",\n depth: 0,\n context: { disableRevalidate: true },\n // biome-ignore lint/suspicious/noExplicitAny: Payload seed data type mismatch\n data: automationPage() as any,\n }),\n payload.create({\n collection: "pages",\n depth: 0,\n context: { disableRevalidate: true },\n // biome-ignore lint/suspicious/noExplicitAny: Payload seed data type mismatch\n data: workflowsPage() as any,\n }),\n ])\n\n payload.logger.info(`\u2014 Seeded ${featurePages.length} feature pages`)\n\n // Seed use case pages\n payload.logger.info("\u2014 Seeding use case pages...")\n\n const useCasePages = await Promise.all([\n payload.create({\n collection: "pages",\n depth: 0,\n context: { disableRevalidate: true },\n // biome-ignore lint/suspicious/noExplicitAny: Payload seed data type mismatch\n data: salesPage() as any,\n }),\n payload.create({\n collection: "pages",\n depth: 0,\n context: { disableRevalidate: true },\n // biome-ignore lint/suspicious/noExplicitAny: Payload seed data type mismatch\n data: marketingPage() as any,\n }),\n payload.create({\n collection: "pages",\n depth: 0,\n context: { disableRevalidate: true },\n // biome-ignore lint/suspicious/noExplicitAny: Payload seed data type mismatch\n data: productPage() as any,\n }),\n payload.create({\n collection: "pages",\n depth: 0,\n context: { disableRevalidate: true },\n // biome-ignore lint/suspicious/noExplicitAny: Payload seed data type mismatch\n data: operationsPage() as any,\n }),\n ])\n\n payload.logger.info(`\u2014 Seeded ${useCasePages.length} use case pages`)\n\n // Seed blog posts\n payload.logger.info("\u2014 Seeding blog posts...")\n\n const posts = blogPosts(categoryDocs)\n const createdPosts = await Promise.all(\n posts.map((post) =>\n payload.create({\n collection: "posts",\n depth: 0,\n context: { disableRevalidate: true },\n // biome-ignore lint/suspicious/noExplicitAny: Payload seed data type mismatch\n data: post as any,\n }),\n ),\n )\n\n payload.logger.info(`\u2014 Seeded ${createdPosts.length} blog posts`)\n\n payload.logger.info("\u2014 Seeding globals...")\n\n await Promise.all([\n payload.updateGlobal({\n slug: "header",\n context: {\n disableRevalidate: true,\n },\n data: {\n navItems: [\n {\n type: "megaMenu",\n label: "Product",\n megaMenuColumns: [\n {\n columnLabel: "Core Features",\n items: [\n {\n label: "Integrations",\n description: "Connect with 100+ tools you already use",\n icon: "layout",\n link: {\n type: "reference",\n reference: {\n relationTo: "pages",\n value: featurePages[0].id,\n },\n },\n },\n {\n label: "Analytics",\n description: "Real-time insights and reporting dashboards",\n icon: "barChart",\n link: {\n type: "reference",\n reference: {\n relationTo: "pages",\n value: featurePages[1].id,\n },\n },\n },\n {\n label: "Security",\n description: "Enterprise-grade protection and compliance",\n icon: "shield",\n link: {\n type: "reference",\n reference: {\n relationTo: "pages",\n value: featurePages[2].id,\n },\n },\n },\n ],\n },\n {\n columnLabel: "Productivity",\n items: [\n {\n label: "Dashboard",\n description: "Unified command center for your team",\n icon: "layout",\n link: {\n type: "reference",\n reference: {\n relationTo: "pages",\n value: featurePages[3].id,\n },\n },\n },\n {\n label: "Automation",\n description: "Streamline repetitive tasks instantly",\n icon: "zap",\n link: {\n type: "reference",\n reference: {\n relationTo: "pages",\n value: featurePages[4].id,\n },\n },\n },\n {\n label: "Workflows",\n description: "Build custom processes without code",\n icon: "layers",\n link: {\n type: "reference",\n reference: {\n relationTo: "pages",\n value: featurePages[5].id,\n },\n },\n },\n ],\n },\n ],\n },\n {\n type: "megaMenu",\n label: "Solutions",\n megaMenuColumns: [\n {\n columnLabel: "By Team",\n items: [\n {\n label: "Sales Teams",\n description: "Close deals faster with smart tools",\n icon: "target",\n link: {\n type: "reference",\n reference: {\n relationTo: "pages",\n value: useCasePages[0].id,\n },\n },\n },\n {\n label: "Marketing Teams",\n description: "Launch campaigns that convert",\n icon: "rocket",\n link: {\n type: "reference",\n reference: {\n relationTo: "pages",\n value: useCasePages[1].id,\n },\n },\n },\n {\n label: "Product Teams",\n description: "Ship features users love",\n icon: "layers",\n link: {\n type: "reference",\n reference: {\n relationTo: "pages",\n value: useCasePages[2].id,\n },\n },\n },\n {\n label: "Operations",\n description: "Scale without the growing pains",\n icon: "settings",\n link: {\n type: "reference",\n reference: {\n relationTo: "pages",\n value: useCasePages[3].id,\n },\n },\n },\n ],\n },\n ],\n },\n {\n type: "link",\n label: "Pricing",\n link: {\n type: "reference",\n reference: {\n relationTo: "pages",\n value: pricingPage.id,\n },\n },\n },\n {\n type: "link",\n label: "Blog",\n link: {\n type: "custom",\n url: "/posts",\n },\n },\n {\n type: "link",\n label: "Sign In",\n link: {\n type: "custom",\n url: "/sign-in",\n },\n },\n {\n type: "link",\n label: "Get Started",\n link: {\n type: "custom",\n url: "/sign-up",\n },\n },\n ],\n },\n }),\n payload.updateGlobal({\n slug: "footer",\n context: {\n disableRevalidate: true,\n },\n data: {\n columns: [\n {\n title: "Product",\n links: [\n {\n link: {\n type: "reference",\n label: "Home",\n reference: {\n relationTo: "pages",\n value: homePage.id,\n },\n },\n },\n {\n link: {\n type: "reference",\n label: "Pricing",\n reference: {\n relationTo: "pages",\n value: pricingPage.id,\n },\n },\n },\n {\n link: {\n type: "reference",\n label: "Integrations",\n reference: {\n relationTo: "pages",\n value: featurePages[0].id,\n },\n },\n },\n ],\n },\n {\n title: "Resources",\n links: [\n {\n link: {\n type: "custom",\n label: "Blog",\n url: "/posts",\n },\n },\n {\n link: {\n type: "custom",\n label: "Documentation",\n url: "/docs",\n },\n },\n ],\n },\n {\n title: "Company",\n links: [\n {\n link: {\n type: "reference",\n label: "About",\n reference: {\n relationTo: "pages",\n value: aboutPage.id,\n },\n },\n },\n ],\n },\n {\n title: "Legal",\n links: [\n {\n link: {\n type: "reference",\n label: "Privacy",\n reference: {\n relationTo: "pages",\n value: privacyPage.id,\n },\n },\n },\n {\n link: {\n type: "reference",\n label: "Terms",\n reference: {\n relationTo: "pages",\n value: termsPage.id,\n },\n },\n },\n ],\n },\n ],\n socialLinks: {\n twitter: "https://x.com/saasify",\n linkedin: "https://linkedin.com/company/saasify",\n github: "https://github.com/saasify",\n },\n newsletter: {\n enabled: true,\n title: "Newsletter",\n description: "Get product updates, tips, and insights delivered weekly.",\n buttonText: "Subscribe",\n placeholder: "Enter your email",\n },\n copyrightText: "SaaSify",\n bottomLinks: [\n {\n link: {\n type: "custom",\n label: "Contact Support",\n url: "/support",\n },\n },\n ],\n },\n }),\n ])\n\n payload.logger.info("SaaSify database seeded successfully!")\n}\n',
5123
5908
  "marketing/payload/src/endpoints/seed/directoryhub/posts.ts": `import type { Category, Post } from "@/payload-types"
5124
5909
  import { createRichText } from "./richtext-helper"
5125
5910
 
@@ -5142,601 +5927,611 @@ export const blogPosts = (categories: Category[]): Partial<Post>[] => {
5142
5927
  const findCategory = (slug: string) => categories.find((c) => c.slug === slug)?.id
5143
5928
 
5144
5929
  const posts: Partial<Post>[] = [
5145
- // Directory Business Strategies (5 posts)
5930
+ // Product & Growth (5 posts)
5146
5931
  {
5147
- title: "How to Launch a Profitable Directory Website in 2024",
5148
- slug: "how-to-launch-profitable-directory-website-2024",
5932
+ title: "How to Build a Product-Led Growth Strategy in 2024",
5933
+ slug: "how-to-build-product-led-growth-strategy-2024",
5149
5934
  _status: "published",
5150
5935
  publishedAt: new Date("2024-01-15").toISOString(),
5151
5936
  categories: findCategory("business") ? [findCategory("business")!] : [],
5152
5937
  content: generatePostContent([
5153
5938
  {
5154
- heading: "The Directory Business Opportunity",
5939
+ heading: "The Rise of Product-Led Growth",
5155
5940
  content:
5156
- "Directory websites remain one of the most viable online business models in 2024. Unlike content sites that require constant updates, directories generate recurring revenue through listings and subscriptions. This guide walks you through everything you need to know to launch your first directory successfully.",
5941
+ "Product-led growth (PLG) has become the dominant go-to-market strategy for modern SaaS companies. By letting the product drive acquisition, conversion, and expansion, companies like Slack, Dropbox, and Notion have achieved explosive growth with efficient unit economics.",
5157
5942
  },
5158
5943
  {
5159
- heading: "Choosing Your Niche",
5944
+ heading: "Core PLG Principles",
5160
5945
  content:
5161
- "The key to a successful directory is finding a niche with demand but limited competition. Look for industries where businesses actively seek customers online but generic directories like Yelp or Google Maps don't serve well. Professional services, B2B vendors, and specialized local services are excellent starting points.",
5946
+ "At its heart, PLG is about removing friction. Users should be able to experience value from your product without talking to sales, attending demos, or jumping through hoops. The product itself becomes your best salesperson.",
5162
5947
  },
5163
5948
  {
5164
- heading: "Building Your MVP",
5949
+ heading: "Designing for Self-Service",
5165
5950
  content:
5166
- "Don't spend months building the perfect directory. Launch with a minimum viable product featuring 50-100 quality listings, basic search and filtering, and a simple submission form. You can always add features later based on user feedback.",
5951
+ "Build onboarding flows that get users to their 'aha moment' as quickly as possible. Use progressive disclosure to avoid overwhelming new users. Implement in-app guidance that teaches by doing, not by reading documentation.",
5167
5952
  },
5168
5953
  {
5169
- heading: "Acquiring Your First Listings",
5954
+ heading: "Freemium vs Free Trial",
5170
5955
  content:
5171
- "Start by manually adding listings from public sources like business registrations and industry associations. Then reach out to businesses directly with free listings to build your initial database. Quality matters more than quantity in the early stages.",
5956
+ "Freemium works best for products with low marginal costs and strong network effects. Free trials work better for complex products where full functionality is needed to demonstrate value. Some companies combine both approaches.",
5172
5957
  },
5173
5958
  {
5174
- heading: "Monetization Strategies",
5959
+ heading: "Measuring PLG Success",
5175
5960
  content:
5176
- "The most successful directories use multiple revenue streams: premium listings, featured placements, subscription tiers, and lead generation fees. Start with one model and expand as you understand what your audience and listed businesses value most.",
5961
+ "Track activation rate, time-to-value, expansion revenue, and product-qualified leads. The ratio of self-serve to sales-assisted conversions shows how effectively your product sells itself.",
5177
5962
  },
5178
5963
  ]),
5179
5964
  meta: {
5180
- title: "How to Launch a Profitable Directory Website in 2024",
5965
+ title: "How to Build a Product-Led Growth Strategy in 2024",
5181
5966
  description:
5182
- "Complete guide to starting a directory business. Learn niche selection, MVP building, listing acquisition, and monetization strategies.",
5967
+ "Learn the principles of product-led growth and how to implement a PLG strategy. From freemium models to activation metrics.",
5183
5968
  },
5184
5969
  },
5185
5970
  {
5186
- title: "10 Directory Business Models That Actually Make Money",
5187
- slug: "10-directory-business-models-that-make-money",
5971
+ title: "10 SaaS Metrics Every Founder Should Track",
5972
+ slug: "10-saas-metrics-every-founder-should-track",
5188
5973
  _status: "published",
5189
5974
  publishedAt: new Date("2024-01-22").toISOString(),
5190
5975
  categories: findCategory("business") ? [findCategory("business")!] : [],
5191
5976
  content: generatePostContent([
5192
5977
  {
5193
- heading: "Introduction to Directory Monetization",
5978
+ heading: "Why Metrics Matter",
5194
5979
  content:
5195
- "Not all directories are created equal when it comes to making money. Some niches and business models consistently outperform others. Here are 10 proven directory business models that generate real revenue.",
5980
+ "SaaS businesses run on metrics. The right numbers help you make better decisions, raise capital, and identify problems before they become crises. Here are the 10 metrics every SaaS founder needs to understand and track.",
5196
5981
  },
5197
5982
  {
5198
- heading: "1. Local Service Directories",
5983
+ heading: "1. Monthly Recurring Revenue (MRR)",
5199
5984
  content:
5200
- "Directories connecting homeowners with plumbers, electricians, and contractors generate revenue through lead fees and featured placements. HomeAdvisor built a billion-dollar business on this model.",
5985
+ "The foundation of SaaS metrics. Track new MRR, expansion MRR, contraction MRR, and churned MRR separately to understand the components of your growth.",
5201
5986
  },
5202
5987
  {
5203
- heading: "2. B2B Software Directories",
5988
+ heading: "2. Annual Recurring Revenue (ARR)",
5204
5989
  content:
5205
- "Think G2 or Capterra. These directories charge software vendors for premium profiles, lead capture, and verified reviews. High ticket items mean high willingness to pay for visibility.",
5990
+ "MRR \xD7 12, but only if your MRR is relatively stable. ARR is the standard metric for SaaS valuations and helps with long-term planning and forecasting.",
5206
5991
  },
5207
5992
  {
5208
- heading: "3. Professional Service Directories",
5993
+ heading: "3. Customer Acquisition Cost (CAC)",
5209
5994
  content:
5210
- "Lawyers, accountants, and consultants pay premium prices for qualified leads. Directories in these niches can charge $50-500 per lead depending on the practice area.",
5995
+ "Total sales and marketing spend divided by new customers acquired. Include all costs: salaries, tools, ads, content, events. Measure by channel for optimization.",
5211
5996
  },
5212
5997
  {
5213
- heading: "4. Wedding Vendor Directories",
5998
+ heading: "4. Customer Lifetime Value (LTV)",
5214
5999
  content:
5215
- "The wedding industry spends heavily on advertising. Directories connecting couples with photographers, venues, and caterers can charge $200-2000/year for premium vendor listings.",
6000
+ "Average revenue per customer divided by churn rate. LTV:CAC ratio should be 3:1 or higher for a healthy business. Below 3:1 means you're spending too much to acquire customers.",
5216
6001
  },
5217
6002
  {
5218
- heading: "5. Real Estate Directories",
6003
+ heading: "5. Churn Rate",
5219
6004
  content:
5220
- "Agent directories, property listings, and real estate service directories generate revenue through subscriptions and featured placements. High commission values support premium pricing.",
6005
+ "Percentage of customers or revenue lost in a period. Track both logo churn (customer count) and revenue churn. Negative revenue churn (expansion > losses) is the goal.",
5221
6006
  },
5222
6007
  ]),
5223
6008
  meta: {
5224
- title: "10 Directory Business Models That Actually Make Money",
6009
+ title: "10 SaaS Metrics Every Founder Should Track",
5225
6010
  description:
5226
- "Discover the most profitable directory niches and business models. From local services to B2B software, learn which directories generate real revenue.",
6011
+ "Essential SaaS metrics explained: MRR, ARR, CAC, LTV, churn, and more. Learn what to track and why it matters.",
5227
6012
  },
5228
6013
  },
5229
6014
  {
5230
- title: "The Complete Guide to Niche Directory Market Research",
5231
- slug: "complete-guide-niche-directory-market-research",
6015
+ title: "The Complete Guide to SaaS Pricing Strategies",
6016
+ slug: "complete-guide-saas-pricing-strategies",
5232
6017
  _status: "published",
5233
6018
  publishedAt: new Date("2024-02-01").toISOString(),
5234
6019
  categories: findCategory("business") ? [findCategory("business")!] : [],
5235
6020
  content: generatePostContent([
5236
6021
  {
5237
- heading: "Why Market Research Matters",
6022
+ heading: "Pricing Is Your Most Important Decision",
5238
6023
  content:
5239
- "The difference between a successful directory and a failed one often comes down to niche selection. Proper market research helps you find opportunities with real demand, identify your competition, and understand what businesses will pay for visibility.",
6024
+ "Pricing affects every part of your business: which customers you attract, how you position against competitors, and your path to profitability. Yet most SaaS companies spend more time on their logo than their pricing.",
5240
6025
  },
5241
6026
  {
5242
- heading: "Evaluating Market Demand",
6027
+ heading: "Value-Based Pricing",
5243
6028
  content:
5244
- 'Use Google Keyword Planner to find search volume for terms like "[industry] directory" or "find [service] near me". Look for niches with at least 1,000 monthly searches for relevant terms. Also check if businesses in the space are actively advertising on Google.',
6029
+ "Price based on the value you deliver, not your costs. A tool that saves customers $10,000/month can command $1,000/month, regardless of what it costs you to deliver.",
5245
6030
  },
5246
6031
  {
5247
- heading: "Analyzing Competition",
6032
+ heading: "Per-Seat vs Usage-Based",
5248
6033
  content:
5249
- "Search for existing directories in your target niche. Analyze their listings count, monetization model, and user experience. A niche with 2-3 mediocre competitors is often better than one with no competition (which might mean no demand).",
6034
+ "Per-seat pricing is predictable but can limit adoption. Usage-based pricing aligns costs with value but is harder to forecast. Many companies are moving to hybrid models.",
5250
6035
  },
5251
6036
  {
5252
- heading: "Validating Willingness to Pay",
6037
+ heading: "Designing Your Pricing Tiers",
5253
6038
  content:
5254
- "Before building, reach out to 20-30 businesses in your target niche. Ask if they'd pay $50-200/month for premium visibility in a directory. If you can't get at least 5 \\"yes\\" responses, reconsider your niche.",
6039
+ "Three tiers is the sweet spot for most SaaS companies. Each tier should target a distinct customer segment with features they specifically value. Make the middle tier your target.",
5255
6040
  },
5256
6041
  {
5257
- heading: "Sizing Your Market",
6042
+ heading: "Testing and Iteration",
5258
6043
  content:
5259
- "Estimate the total number of businesses that could list in your directory and realistic conversion rates. A niche with 10,000 potential listings and 5% premium conversion at $100/month is a $500K annual opportunity.",
6044
+ "Pricing is never 'done.' Run price tests, survey customers about willingness to pay, and adjust as you learn. Companies that actively manage pricing grow 2-4x faster.",
5260
6045
  },
5261
6046
  ]),
5262
6047
  meta: {
5263
- title: "The Complete Guide to Niche Directory Market Research",
6048
+ title: "The Complete Guide to SaaS Pricing Strategies",
5264
6049
  description:
5265
- "Learn how to research and validate directory niches before building. Evaluate demand, competition, and monetization potential.",
6050
+ "Master SaaS pricing with this comprehensive guide. Value-based pricing, tiering strategies, and testing approaches.",
5266
6051
  },
5267
6052
  },
5268
6053
  {
5269
- title: "Building a Directory Website Without Code: Tools and Platforms",
5270
- slug: "building-directory-website-without-code",
6054
+ title: "Building Your First SaaS MVP: A Step-by-Step Guide",
6055
+ slug: "building-first-saas-mvp-step-by-step-guide",
5271
6056
  _status: "published",
5272
6057
  publishedAt: new Date("2024-02-10").toISOString(),
5273
6058
  categories: findCategory("technology") ? [findCategory("technology")!] : [],
5274
6059
  content: generatePostContent([
5275
6060
  {
5276
- heading: "The No-Code Directory Revolution",
6061
+ heading: "What is an MVP Really?",
5277
6062
  content:
5278
- "Building a directory website no longer requires months of development or a technical background. Modern platforms let you launch professional directories in days. Here's how to choose the right tool for your needs.",
6063
+ "An MVP is not a half-baked product. It's the smallest thing you can build that delivers real value and tests your core assumptions. The goal is learning, not launching.",
5279
6064
  },
5280
6065
  {
5281
- heading: "Key Features to Look For",
6066
+ heading: "Defining Your Core Value Proposition",
5282
6067
  content:
5283
- "Any directory platform should offer: customizable listing fields, search and filtering, user submissions, payment processing, and SEO optimization. Bonus features include reviews, maps integration, and email notifications.",
6068
+ "Before writing code, articulate the one thing your product does better than anything else. Your MVP should nail that one thing perfectly. Everything else can wait.",
5284
6069
  },
5285
6070
  {
5286
- heading: "Dedicated Directory Platforms",
6071
+ heading: "Feature Prioritization",
5287
6072
  content:
5288
- "Platforms like DirectoryHub, Jetkicks, and Publishizer are purpose-built for directories. They offer the fastest path to launch with pre-built features specifically for directory use cases.",
6073
+ "List every feature you think you need, then ruthlessly cut. Ask: does this directly support the core value proposition? If not, cut it. You can always add features later.",
5289
6074
  },
5290
6075
  {
5291
- heading: "WordPress with Directory Plugins",
6076
+ heading: "Building vs Buying",
5292
6077
  content:
5293
- "WordPress plugins like GeoDirectory and Business Directory Plugin offer flexibility but require more setup. Best for those comfortable with WordPress who want full customization control.",
6078
+ "Don't build what you can buy or integrate. Use Stripe for payments, Auth0 for authentication, SendGrid for email. Focus your engineering time on what makes you unique.",
5294
6079
  },
5295
6080
  {
5296
- heading: "Making Your Decision",
6081
+ heading: "Launch and Learn",
5297
6082
  content:
5298
- "For most people starting out, a dedicated directory platform is the best choice. You'll launch faster, avoid technical headaches, and can focus on growing your directory instead of managing code.",
6083
+ "Ship before you're comfortable. Your first users will tell you what's really important. Their feedback is more valuable than any amount of planning.",
5299
6084
  },
5300
6085
  ]),
5301
6086
  meta: {
5302
- title: "Building a Directory Website Without Code: Tools and Platforms",
6087
+ title: "Building Your First SaaS MVP: A Step-by-Step Guide",
5303
6088
  description:
5304
- "Compare no-code directory platforms and tools. Launch your directory website in days without writing a single line of code.",
6089
+ "Learn how to build a minimum viable SaaS product. From defining your value proposition to launching and learning.",
5305
6090
  },
5306
6091
  },
5307
6092
  {
5308
- title: "How to Price Directory Listings for Maximum Revenue",
5309
- slug: "how-to-price-directory-listings-maximum-revenue",
6093
+ title: "Customer Onboarding Best Practices for SaaS Companies",
6094
+ slug: "customer-onboarding-best-practices-saas",
5310
6095
  _status: "published",
5311
6096
  publishedAt: new Date("2024-02-18").toISOString(),
5312
6097
  categories: findCategory("business") ? [findCategory("business")!] : [],
5313
6098
  content: generatePostContent([
5314
6099
  {
5315
- heading: "The Psychology of Directory Pricing",
6100
+ heading: "The Critical First Week",
5316
6101
  content:
5317
- "Pricing directory listings is both art and science. Price too low and you leave money on the table. Price too high and no one signs up. Here's how to find the sweet spot that maximizes revenue.",
6102
+ "Users who don't activate within the first week rarely come back. Your onboarding flow must get users to their first success as quickly as possible. This is where retention is won or lost.",
5318
6103
  },
5319
6104
  {
5320
- heading: "Understanding Business Value",
6105
+ heading: "Define Your Activation Moment",
5321
6106
  content:
5322
- "The right price depends on the value your directory delivers. A lead worth $500 justifies higher listing fees than a lead worth $50. Start by understanding the lifetime value of customers your listings generate.",
6107
+ "What action indicates a user 'gets it'? For Slack, it's sending 2,000 team messages. For Dropbox, it's adding a file. Identify your activation metric and optimize everything to drive it.",
5323
6108
  },
5324
6109
  {
5325
- heading: "Creating Pricing Tiers",
6110
+ heading: "Progressive Disclosure",
5326
6111
  content:
5327
- "Offer 3-4 tiers: Free (basic visibility), Starter ($29-49/mo), Professional ($99-149/mo), and Premium ($249-499/mo). Each tier should add clear value through better placement, more features, or enhanced visibility.",
6112
+ "Don't overwhelm new users with every feature. Show them one thing at a time, building complexity as they master basics. Use contextual triggers to introduce features when relevant.",
5328
6113
  },
5329
6114
  {
5330
- heading: "Annual vs Monthly Billing",
6115
+ heading: "Personalized Onboarding",
5331
6116
  content:
5332
- "Offer 20-30% discounts for annual billing to improve cash flow and reduce churn. Most businesses that commit annually stay for multiple years, dramatically increasing lifetime value.",
6117
+ "Different users have different goals. Ask about use cases during signup and customize the onboarding flow accordingly. A marketer and a developer should see different paths.",
5333
6118
  },
5334
6119
  {
5335
- heading: "Testing and Optimization",
6120
+ heading: "Measuring and Improving",
5336
6121
  content:
5337
- "Start with prices in the middle of your estimated range and adjust based on conversion rates. If everyone is buying, you're priced too low. If no one is buying, you're priced too high or not communicating value effectively.",
6122
+ "Track completion rates for each onboarding step. Identify where users drop off and run experiments to improve. Small improvements in activation compound into major retention gains.",
5338
6123
  },
5339
6124
  ]),
5340
6125
  meta: {
5341
- title: "How to Price Directory Listings for Maximum Revenue",
6126
+ title: "Customer Onboarding Best Practices for SaaS Companies",
5342
6127
  description:
5343
- "Learn directory pricing strategies that maximize revenue. Create pricing tiers, understand business value, and optimize conversions.",
6128
+ "Design onboarding flows that drive activation and retention. Progressive disclosure, personalization, and metrics.",
5344
6129
  },
5345
6130
  },
5346
6131
 
5347
- // Monetization Guides (4 posts)
6132
+ // Team Productivity (4 posts)
5348
6133
  {
5349
- title: "Stripe Integration for Directory Payments: Complete Guide",
5350
- slug: "stripe-integration-directory-payments-guide",
6134
+ title: "Remote Team Collaboration: Tools and Best Practices",
6135
+ slug: "remote-team-collaboration-tools-best-practices",
5351
6136
  _status: "published",
5352
6137
  publishedAt: new Date("2024-02-25").toISOString(),
5353
6138
  categories: findCategory("technology") ? [findCategory("technology")!] : [],
5354
6139
  content: generatePostContent([
5355
6140
  {
5356
- heading: "Why Stripe for Directories",
6141
+ heading: "The Remote Work Toolkit",
5357
6142
  content:
5358
- "Stripe is the gold standard for directory payments. It handles subscriptions, one-time payments, invoicing, and even marketplace-style payouts. This guide covers everything you need to know to integrate Stripe with your directory.",
6143
+ "Effective remote collaboration requires the right tools for the right jobs. Communication, project management, documentation, and async work each need dedicated solutions that integrate well together.",
5359
6144
  },
5360
6145
  {
5361
- heading: "Setting Up Stripe Connect",
6146
+ heading: "Synchronous vs Asynchronous",
5362
6147
  content:
5363
- "For directories that pay out to listed businesses (like marketplaces), Stripe Connect handles split payments automatically. Connect your Stripe account, configure payout schedules, and let Stripe handle tax reporting.",
6148
+ "Not everything needs a meeting. Use async communication (documented decisions, recorded videos, written updates) as your default. Reserve synchronous time for complex discussions and relationship building.",
5364
6149
  },
5365
6150
  {
5366
- heading: "Subscription Management",
6151
+ heading: "Documentation Culture",
5367
6152
  content:
5368
- "Use Stripe Billing to manage directory subscriptions. Create products for each tier, configure billing cycles, and let Stripe handle upgrades, downgrades, and cancellations automatically.",
6153
+ "Remote teams that document well operate faster than those that don't. Write things down: decisions, processes, context. Future you (and your teammates) will thank you.",
5369
6154
  },
5370
6155
  {
5371
- heading: "Handling Failed Payments",
6156
+ heading: "Building Connection Remotely",
5372
6157
  content:
5373
- "Stripe's Smart Retries automatically attempt to collect failed payments at optimal times. Configure dunning emails to notify customers and give them a chance to update payment methods before cancellation.",
6158
+ "Remote work can be isolating. Create intentional spaces for non-work interaction. Virtual coffee chats, team channels for hobbies, and periodic in-person gatherings build the trust that makes collaboration work.",
5374
6159
  },
5375
6160
  {
5376
- heading: "Reporting and Analytics",
6161
+ heading: "Managing Across Time Zones",
5377
6162
  content:
5378
- "Stripe Dashboard provides comprehensive revenue reporting. Track MRR, churn, ARPU, and customer lifetime value. Export data for deeper analysis or integrate with business intelligence tools.",
6163
+ "Distributed teams require intentional overlap. Establish core hours where everyone is available, and use async tools for everything else. Rotate meeting times to share the burden fairly.",
5379
6164
  },
5380
6165
  ]),
5381
6166
  meta: {
5382
- title: "Stripe Integration for Directory Payments: Complete Guide",
6167
+ title: "Remote Team Collaboration: Tools and Best Practices",
5383
6168
  description:
5384
- "Learn how to integrate Stripe with your directory for subscriptions, one-time payments, and marketplace payouts.",
6169
+ "Build effective remote collaboration with the right tools and practices. Async communication, documentation, and connection.",
5385
6170
  },
5386
6171
  },
5387
6172
  {
5388
- title: "Premium Listing Features That Businesses Will Pay For",
5389
- slug: "premium-listing-features-businesses-will-pay-for",
6173
+ title: "How to Build Effective Workflows Without Code",
6174
+ slug: "build-effective-workflows-without-code",
5390
6175
  _status: "published",
5391
6176
  publishedAt: new Date("2024-03-05").toISOString(),
5392
- categories: findCategory("business") ? [findCategory("business")!] : [],
6177
+ categories: findCategory("technology") ? [findCategory("technology")!] : [],
5393
6178
  content: generatePostContent([
5394
6179
  {
5395
- heading: "What Makes Premium Worth It",
6180
+ heading: "The No-Code Automation Revolution",
5396
6181
  content:
5397
- "The key to selling premium listings is offering features that directly impact business results. Vanity features don't sell. Features that generate leads, build credibility, and drive traffic do.",
6182
+ "You don't need to be a developer to automate your work. Modern no-code tools let anyone build sophisticated workflows that save hours every week. Here's how to get started.",
5398
6183
  },
5399
6184
  {
5400
- heading: "Featured Placement",
6185
+ heading: "Identifying Automation Opportunities",
5401
6186
  content:
5402
- "The most valuable premium feature is visibility. Featured spots on the homepage, category pages, and search results generate significantly more views and clicks. This alone can justify $100-500/month premium pricing.",
6187
+ "Start by documenting repetitive tasks. Data entry, status updates, notifications, and report generation are all automation candidates. If you do it the same way every time, it can probably be automated.",
5403
6188
  },
5404
6189
  {
5405
- heading: "Enhanced Profiles",
6190
+ heading: "Choosing the Right Tools",
5406
6191
  content:
5407
- "Allow premium listings to add more photos, videos, service details, and portfolio examples. Rich profiles convert browsers into customers at higher rates.",
6192
+ "Tools like Zapier, Make, and Workato connect your existing apps. More specialized tools handle specific use cases. Start simple and add complexity as you learn.",
5408
6193
  },
5409
6194
  {
5410
- heading: "Lead Capture Tools",
6195
+ heading: "Building Your First Workflow",
5411
6196
  content:
5412
- "Give premium listings direct lead capture with contact forms, click-to-call buttons, and quote request features. Track leads in a dashboard so businesses can see the ROI of their listing.",
6197
+ "Start with a simple two-step automation: when X happens, do Y. Master the basics before adding conditions, loops, and branching logic. Complexity should be added incrementally.",
5413
6198
  },
5414
6199
  {
5415
- heading: "Verification Badges",
6200
+ heading: "Maintenance and Monitoring",
5416
6201
  content:
5417
- "Verified, licensed, or certified badges build trust. Offer verification as a premium feature or require premium subscriptions to display existing credentials prominently.",
6202
+ "Automations need maintenance. Set up error notifications, review runs regularly, and update workflows as your processes change. Broken automations are worse than no automation.",
5418
6203
  },
5419
6204
  ]),
5420
6205
  meta: {
5421
- title: "Premium Listing Features That Businesses Will Pay For",
6206
+ title: "How to Build Effective Workflows Without Code",
5422
6207
  description:
5423
- "Discover which premium directory features generate the most revenue. Featured placements, enhanced profiles, lead capture, and more.",
6208
+ "Automate repetitive tasks with no-code tools. Identify opportunities, choose tools, and build your first workflows.",
5424
6209
  },
5425
6210
  },
5426
6211
  {
5427
- title: "Lead Generation Revenue: How Directories Charge Per Lead",
5428
- slug: "lead-generation-revenue-directories-charge-per-lead",
6212
+ title: "Automating Repetitive Tasks: A Practical Guide",
6213
+ slug: "automating-repetitive-tasks-practical-guide",
5429
6214
  _status: "published",
5430
6215
  publishedAt: new Date("2024-03-12").toISOString(),
5431
- categories: findCategory("business") ? [findCategory("business")!] : [],
6216
+ categories: findCategory("technology") ? [findCategory("technology")!] : [],
5432
6217
  content: generatePostContent([
5433
6218
  {
5434
- heading: "The Lead Gen Model",
6219
+ heading: "The Real Cost of Repetitive Work",
5435
6220
  content:
5436
- "Instead of subscription fees, some directories charge businesses for each lead they receive. This model works especially well in high-value service industries where a single customer is worth hundreds or thousands of dollars.",
6221
+ "Knowledge workers spend an average of 4.5 hours per week on tasks that could be automated. That's 10+ weeks per year. Automation isn't just about efficiency\u2014it's about reclaiming your time for meaningful work.",
5437
6222
  },
5438
6223
  {
5439
- heading: "Pricing Your Leads",
6224
+ heading: "Quick Wins: Personal Productivity",
5440
6225
  content:
5441
- "Lead pricing depends on industry and lead quality. Home service leads typically sell for $15-75, legal leads for $50-500, and B2B software leads for $100-1000. Price based on the value of closed deals.",
6226
+ "Start with your own workflow. Text expansion, email templates, keyboard shortcuts, and personal automations add up. Small improvements compound into major time savings.",
5442
6227
  },
5443
6228
  {
5444
- heading: "Qualifying Leads",
6229
+ heading: "Team-Level Automation",
5445
6230
  content:
5446
- "Not all leads are created equal. Use qualification forms to capture budget, timeline, and specific needs. Better qualified leads command higher prices and lead to happier customers.",
6231
+ "Scale from personal to team. Automated status updates, recurring reports, and notification routing reduce coordination overhead. The goal is information flow without manual intervention.",
5447
6232
  },
5448
6233
  {
5449
- heading: "Distributing Leads",
6234
+ heading: "Business Process Automation",
5450
6235
  content:
5451
- "Exclusive leads go to one business and command premium prices. Shared leads go to 3-5 businesses at lower prices. Match your model to industry norms and business preferences.",
6236
+ "At the business level, automate onboarding, billing, support triage, and reporting. These automations scale with the company and free up people for higher-value work.",
5452
6237
  },
5453
6238
  {
5454
- heading: "Tracking and Reporting",
6239
+ heading: "Knowing What Not to Automate",
5455
6240
  content:
5456
- "Provide businesses with lead dashboards showing volume, sources, and conversion tracking. Transparency builds trust and helps businesses see the value of your directory.",
6241
+ "Not everything should be automated. Creative work, relationship building, and judgment calls benefit from human touch. Automate the routine to make space for the meaningful.",
5457
6242
  },
5458
6243
  ]),
5459
6244
  meta: {
5460
- title: "Lead Generation Revenue: How Directories Charge Per Lead",
6245
+ title: "Automating Repetitive Tasks: A Practical Guide",
5461
6246
  description:
5462
- "Learn the lead generation business model for directories. Price leads, qualify inquiries, and build sustainable revenue.",
6247
+ "Reclaim hours every week by automating repetitive tasks. Personal productivity, team automation, and business processes.",
5463
6248
  },
5464
6249
  },
5465
6250
  {
5466
- title: "Affiliate Revenue Strategies for Directory Websites",
5467
- slug: "affiliate-revenue-strategies-directory-websites",
6251
+ title: "Scaling Your Team Operations from 10 to 100 People",
6252
+ slug: "scaling-team-operations-10-to-100-people",
5468
6253
  _status: "published",
5469
6254
  publishedAt: new Date("2024-03-20").toISOString(),
5470
6255
  categories: findCategory("business") ? [findCategory("business")!] : [],
5471
6256
  content: generatePostContent([
5472
6257
  {
5473
- heading: "Directories and Affiliate Marketing",
6258
+ heading: "The Scaling Challenge",
5474
6259
  content:
5475
- "Directories are natural fits for affiliate revenue. You're already connecting buyers with sellers. Adding affiliate links to relevant products and services creates an additional revenue stream without charging listed businesses more.",
6260
+ "What works at 10 people breaks at 50 and completely fails at 100. Communication, decision-making, and coordination all need to evolve as you grow. Here's how to scale intentionally.",
5476
6261
  },
5477
6262
  {
5478
- heading: "Choosing Affiliate Programs",
6263
+ heading: "Communication at Scale",
5479
6264
  content:
5480
- "Select programs relevant to your directory's audience. A B2B software directory might partner with SaaS tools. A local service directory might partner with insurance or financing companies.",
6265
+ "Move from all-hands to structured communication. Team-level updates, written announcements, and recorded videos replace ad-hoc conversations. Documentation becomes critical.",
5481
6266
  },
5482
6267
  {
5483
- heading: "Integration Strategies",
6268
+ heading: "Decision-Making Frameworks",
5484
6269
  content:
5485
- 'Add affiliate recommendations to comparison pages, resource sections, and even listing profiles (with permission). Create "tools we recommend" sections that add value while generating commissions.',
6270
+ "You can't be in every decision. Create clear frameworks for who decides what. DRI (Directly Responsible Individual) models, RACI matrices, and documented authority levels enable distributed decision-making.",
5486
6271
  },
5487
6272
  {
5488
- heading: "Disclosure and Trust",
6273
+ heading: "Process Without Bureaucracy",
5489
6274
  content:
5490
- "Always disclose affiliate relationships clearly. Trust is your most valuable asset. Transparent disclosure maintains credibility while still generating affiliate revenue.",
6275
+ "Add just enough process. Too little creates chaos; too much creates bureaucracy. Focus on processes that enable autonomy rather than those that enforce control.",
5491
6276
  },
5492
6277
  {
5493
- heading: "Measuring Performance",
6278
+ heading: "Maintaining Culture",
5494
6279
  content:
5495
- "Track clicks, conversions, and revenue by placement. A/B test different affiliate partners and placements. Focus efforts on high-converting, high-commission opportunities.",
6280
+ "Culture that isn't documented and actively maintained will drift. Articulate your values, hire for them, and create rituals that reinforce them. Culture is what you do, not what you say.",
5496
6281
  },
5497
6282
  ]),
5498
6283
  meta: {
5499
- title: "Affiliate Revenue Strategies for Directory Websites",
6284
+ title: "Scaling Your Team Operations from 10 to 100 People",
5500
6285
  description:
5501
- "Add affiliate revenue to your directory without charging businesses more. Learn integration strategies and program selection.",
6286
+ "Navigate the operational challenges of hypergrowth. Communication, decision-making, and culture at scale.",
5502
6287
  },
5503
6288
  },
5504
6289
 
5505
- // SEO Optimization (3 posts)
6290
+ // Integrations & Tools (3 posts)
5506
6291
  {
5507
- title: "Directory SEO: Ranking Your Listings on Google",
5508
- slug: "directory-seo-ranking-listings-google",
6292
+ title: "The Ultimate Guide to SaaS Integrations",
6293
+ slug: "ultimate-guide-saas-integrations",
5509
6294
  _status: "published",
5510
6295
  publishedAt: new Date("2024-03-28").toISOString(),
5511
6296
  categories: findCategory("technology") ? [findCategory("technology")!] : [],
5512
6297
  content: generatePostContent([
5513
6298
  {
5514
- heading: "Why SEO Matters for Directories",
6299
+ heading: "Why Integrations Matter",
5515
6300
  content:
5516
- 'Organic search drives the majority of traffic to successful directories. Ranking for "[industry] + [location]" and similar queries brings highly qualified visitors ready to find what you list. Here\\'s how to optimize your directory for search engines.',
6301
+ "The average company uses 110 SaaS applications. Without integrations, data lives in silos, work requires manual transfer between systems, and teams lose hours to copy-paste. Integrations turn disconnected tools into a unified workflow.",
5517
6302
  },
5518
6303
  {
5519
- heading: "Unique Listing Content",
6304
+ heading: "Native vs Third-Party Integrations",
5520
6305
  content:
5521
- "The biggest SEO challenge for directories is thin or duplicate content. Encourage listed businesses to write unique descriptions. Add schema markup, categories, and attributes to make each listing page substantive and unique.",
6306
+ "Native integrations (built by the vendors) typically offer deeper functionality. Third-party tools (Zapier, Make) provide breadth and flexibility. Most teams need both approaches.",
5522
6307
  },
5523
6308
  {
5524
- heading: "Category Page Optimization",
6309
+ heading: "Planning Your Integration Stack",
5525
6310
  content:
5526
- "Category pages often rank better than individual listings. Optimize category titles, descriptions, and URLs. Add introductory content explaining what users will find in each category.",
6311
+ "Map your workflows before choosing integrations. What data needs to flow where? What triggers should create what actions? Start with critical paths and expand systematically.",
5527
6312
  },
5528
6313
  {
5529
- heading: "Technical SEO Essentials",
6314
+ heading: "Implementation Best Practices",
5530
6315
  content:
5531
- "Ensure fast load times, mobile responsiveness, and clean URL structures. Implement proper canonical tags to handle pagination and filtering without creating duplicate content issues.",
6316
+ "Test integrations thoroughly before deploying. Set up error handling and monitoring. Document what's connected to what. Integration sprawl can become its own maintenance burden.",
5532
6317
  },
5533
6318
  {
5534
- heading: "Building Directory Authority",
6319
+ heading: "Security and Compliance",
5535
6320
  content:
5536
- "Earn backlinks through guest posts, industry partnerships, and creating linkable resources. As your domain authority grows, individual listing pages will rank better for long-tail queries.",
6321
+ "Every integration is a potential security surface. Review OAuth permissions carefully. Audit regularly. Ensure integrations comply with your data handling requirements.",
5537
6322
  },
5538
6323
  ]),
5539
6324
  meta: {
5540
- title: "Directory SEO: Ranking Your Listings on Google",
6325
+ title: "The Ultimate Guide to SaaS Integrations",
5541
6326
  description:
5542
- "Complete guide to directory SEO. Optimize listings, category pages, and technical elements to rank on Google.",
6327
+ "Connect your tools into a unified workflow. Native vs third-party integrations, planning, implementation, and security.",
5543
6328
  },
5544
6329
  },
5545
6330
  {
5546
- title: "Schema Markup for Directory Websites Explained",
5547
- slug: "schema-markup-directory-websites-explained",
6331
+ title: "API Best Practices for Non-Technical Teams",
6332
+ slug: "api-best-practices-non-technical-teams",
5548
6333
  _status: "published",
5549
6334
  publishedAt: new Date("2024-04-05").toISOString(),
5550
6335
  categories: findCategory("technology") ? [findCategory("technology")!] : [],
5551
6336
  content: generatePostContent([
5552
6337
  {
5553
- heading: "What is Schema Markup",
6338
+ heading: "APIs Aren't Just for Developers",
5554
6339
  content:
5555
- "Schema markup is structured data that helps search engines understand your content. For directories, proper schema markup can result in rich snippets showing ratings, prices, and other details directly in search results.",
6340
+ "APIs power most of the integrations you already use. Understanding the basics helps you evaluate tools, communicate with technical teams, and unlock powerful automations.",
5556
6341
  },
5557
6342
  {
5558
- heading: "LocalBusiness Schema",
6343
+ heading: "What Is an API?",
5559
6344
  content:
5560
- "For local service directories, LocalBusiness schema is essential. Include name, address, phone, hours, and aggregate ratings. Google uses this data for local pack results and knowledge panels.",
6345
+ "An API (Application Programming Interface) is how software talks to other software. When you connect Slack to your calendar, APIs make that possible. Think of it as a translator between applications.",
5561
6346
  },
5562
6347
  {
5563
- heading: "Product and Service Schema",
6348
+ heading: "Working with API Documentation",
5564
6349
  content:
5565
- "For directories listing products or services, use appropriate Product or Service schema. Include pricing, availability, and reviews to enable rich snippets in search results.",
6350
+ "Good API documentation tells you what's possible. You don't need to understand every technical detail\u2014focus on endpoints (what actions are available) and authentication (how to connect securely).",
5566
6351
  },
5567
6352
  {
5568
- heading: "AggregateRating Schema",
6353
+ heading: "Common API Patterns",
5569
6354
  content:
5570
- "If your directory includes reviews, implement AggregateRating schema. This can display star ratings in search results, significantly improving click-through rates.",
6355
+ "Most business APIs follow similar patterns: creating records, reading data, updating information, and deleting things. Once you understand CRUD operations in one API, others become easier.",
5571
6356
  },
5572
6357
  {
5573
- heading: "Testing Your Schema",
6358
+ heading: "Evaluating API Quality",
5574
6359
  content:
5575
- "Use Google's Rich Results Test and Schema Validator to verify your implementation. Monitor Search Console for schema errors and fix them promptly to maintain rich result eligibility.",
6360
+ "Before choosing a tool, check its API. Is it well-documented? Are there rate limits? What support is available? A poor API can limit what you can build, regardless of the product's features.",
5576
6361
  },
5577
6362
  ]),
5578
6363
  meta: {
5579
- title: "Schema Markup for Directory Websites Explained",
6364
+ title: "API Best Practices for Non-Technical Teams",
5580
6365
  description:
5581
- "Learn how to implement schema markup for directory websites. LocalBusiness, Product, and review schema for rich snippets.",
6366
+ "Demystify APIs for non-technical users. Understand what's possible and evaluate tools based on integration capabilities.",
5582
6367
  },
5583
6368
  },
5584
6369
  {
5585
- title: "Creating SEO-Optimized Category Pages for Directories",
5586
- slug: "seo-optimized-category-pages-directories",
6370
+ title: "Choosing the Right Tech Stack for Your Startup",
6371
+ slug: "choosing-right-tech-stack-startup",
5587
6372
  _status: "published",
5588
6373
  publishedAt: new Date("2024-04-12").toISOString(),
5589
6374
  categories: findCategory("technology") ? [findCategory("technology")!] : [],
5590
6375
  content: generatePostContent([
5591
6376
  {
5592
- heading: "The Power of Category Pages",
6377
+ heading: "Tech Stack Decisions Matter",
5593
6378
  content:
5594
- "Category pages are often the highest-traffic pages on directory websites. They rank for broad industry terms and serve as hubs that pass authority to individual listings. Optimizing these pages is critical for directory SEO success.",
6379
+ "Your tech stack affects development speed, hiring, scalability, and costs. But perfect is the enemy of good. The best stack is one that lets you ship and iterate quickly.",
5595
6380
  },
5596
6381
  {
5597
- heading: "Category Page Structure",
6382
+ heading: "Optimize for Velocity",
5598
6383
  content:
5599
- "Each category page needs a unique title, meta description, and H1 tag. Include 200-500 words of introductory content explaining what the category contains and why visitors should browse it.",
6384
+ "Early-stage startups should optimize for development speed. Choose technologies your team knows well, with strong ecosystems and available talent. You can always migrate later.",
5600
6385
  },
5601
6386
  {
5602
- heading: "Internal Linking Strategy",
6387
+ heading: "The Boring Technology Thesis",
5603
6388
  content:
5604
- "Link to category pages from your homepage, navigation, and footer. Cross-link related categories. This internal link structure helps search engines understand your site hierarchy and passes authority effectively.",
6389
+ "Exciting new technologies come with unknown failure modes. Boring, established technologies have solved problems and documented solutions. Save your innovation tokens for your actual product.",
5605
6390
  },
5606
6391
  {
5607
- heading: "Faceted Navigation SEO",
6392
+ heading: "Build vs Buy Decisions",
5608
6393
  content:
5609
- "Filters and facets create multiple URL variations that can cause duplicate content issues. Use canonical tags, parameter handling in Search Console, or AJAX filtering to maintain clean indexation.",
6394
+ "Default to buying (or using open source) for non-core functionality. Authentication, payments, email, and monitoring are solved problems. Focus engineering time on what makes you unique.",
5610
6395
  },
5611
6396
  {
5612
- heading: "User Experience Signals",
6397
+ heading: "Planning for Scale",
5613
6398
  content:
5614
- "Google considers user experience signals like bounce rate and time on page. Make category pages genuinely useful with good filtering, sorting, and preview information to keep users engaged.",
6399
+ "Don't over-engineer for scale you don't have. That said, choose technologies that can scale when needed. Horizontal scaling, managed databases, and stateless architectures make growth easier.",
5615
6400
  },
5616
6401
  ]),
5617
6402
  meta: {
5618
- title: "Creating SEO-Optimized Category Pages for Directories",
6403
+ title: "Choosing the Right Tech Stack for Your Startup",
5619
6404
  description:
5620
- "Optimize directory category pages for search engines. Structure, content, internal linking, and faceted navigation best practices.",
6405
+ "Make smart tech stack decisions. Optimize for velocity, embrace boring technology, and plan for scale.",
5621
6406
  },
5622
6407
  },
5623
6408
 
5624
- // Success Stories/Case Studies (3 posts)
6409
+ // Success Stories (3 posts)
5625
6410
  {
5626
- title: "From Side Project to $50K MRR: A Directory Success Story",
5627
- slug: "side-project-to-50k-mrr-directory-success-story",
6411
+ title: "From Startup to Scale: How One Team 10x'd Productivity",
6412
+ slug: "startup-to-scale-team-10x-productivity",
5628
6413
  _status: "published",
5629
6414
  publishedAt: new Date("2024-04-20").toISOString(),
5630
- categories: findCategory("news") ? [findCategory("news")!] : [],
6415
+ categories: findCategory("business") ? [findCategory("business")!] : [],
5631
6416
  content: generatePostContent([
5632
6417
  {
5633
- heading: "The Beginning",
6418
+ heading: "The Challenge",
5634
6419
  content:
5635
- "What started as a weekend project to solve a personal problem turned into a six-figure business. This is the story of how one entrepreneur built a niche directory from zero to $50,000 in monthly recurring revenue.",
6420
+ "When TechFlow Inc hit 50 employees, everything started breaking. Communication was chaotic, tasks fell through cracks, and the team spent more time coordinating than executing. Sound familiar?",
5636
6421
  },
5637
6422
  {
5638
- heading: "Finding the Niche",
6423
+ heading: "The Diagnosis",
5639
6424
  content:
5640
- "The founder noticed that finding specialized contractors in their industry was frustrating. Generic directories didn't have the specific information buyers needed. That gap became the opportunity.",
6425
+ "An audit revealed the problem: tools sprawl. The team was using 15 different apps that didn't talk to each other. Information was siloed, context was lost, and everyone was doing manual work that software could handle.",
5641
6426
  },
5642
6427
  {
5643
- heading: "The MVP Launch",
6428
+ heading: "The Transformation",
5644
6429
  content:
5645
- "Instead of building perfect technology, the founder launched with a simple WordPress site and 100 manually-researched listings. The focus was on quality data and user experience, not fancy features.",
6430
+ "They consolidated to a unified platform. Project management, communication, and documentation in one place. Automations replaced manual handoffs. Integrations connected what couldn't be consolidated.",
5646
6431
  },
5647
6432
  {
5648
- heading: "Growth Strategies That Worked",
6433
+ heading: "The Results",
5649
6434
  content:
5650
- "SEO was the primary growth driver. By creating comprehensive category pages and optimizing for long-tail keywords, organic traffic grew steadily. Paid acquisition was tested but proved less efficient than SEO.",
6435
+ "Within six months: 94% faster onboarding, 3x project throughput, and a 40% reduction in meetings. The team grew to 150 without proportional growth in coordination overhead.",
5651
6436
  },
5652
6437
  {
5653
- heading: "Lessons Learned",
6438
+ heading: "Key Lessons",
5654
6439
  content:
5655
- "The founder's biggest lessons: start smaller than you think, focus on a specific niche, prioritize SEO from day one, and don't underestimate the power of quality over quantity.",
6440
+ "Tool consolidation alone isn't enough. Success required process redesign, change management, and leadership commitment. The tools enabled transformation, but the team made it happen.",
5656
6441
  },
5657
6442
  ]),
5658
6443
  meta: {
5659
- title: "From Side Project to $50K MRR: A Directory Success Story",
6444
+ title: "From Startup to Scale: How One Team 10x'd Productivity",
5660
6445
  description:
5661
- "How one entrepreneur built a niche directory from weekend project to $50K monthly recurring revenue. Strategies and lessons learned.",
6446
+ "A real story of operational transformation. How TechFlow Inc conquered tool sprawl and 10x'd team productivity.",
5662
6447
  },
5663
6448
  },
5664
6449
  {
5665
- title: "How Local Directories Compete with Google and Win",
5666
- slug: "local-directories-compete-with-google-and-win",
6450
+ title: "5 Founders Share Their Biggest Operational Mistakes",
6451
+ slug: "5-founders-share-biggest-operational-mistakes",
5667
6452
  _status: "published",
5668
6453
  publishedAt: new Date("2024-04-28").toISOString(),
5669
- categories: findCategory("news") ? [findCategory("news")!] : [],
6454
+ categories: findCategory("business") ? [findCategory("business")!] : [],
5670
6455
  content: generatePostContent([
5671
6456
  {
5672
- heading: "The Google Challenge",
6457
+ heading: "Learning from Others' Mistakes",
5673
6458
  content:
5674
- "Many assume Google has won local search. But specialized local directories continue to thrive by offering what Google can't: deep niche expertise, curated quality, and features tailored to specific industries.",
6459
+ "Every founder makes operational mistakes. The smart ones learn from others before making their own. Here are five founders sharing the mistakes that cost them the most\u2014and what they'd do differently.",
5675
6460
  },
5676
6461
  {
5677
- heading: "Niche Expertise Wins",
6462
+ heading: "Mistake 1: Hiring Too Fast",
5678
6463
  content:
5679
- "Google treats all businesses the same. A specialized directory can require industry-specific information, verify credentials, and ensure listings meet quality standards. This curation creates genuine value.",
6464
+ '"We doubled the team in 6 months and it nearly killed us. Communication broke down, culture diluted, and productivity actually decreased. I wish we\\'d hired half as many people twice as carefully." - Sarah, Series A founder',
5680
6465
  },
5681
6466
  {
5682
- heading: "Community Building",
6467
+ heading: "Mistake 2: No Documentation Culture",
5683
6468
  content:
5684
- "Successful local directories build communities around their niches. User reviews, Q&A forums, and resource content create engagement that generic platforms can't match.",
6469
+ '"Everything lived in people\\'s heads. When key people left, institutional knowledge walked out the door. Building a documentation culture feels slow, but it\\'s the only way to scale." - Marcus, bootstrapped to $5M ARR',
5685
6470
  },
5686
6471
  {
5687
- heading: "Better Lead Quality",
6472
+ heading: "Mistake 3: Over-Engineering Processes",
5688
6473
  content:
5689
- "Businesses report that leads from niche directories convert better than generic sources. Users who find businesses through specialized directories are further along in their buying journey.",
6474
+ '"We created elaborate processes for everything. Teams spent more time following processes than doing work. Now we ask: what\\'s the minimum process that prevents chaos?" - David, second-time founder',
5690
6475
  },
5691
6476
  {
5692
- heading: "The Trust Factor",
6477
+ heading: "Mistake 4: Ignoring Technical Debt",
5693
6478
  content:
5694
- "A curated, specialized directory builds trust that an algorithm can't. When a directory stakes its reputation on listing quality, users trust those recommendations more than generic search results.",
6479
+ '"We shipped fast and worried about quality later. But later never came\u2014we were always shipping something new. The accumulated debt eventually paralyzed us. Pay it down continuously." - Amy, CTO turned CEO',
6480
+ },
6481
+ {
6482
+ heading: "Mistake 5: Not Investing in Tooling",
6483
+ content:
6484
+ '"We were cheap about software. Manual processes that could have been automated stayed manual. The false economy cost us far more in engineering time and errors." - James, enterprise SaaS founder',
5695
6485
  },
5696
6486
  ]),
5697
6487
  meta: {
5698
- title: "How Local Directories Compete with Google and Win",
6488
+ title: "5 Founders Share Their Biggest Operational Mistakes",
5699
6489
  description:
5700
- "Why specialized local directories still thrive despite Google. Niche expertise, curation, and community building strategies.",
6490
+ "Learn from founders who've been there. Hiring, documentation, processes, technical debt, and tooling mistakes to avoid.",
5701
6491
  },
5702
6492
  },
5703
6493
  {
5704
- title: "5 Directory Founders Share Their Biggest Mistakes",
5705
- slug: "5-directory-founders-share-biggest-mistakes",
6494
+ title: "How Fast-Growing Teams Stay Organized at Scale",
6495
+ slug: "fast-growing-teams-stay-organized-at-scale",
5706
6496
  _status: "published",
5707
6497
  publishedAt: new Date("2024-05-05").toISOString(),
5708
- categories: findCategory("news") ? [findCategory("news")!] : [],
6498
+ categories: findCategory("business") ? [findCategory("business")!] : [],
5709
6499
  content: generatePostContent([
5710
6500
  {
5711
- heading: "Learning from Failure",
6501
+ heading: "Organization Is a Competitive Advantage",
5712
6502
  content:
5713
- "Success leaves clues, but so does failure. We talked to five directory founders about the mistakes that cost them time, money, and momentum. Here's what they wish they'd known from the start.",
6503
+ "The fastest-growing teams aren't disorganized\u2014they're extremely organized. Good organization enables speed. Here's how high-growth teams maintain order amid chaos.",
5714
6504
  },
5715
6505
  {
5716
- heading: "Mistake 1: Building Too Much Before Launching",
6506
+ heading: "Single Source of Truth",
5717
6507
  content:
5718
- '"I spent 6 months building features no one asked for. By the time I launched, a competitor had already captured the market." - Founder of a defunct legal directory. Launch early, iterate based on feedback.',
6508
+ "Pick one place for each type of information and stick to it. Tasks in one system, documents in another, communication in a third. Cross-linking creates the connections; duplication creates confusion.",
5719
6509
  },
5720
6510
  {
5721
- heading: "Mistake 2: Ignoring SEO Until Too Late",
6511
+ heading: "Clear Ownership",
5722
6512
  content:
5723
- '"I thought paid advertising would be enough. When I finally focused on SEO, I was 18 months behind competitors." - Founder of a home services directory. SEO is a long game; start day one.',
6513
+ "Everything has an owner. Projects, documents, processes, decisions\u2014someone is explicitly responsible. Ownership without authority is frustrating; ownership with authority enables action.",
5724
6514
  },
5725
6515
  {
5726
- heading: "Mistake 3: Pricing Too Low",
6516
+ heading: "Ruthless Prioritization",
5727
6517
  content:
5728
- '"I was afraid to charge what the listings were worth. It took two years to raise prices, and I left hundreds of thousands on the table." - Founder of a B2B directory. Know your value and charge accordingly.',
6518
+ "Growing teams face infinite demands on finite attention. Explicit priorities, regularly reviewed and communicated, help everyone focus on what matters most. Everything can't be priority one.",
5729
6519
  },
5730
6520
  {
5731
- heading: "Mistake 4: Trying to Serve Everyone",
6521
+ heading: "Async by Default",
5732
6522
  content:
5733
- "\\"My directory covered too many industries. I couldn't go deep on any of them and couldn't compete with specialists.\\" - Founder of a general business directory. Niche down ruthlessly.",
6523
+ "Synchronous communication doesn't scale. The best teams default to async (documented, accessible to all) and use sync time for what truly requires it: complex discussions, relationship building, rapid iteration.",
6524
+ },
6525
+ {
6526
+ heading: "Regular Retrospectives",
6527
+ content:
6528
+ "What's working? What isn't? What should we try? Regular reflection and adjustment keeps processes serving the team rather than the other way around. Evolve continuously.",
5734
6529
  },
5735
6530
  ]),
5736
6531
  meta: {
5737
- title: "5 Directory Founders Share Their Biggest Mistakes",
6532
+ title: "How Fast-Growing Teams Stay Organized at Scale",
5738
6533
  description:
5739
- "Learn from directory founders who share their costliest mistakes. Building too much, ignoring SEO, underpricing, and more.",
6534
+ "Organizational practices for hypergrowth. Single source of truth, clear ownership, prioritization, and async communication.",
5740
6535
  },
5741
6536
  },
5742
6537
  ]
@@ -5766,7 +6561,7 @@ export const directoryHubPricing = (): Partial<Page> => {
5766
6561
  format: 0,
5767
6562
  mode: "normal",
5768
6563
  style: "",
5769
- text: "Simple, Transparent Pricing",
6564
+ text: "Plans that grow with you",
5770
6565
  version: 1,
5771
6566
  },
5772
6567
  ],
@@ -5785,7 +6580,7 @@ export const directoryHubPricing = (): Partial<Page> => {
5785
6580
  format: 0,
5786
6581
  mode: "normal",
5787
6582
  style: "",
5788
- text: "Start free, scale as you grow. No hidden fees, no surprises.",
6583
+ text: "Start free. Upgrade as your team scales. No hidden fees, no surprises.",
5789
6584
  version: 1,
5790
6585
  },
5791
6586
  ],
@@ -5819,7 +6614,7 @@ export const directoryHubPricing = (): Partial<Page> => {
5819
6614
  {
5820
6615
  name: "Free",
5821
6616
  price: "$0/mo", // Fallback only
5822
- description: "Perfect for testing your directory idea",
6617
+ description: "Perfect for trying SaaSify",
5823
6618
  featured: false,
5824
6619
  features: [], // Features come from Stripe Entitlements
5825
6620
  link: {
@@ -5831,7 +6626,7 @@ export const directoryHubPricing = (): Partial<Page> => {
5831
6626
  {
5832
6627
  name: "Pro",
5833
6628
  price: "$29/mo", // Fallback only
5834
- description: "For launching your first directory",
6629
+ description: "For small teams getting started",
5835
6630
  featured: false,
5836
6631
  features: [], // Features come from Stripe Entitlements
5837
6632
  link: {
@@ -5843,7 +6638,7 @@ export const directoryHubPricing = (): Partial<Page> => {
5843
6638
  {
5844
6639
  name: "Business",
5845
6640
  price: "$79/mo", // Fallback only
5846
- description: "For growing directory businesses",
6641
+ description: "For teams ready to scale",
5847
6642
  featured: true,
5848
6643
  features: [], // Features come from Stripe Entitlements
5849
6644
  link: {
@@ -5859,9 +6654,9 @@ export const directoryHubPricing = (): Partial<Page> => {
5859
6654
  blockType: "proofBanner",
5860
6655
  blockName: "Trust Section",
5861
6656
  style: "withBackground",
5862
- headline: "Trusted by 500+ directory builders worldwide",
6657
+ headline: "Trusted by 10,000+ teams worldwide",
5863
6658
  subtext:
5864
- "Join thousands of entrepreneurs building successful directories with DirectoryHub",
6659
+ "Join thousands of teams who have transformed how they work with SaaSify",
5865
6660
  },
5866
6661
  // Features Comparison
5867
6662
  {
@@ -5874,43 +6669,43 @@ export const directoryHubPricing = (): Partial<Page> => {
5874
6669
  size: "small",
5875
6670
  style: "default",
5876
6671
  icon: "layout",
5877
- title: "Beautiful Templates",
5878
- description: createParagraph("Professionally designed, mobile-first templates."),
6672
+ title: "Intuitive Interface",
6673
+ description: createParagraph("Clean, modern design that's easy to use."),
5879
6674
  },
5880
6675
  {
5881
6676
  size: "small",
5882
6677
  style: "default",
5883
- icon: "search",
5884
- title: "SEO Optimization",
5885
- description: createParagraph("Schema markup, sitemaps, and meta tags."),
6678
+ icon: "zap",
6679
+ title: "Fast Performance",
6680
+ description: createParagraph("Lightning-fast load times, globally."),
5886
6681
  },
5887
6682
  {
5888
6683
  size: "small",
5889
6684
  style: "default",
5890
6685
  icon: "shield",
5891
- title: "SSL Security",
5892
- description: createParagraph("Free SSL certificates for all directories."),
6686
+ title: "Enterprise Security",
6687
+ description: createParagraph("SOC 2 compliant with encryption."),
5893
6688
  },
5894
6689
  {
5895
6690
  size: "small",
5896
6691
  style: "default",
5897
- icon: "zap",
5898
- title: "Fast Performance",
5899
- description: createParagraph("CDN-powered for global speed."),
6692
+ icon: "globe",
6693
+ title: "99.9% Uptime",
6694
+ description: createParagraph("Reliable infrastructure you can count on."),
5900
6695
  },
5901
6696
  {
5902
6697
  size: "small",
5903
6698
  style: "default",
5904
- icon: "globe",
5905
- title: "Reliable Hosting",
5906
- description: createParagraph("99.9% uptime with automatic scaling."),
6699
+ icon: "layers",
6700
+ title: "Integrations",
6701
+ description: createParagraph("Connect with 100+ tools you use."),
5907
6702
  },
5908
6703
  {
5909
6704
  size: "small",
5910
6705
  style: "default",
5911
- icon: "layers",
5912
- title: "Easy Management",
5913
- description: createParagraph("Intuitive dashboard for all your directories."),
6706
+ icon: "users",
6707
+ title: "Collaboration",
6708
+ description: createParagraph("Real-time teamwork made simple."),
5914
6709
  },
5915
6710
  ],
5916
6711
  },
@@ -5923,7 +6718,7 @@ export const directoryHubPricing = (): Partial<Page> => {
5923
6718
  link: {
5924
6719
  type: "custom",
5925
6720
  appearance: "default",
5926
- label: "Start Building Free",
6721
+ label: "Start Free Trial",
5927
6722
  url: "/sign-up",
5928
6723
  },
5929
6724
  },
@@ -5949,7 +6744,7 @@ export const directoryHubPricing = (): Partial<Page> => {
5949
6744
  format: 0,
5950
6745
  mode: "normal",
5951
6746
  style: "",
5952
- text: "Ready to build your directory?",
6747
+ text: "Ready to get started?",
5953
6748
  version: 1,
5954
6749
  },
5955
6750
  ],
@@ -5989,8 +6784,8 @@ export const directoryHubPricing = (): Partial<Page> => {
5989
6784
  ],
5990
6785
  meta: {
5991
6786
  description:
5992
- "Simple, transparent pricing for DirectoryHub. Start free, scale as you grow. Plans from $0 to enterprise.",
5993
- title: "Pricing \u2014 DirectoryHub Directory Builder",
6787
+ "Simple, transparent pricing for SaaSify. Start free, scale as your team grows. Plans from $0 to enterprise.",
6788
+ title: "Pricing \u2014 SaaSify",
5994
6789
  },
5995
6790
  title: "Pricing",
5996
6791
  }
@@ -6094,7 +6889,7 @@ export const directoryHubPrivacy = (): Partial<Page> => {
6094
6889
  format: 0,
6095
6890
  mode: "normal",
6096
6891
  style: "",
6097
- text: 'DirectoryHub ("we", "our", or "us") is committed to protecting your privacy. This Privacy Policy explains how we collect, use, disclose, and safeguard your information when you use our platform and services.',
6892
+ text: 'SaaSify ("we", "our", or "us") is committed to protecting your privacy. This Privacy Policy explains how we collect, use, disclose, and safeguard your information when you use our platform and services.',
6098
6893
  version: 1,
6099
6894
  },
6100
6895
  ],
@@ -6424,7 +7219,7 @@ export const directoryHubPrivacy = (): Partial<Page> => {
6424
7219
  format: 0,
6425
7220
  mode: "normal",
6426
7221
  style: "",
6427
- text: "If you have any questions about this Privacy Policy, please contact us at privacy@directoryhub.com.",
7222
+ text: "If you have any questions about this Privacy Policy, please contact us at privacy@saasify.com.",
6428
7223
  version: 1,
6429
7224
  },
6430
7225
  ],
@@ -6447,7 +7242,7 @@ export const directoryHubPrivacy = (): Partial<Page> => {
6447
7242
  ],
6448
7243
  meta: {
6449
7244
  description:
6450
- "Read DirectoryHub's Privacy Policy to understand how we collect, use, and protect your personal information.",
7245
+ "Read SaaSify's Privacy Policy to understand how we collect, use, and protect your personal information.",
6451
7246
  title: "Privacy Policy",
6452
7247
  },
6453
7248
  title: "Privacy Policy",
@@ -6553,7 +7348,7 @@ export const directoryHubTerms = (): Partial<Page> => {
6553
7348
  format: 0,
6554
7349
  mode: "normal",
6555
7350
  style: "",
6556
- text: "By accessing or using DirectoryHub, you agree to be bound by these Terms of Service. If you disagree with any part of these terms, you may not access our service.",
7351
+ text: "By accessing or using SaaSify, you agree to be bound by these Terms of Service. If you disagree with any part of these terms, you may not access our service.",
6557
7352
  version: 1,
6558
7353
  },
6559
7354
  ],
@@ -6592,7 +7387,7 @@ export const directoryHubTerms = (): Partial<Page> => {
6592
7387
  format: 0,
6593
7388
  mode: "normal",
6594
7389
  style: "",
6595
- text: "DirectoryHub is a no-code platform that enables users to create, manage, and monetize directory websites. Our service includes website hosting, payment processing integration, SEO tools, and various features to help you build successful directory businesses.",
7390
+ text: "SaaSify is a platform that enables teams to collaborate, automate workflows, and scale their operations. Our service includes project management, integrations, analytics, and various features to help you work smarter.",
6596
7391
  version: 1,
6597
7392
  },
6598
7393
  ],
@@ -6709,7 +7504,7 @@ export const directoryHubTerms = (): Partial<Page> => {
6709
7504
  format: 0,
6710
7505
  mode: "normal",
6711
7506
  style: "",
6712
- text: "The service and its original content, features, and functionality are and will remain the exclusive property of DirectoryHub. Our service is protected by copyright, trademark, and other laws. You retain ownership of any content you create using our platform.",
7507
+ text: "The service and its original content, features, and functionality are and will remain the exclusive property of SaaSify. Our service is protected by copyright, trademark, and other laws. You retain ownership of any content you create using our platform.",
6713
7508
  version: 1,
6714
7509
  },
6715
7510
  ],
@@ -6787,7 +7582,7 @@ export const directoryHubTerms = (): Partial<Page> => {
6787
7582
  format: 0,
6788
7583
  mode: "normal",
6789
7584
  style: "",
6790
- text: "In no event shall DirectoryHub, its directors, employees, partners, agents, suppliers, or affiliates be liable for any indirect, incidental, special, consequential, or punitive damages, including without limitation, loss of profits, data, use, goodwill, or other intangible losses.",
7585
+ text: "In no event shall SaaSify, its directors, employees, partners, agents, suppliers, or affiliates be liable for any indirect, incidental, special, consequential, or punitive damages, including without limitation, loss of profits, data, use, goodwill, or other intangible losses.",
6791
7586
  version: 1,
6792
7587
  },
6793
7588
  ],
@@ -6904,7 +7699,7 @@ export const directoryHubTerms = (): Partial<Page> => {
6904
7699
  format: 0,
6905
7700
  mode: "normal",
6906
7701
  style: "",
6907
- text: "If you have any questions about these Terms, please contact us at legal@directoryhub.com.",
7702
+ text: "If you have any questions about these Terms, please contact us at legal@saasify.com.",
6908
7703
  version: 1,
6909
7704
  },
6910
7705
  ],
@@ -6927,25 +7722,22 @@ export const directoryHubTerms = (): Partial<Page> => {
6927
7722
  ],
6928
7723
  meta: {
6929
7724
  description:
6930
- "Read DirectoryHub's Terms of Service to understand the rules and guidelines for using our directory building platform.",
7725
+ "Read SaaSify's Terms of Service to understand the rules and guidelines for using our platform.",
6931
7726
  title: "Terms of Service",
6932
7727
  },
6933
7728
  title: "Terms of Service",
6934
7729
  }
6935
7730
  }
6936
7731
  `,
6937
- "marketing/payload/src/endpoints/seed/directoryhub/use-cases/b2b-vendor-hubs.ts": 'import type { Page } from "@/payload-types"\nimport { createParagraph } from "../richtext-helper"\n\nexport const b2bVendorHubsPage = (): Partial<Page> => {\n return {\n slug: "use-cases/b2b-vendor-hubs",\n _status: "published",\n title: "B2B Vendor Hub",\n hero: {\n type: "lowImpact",\n richText: {\n root: {\n type: "root",\n children: [\n {\n type: "heading",\n children: [\n {\n type: "text",\n detail: 0,\n format: 0,\n mode: "normal",\n style: "",\n text: "Create the definitive vendor directory for your industry",\n version: 1,\n },\n ],\n direction: "ltr" as const,\n format: "" as const,\n indent: 0,\n tag: "h1",\n version: 1,\n },\n {\n type: "paragraph",\n children: [\n {\n type: "text",\n detail: 0,\n format: 0,\n mode: "normal",\n style: "",\n text: "Help businesses find SaaS tools, agencies, consultants, and service providers. Advanced filtering, comparison views, and lead capture that convert browsers into buyers.",\n version: 1,\n },\n ],\n direction: "ltr" as const,\n format: "" as const,\n indent: 0,\n textFormat: 0,\n version: 1,\n },\n ],\n direction: "ltr" as const,\n format: "" as const,\n indent: 0,\n version: 1,\n },\n },\n links: [\n {\n link: {\n type: "custom",\n appearance: "default",\n label: "Build your directory",\n url: "/sign-up",\n },\n },\n {\n link: {\n type: "custom",\n appearance: "outline",\n label: "See B2B templates",\n url: "/templates",\n },\n },\n ],\n },\n layout: [\n {\n blockType: "featureShowcase",\n blockName: "Advanced Filtering",\n label: "Smart Filtering",\n headline: "Find the right vendor with advanced filters",\n description: createParagraph(\n "Let buyers filter by pricing, features, integrations, company size, and more. Multi-select filters and faceted search help decision-makers narrow down options quickly.",\n ),\n link: {\n type: "custom",\n label: "See filtering options",\n url: "/features",\n appearance: "default",\n },\n imagePosition: "right",\n features: [\n { text: "Multi-attribute filtering" },\n { text: "Price range sliders" },\n { text: "Feature checkboxes" },\n { text: "Integration compatibility" },\n ],\n },\n {\n blockType: "featureShowcase",\n blockName: "Comparison Views",\n label: "Vendor Comparison",\n headline: "Side-by-side vendor comparison",\n description: createParagraph(\n "Help buyers evaluate options with comparison tables. Users can select vendors and compare features, pricing, and ratings in a clear side-by-side view.",\n ),\n link: {\n type: "custom",\n label: "See comparison features",\n url: "/features",\n appearance: "default",\n },\n imagePosition: "left",\n features: [\n { text: "Side-by-side comparison" },\n { text: "Feature matrix tables" },\n { text: "Save comparisons" },\n { text: "Share comparison links" },\n ],\n },\n {\n blockType: "featureShowcase",\n blockName: "Lead Capture",\n label: "Lead Generation",\n headline: "Capture and qualify B2B leads",\n description: createParagraph(\n "Built-in lead capture forms collect buyer information and route it to vendors. Track inquiries, measure conversion, and help vendors close deals faster.",\n ),\n link: {\n type: "custom",\n label: "Learn about lead capture",\n url: "/features",\n appearance: "default",\n },\n imagePosition: "right",\n features: [\n { text: "Custom inquiry forms" },\n { text: "Lead qualification fields" },\n { text: "Vendor notification emails" },\n { text: "Lead analytics dashboard" },\n ],\n },\n {\n blockType: "bentoFeatures",\n blockName: "B2B Features",\n heading: "Purpose-built for B2B directories",\n subheading: "Features that help businesses evaluate and connect with vendors",\n features: [\n {\n size: "small",\n style: "gradient",\n icon: "building",\n stat: "94%",\n title: "Faster Onboarding",\n description: createParagraph("Smart filters accelerate vendor discovery."),\n },\n {\n size: "small",\n style: "accent",\n icon: "layers",\n title: "Rich Profiles",\n description: createParagraph("Detailed vendor info, case studies, and integrations."),\n },\n {\n size: "small",\n style: "default",\n icon: "target",\n title: "Buyer Intent",\n description: createParagraph("Track which vendors buyers are researching."),\n },\n {\n size: "small",\n style: "primary",\n icon: "barChart",\n title: "Market Insights",\n description: createParagraph("Category trends and vendor rankings."),\n },\n {\n size: "small",\n style: "default",\n icon: "users",\n title: "Vendor Reviews",\n description: createParagraph("Verified B2B reviews from real customers."),\n },\n {\n size: "small",\n style: "default",\n icon: "zap",\n title: "Demo Requests",\n description: createParagraph("One-click demo scheduling integration."),\n },\n ],\n },\n {\n blockType: "proofBanner",\n blockName: "CTA Section",\n style: "centered",\n headline: "Launch your B2B vendor directory",\n subtext: "Become the go-to resource for businesses in your industry. Start building today.",\n links: [\n {\n link: {\n type: "custom",\n appearance: "default",\n label: "Start for free",\n url: "/sign-up",\n },\n },\n {\n link: {\n type: "custom",\n appearance: "outline",\n label: "Talk to sales",\n url: "/contact",\n },\n },\n ],\n },\n ],\n meta: {\n description:\n "Build a B2B vendor directory with advanced filtering, comparison views, and lead capture. Help businesses find SaaS tools, agencies, and consultants.",\n title: "B2B Vendor Hub \u2014 DirectoryHub Use Case",\n },\n }\n}\n',
6938
- "marketing/payload/src/endpoints/seed/directoryhub/use-cases/communities.ts": 'import type { Page } from "@/payload-types"\nimport { createParagraph } from "../richtext-helper"\n\nexport const communitiesPage = (): Partial<Page> => {\n return {\n slug: "use-cases/communities",\n _status: "published",\n title: "Community Directory",\n hero: {\n type: "lowImpact",\n richText: {\n root: {\n type: "root",\n children: [\n {\n type: "heading",\n children: [\n {\n type: "text",\n detail: 0,\n format: 0,\n mode: "normal",\n style: "",\n text: "Connect your community with a powerful member directory",\n version: 1,\n },\n ],\n direction: "ltr" as const,\n format: "" as const,\n indent: 0,\n tag: "h1",\n version: 1,\n },\n {\n type: "paragraph",\n children: [\n {\n type: "text",\n detail: 0,\n format: 0,\n mode: "normal",\n style: "",\n text: "Build member directories for alumni networks, professional associations, and private communities. Gated access, rich profiles, and networking tools included.",\n version: 1,\n },\n ],\n direction: "ltr" as const,\n format: "" as const,\n indent: 0,\n textFormat: 0,\n version: 1,\n },\n ],\n direction: "ltr" as const,\n format: "" as const,\n indent: 0,\n version: 1,\n },\n },\n links: [\n {\n link: {\n type: "custom",\n appearance: "default",\n label: "Start your directory",\n url: "/sign-up",\n },\n },\n {\n link: {\n type: "custom",\n appearance: "outline",\n label: "See community templates",\n url: "/templates",\n },\n },\n ],\n },\n layout: [\n {\n blockType: "featureShowcase",\n blockName: "Member Profiles",\n label: "Rich Member Profiles",\n headline: "Showcase your members with detailed profiles",\n description: createParagraph(\n "Members can create rich profiles with photos, bios, skills, interests, and contact information. Custom fields let you capture whatever matters most to your community.",\n ),\n link: {\n type: "custom",\n label: "See profile options",\n url: "/features",\n appearance: "default",\n },\n imagePosition: "right",\n features: [\n { text: "Profile photos and cover images" },\n { text: "Custom bio and about sections" },\n { text: "Skills and interests tags" },\n { text: "Social media links" },\n ],\n },\n {\n blockType: "featureShowcase",\n blockName: "Access Control",\n label: "Gated Access",\n headline: "Control who can see and access content",\n description: createParagraph(\n "Restrict directory access to members only, or allow public browsing with limited profile visibility. Membership tiers can unlock different levels of access and features.",\n ),\n link: {\n type: "custom",\n label: "Learn about access control",\n url: "/features",\n appearance: "default",\n },\n imagePosition: "left",\n features: [\n { text: "Members-only directory" },\n { text: "Tiered access levels" },\n { text: "Private contact information" },\n { text: "Approval workflows" },\n ],\n },\n {\n blockType: "featureShowcase",\n blockName: "Networking",\n label: "Networking Tools",\n headline: "Help members connect with each other",\n description: createParagraph(\n "Built-in messaging, connection requests, and member search make it easy for community members to find and connect with each other. Foster meaningful professional relationships.",\n ),\n link: {\n type: "custom",\n label: "Explore networking features",\n url: "/features",\n appearance: "default",\n },\n imagePosition: "right",\n features: [\n { text: "Member search and discovery" },\n { text: "Connection requests" },\n { text: "Direct messaging" },\n { text: "Member activity feed" },\n ],\n },\n {\n blockType: "bentoFeatures",\n blockName: "Community Features",\n heading: "Everything for member communities",\n subheading: "Tools to build, engage, and grow your community",\n features: [\n {\n size: "small",\n style: "gradient",\n icon: "users",\n stat: "+12K",\n title: "Members Connected",\n description: createParagraph("Build thriving member networks."),\n },\n {\n size: "small",\n style: "accent",\n icon: "shield",\n title: "Privacy Controls",\n description: createParagraph("Members control their visibility."),\n },\n {\n size: "small",\n style: "default",\n icon: "search",\n title: "Smart Search",\n description: createParagraph("Find members by skills, location, or interests."),\n },\n {\n size: "small",\n style: "primary",\n icon: "building",\n title: "Organization Pages",\n description: createParagraph("Company profiles for corporate members."),\n },\n {\n size: "small",\n style: "default",\n icon: "globe",\n title: "Subgroups",\n description: createParagraph("Regional chapters or interest groups."),\n },\n {\n size: "small",\n style: "default",\n icon: "barChart",\n title: "Engagement Analytics",\n description: createParagraph("Track member activity and growth."),\n },\n ],\n },\n {\n blockType: "proofBanner",\n blockName: "CTA Section",\n style: "centered",\n headline: "Build your community directory today",\n subtext:\n "Connect your members with a modern directory. Perfect for associations, alumni networks, and private communities.",\n links: [\n {\n link: {\n type: "custom",\n appearance: "default",\n label: "Get started free",\n url: "/sign-up",\n },\n },\n {\n link: {\n type: "custom",\n appearance: "outline",\n label: "Talk to sales",\n url: "/contact",\n },\n },\n ],\n },\n ],\n meta: {\n description:\n "Build a community member directory with rich profiles, gated access, and networking tools. Perfect for alumni networks, associations, and private communities.",\n title: "Community Directory \u2014 DirectoryHub Use Case",\n },\n }\n}\n',
6939
- "marketing/payload/src/endpoints/seed/directoryhub/use-cases/index.ts": 'export { localServicesPage } from "./local-services"\nexport { b2bVendorHubsPage } from "./b2b-vendor-hubs"\nexport { communitiesPage } from "./communities"\nexport { marketplacesPage } from "./marketplaces"\n',
6940
- "marketing/payload/src/endpoints/seed/directoryhub/use-cases/local-services.ts": 'import type { Page } from "@/payload-types"\nimport { createParagraph } from "../richtext-helper"\n\nexport const localServicesPage = (): Partial<Page> => {\n return {\n slug: "use-cases/local-services",\n _status: "published",\n title: "Local Services Directory",\n hero: {\n type: "lowImpact",\n richText: {\n root: {\n type: "root",\n children: [\n {\n type: "heading",\n children: [\n {\n type: "text",\n detail: 0,\n format: 0,\n mode: "normal",\n style: "",\n text: "Build the go-to directory for local services",\n version: 1,\n },\n ],\n direction: "ltr" as const,\n format: "" as const,\n indent: 0,\n tag: "h1",\n version: 1,\n },\n {\n type: "paragraph",\n children: [\n {\n type: "text",\n detail: 0,\n format: 0,\n mode: "normal",\n style: "",\n text: "Help customers find trusted plumbers, electricians, restaurants, photographers, and more. Location-based search, reviews, and verified badges make it easy.",\n version: 1,\n },\n ],\n direction: "ltr" as const,\n format: "" as const,\n indent: 0,\n textFormat: 0,\n version: 1,\n },\n ],\n direction: "ltr" as const,\n format: "" as const,\n indent: 0,\n version: 1,\n },\n },\n links: [\n {\n link: {\n type: "custom",\n appearance: "default",\n label: "Start your directory",\n url: "/sign-up",\n },\n },\n {\n link: {\n type: "custom",\n appearance: "outline",\n label: "See templates",\n url: "/templates",\n },\n },\n ],\n },\n layout: [\n {\n blockType: "featureShowcase",\n blockName: "Location Search",\n label: "Location-Based Discovery",\n headline: "Find services near you with map search",\n description: createParagraph(\n "Integrated maps let users search by location, view service areas, and get directions. Auto-detect location for instant local results. Perfect for plumbers, electricians, restaurants, and any location-based service.",\n ),\n link: {\n type: "custom",\n label: "See location features",\n url: "/features",\n appearance: "default",\n },\n imagePosition: "right",\n features: [\n { text: "Interactive map search" },\n { text: "Service area boundaries" },\n { text: "Distance-based filtering" },\n { text: "Auto-detect user location" },\n ],\n },\n {\n blockType: "featureShowcase",\n blockName: "Reviews",\n label: "Reviews & Ratings",\n headline: "Build trust with verified reviews",\n description: createParagraph(\n "Let customers leave reviews and ratings. Display aggregate scores, filter by rating, and highlight top-rated services. Verified reviews build trust and help great businesses stand out.",\n ),\n link: {\n type: "custom",\n label: "Learn about reviews",\n url: "/features",\n appearance: "default",\n },\n imagePosition: "left",\n features: [\n { text: "Star ratings and written reviews" },\n { text: "Verified customer badges" },\n { text: "Review moderation tools" },\n { text: "Aggregate score display" },\n ],\n },\n {\n blockType: "featureShowcase",\n blockName: "Categories",\n label: "Service Categories",\n headline: "Organize by service type",\n description: createParagraph(\n "Create unlimited service categories and subcategories. Users can browse by type or search across all services. Clean category navigation helps customers find exactly what they need.",\n ),\n link: {\n type: "custom",\n label: "See category options",\n url: "/features",\n appearance: "default",\n },\n imagePosition: "right",\n features: [\n { text: "Unlimited categories" },\n { text: "Nested subcategories" },\n { text: "Category icons and images" },\n { text: "Featured category sections" },\n ],\n },\n {\n blockType: "bentoFeatures",\n blockName: "Local Services Features",\n heading: "Everything for local service directories",\n subheading: "Purpose-built features for connecting customers with local providers",\n features: [\n {\n size: "small",\n style: "gradient",\n icon: "globe",\n stat: "340%",\n title: "Higher Conversion",\n description: createParagraph("Location-based discovery drives action."),\n },\n {\n size: "small",\n style: "accent",\n icon: "users",\n title: "Business Profiles",\n description: createParagraph("Rich profiles with hours, services, and contact."),\n },\n {\n size: "small",\n style: "default",\n icon: "search",\n title: "Smart Search",\n description: createParagraph("Search by service, location, or keyword."),\n },\n {\n size: "small",\n style: "primary",\n icon: "shield",\n title: "Verified Badges",\n description: createParagraph("Highlight licensed and insured providers."),\n },\n {\n size: "small",\n style: "default",\n icon: "dollarSign",\n title: "Price Ranges",\n description: createParagraph("Display pricing tiers to set expectations."),\n },\n {\n size: "small",\n style: "default",\n icon: "zap",\n title: "Contact Forms",\n description: createParagraph("Lead capture directly from listings."),\n },\n ],\n },\n {\n blockType: "proofBanner",\n blockName: "CTA Section",\n style: "centered",\n headline: "Launch your local services directory today",\n subtext:\n "Pick a template, customize for your market, and start connecting customers with local businesses.",\n links: [\n {\n link: {\n type: "custom",\n appearance: "default",\n label: "Get started free",\n url: "/sign-up",\n },\n },\n {\n link: {\n type: "custom",\n appearance: "outline",\n label: "View pricing",\n url: "/pricing",\n },\n },\n ],\n },\n ],\n meta: {\n description:\n "Build a local services directory with location search, reviews, and verified badges. Help customers find plumbers, electricians, restaurants, and more.",\n title: "Local Services Directory \u2014 DirectoryHub Use Case",\n },\n }\n}\n',
6941
- "marketing/payload/src/endpoints/seed/directoryhub/use-cases/marketplaces.ts": `import type { Page } from "@/payload-types"
7732
+ "marketing/payload/src/endpoints/seed/directoryhub/use-cases/b2b-vendor-hubs.ts": 'import type { Page } from "@/payload-types"\nimport { createParagraph } from "../richtext-helper"\n\nexport const marketingPage = (): Partial<Page> => {\n return {\n slug: "use-cases/marketing",\n _status: "published",\n title: "SaaSify for Marketing Teams",\n hero: {\n type: "lowImpact",\n richText: {\n root: {\n type: "root",\n children: [\n {\n type: "heading",\n children: [\n {\n type: "text",\n detail: 0,\n format: 0,\n mode: "normal",\n style: "",\n text: "Launch campaigns that actually convert",\n version: 1,\n },\n ],\n direction: "ltr" as const,\n format: "" as const,\n indent: 0,\n tag: "h1",\n version: 1,\n },\n {\n type: "paragraph",\n children: [\n {\n type: "text",\n detail: 0,\n format: 0,\n mode: "normal",\n style: "",\n text: "Campaign planning, asset management, and performance analytics that help your marketing team move faster and measure what matters.",\n version: 1,\n },\n ],\n direction: "ltr" as const,\n format: "" as const,\n indent: 0,\n textFormat: 0,\n version: 1,\n },\n ],\n direction: "ltr" as const,\n format: "" as const,\n indent: 0,\n version: 1,\n },\n },\n links: [\n {\n link: {\n type: "custom",\n appearance: "default",\n label: "Start free trial",\n url: "/sign-up",\n },\n },\n {\n link: {\n type: "custom",\n appearance: "outline",\n label: "See a demo",\n url: "/demo",\n },\n },\n ],\n },\n layout: [\n {\n blockType: "featureShowcase",\n blockName: "Campaign Management",\n label: "Campaign Planning",\n headline: "Plan and execute campaigns in one place",\n description: createParagraph(\n "Visual campaign calendars, task assignments, and deadline tracking. See every campaign across channels and keep your team aligned on priorities.",\n ),\n link: {\n type: "custom",\n label: "See campaign features",\n url: "/features",\n appearance: "default",\n },\n imagePosition: "right",\n features: [\n { text: "Visual campaign calendar" },\n { text: "Multi-channel planning" },\n { text: "Task and deadline tracking" },\n { text: "Team collaboration tools" },\n ],\n },\n {\n blockType: "featureShowcase",\n blockName: "Asset Management",\n label: "Asset Library",\n headline: "Organize and share marketing assets",\n description: createParagraph(\n "Central repository for all your marketing materials. Version control, approval workflows, and easy sharing make it simple to keep everyone on brand.",\n ),\n link: {\n type: "custom",\n label: "Learn about asset management",\n url: "/features",\n appearance: "default",\n },\n imagePosition: "left",\n features: [\n { text: "Centralized asset library" },\n { text: "Version control" },\n { text: "Approval workflows" },\n { text: "Brand guidelines enforcement" },\n ],\n },\n {\n blockType: "featureShowcase",\n blockName: "Performance Analytics",\n label: "Analytics",\n headline: "Measure what matters",\n description: createParagraph(\n "Track campaign performance across channels. Custom dashboards show the metrics that matter most to your team and stakeholders.",\n ),\n link: {\n type: "custom",\n label: "See analytics features",\n url: "/features/analytics",\n appearance: "default",\n },\n imagePosition: "right",\n features: [\n { text: "Cross-channel analytics" },\n { text: "Custom dashboards" },\n { text: "Automated reporting" },\n { text: "ROI tracking" },\n ],\n },\n {\n blockType: "bentoFeatures",\n blockName: "Marketing Features",\n heading: "Tools that help you market smarter",\n subheading: "Everything your marketing team needs in one platform",\n features: [\n {\n size: "small",\n style: "gradient",\n icon: "rocket",\n stat: "3x",\n title: "Campaign Velocity",\n description: createParagraph("Launch campaigns faster than ever."),\n },\n {\n size: "small",\n style: "accent",\n icon: "folder",\n title: "Project Templates",\n description: createParagraph("Pre-built templates for common campaigns."),\n },\n {\n size: "small",\n style: "default",\n icon: "users",\n title: "Team Workload",\n description: createParagraph("Balance work across your team."),\n },\n {\n size: "small",\n style: "primary",\n icon: "barChart",\n title: "Performance Metrics",\n description: createParagraph("Track KPIs across all campaigns."),\n },\n {\n size: "small",\n style: "default",\n icon: "zap",\n title: "Integrations",\n description: createParagraph("Connect with HubSpot, Marketo, and more."),\n },\n {\n size: "small",\n style: "default",\n icon: "messageSquare",\n title: "Collaboration",\n description: createParagraph("Comments, feedback, and approvals in context."),\n },\n ],\n },\n {\n blockType: "proofBanner",\n blockName: "CTA Section",\n style: "centered",\n headline: "Supercharge your marketing team",\n subtext:\n "Campaign planning, asset management, and analytics. Start launching better campaigns today.",\n links: [\n {\n link: {\n type: "custom",\n appearance: "default",\n label: "Start free trial",\n url: "/sign-up",\n },\n },\n {\n link: {\n type: "custom",\n appearance: "outline",\n label: "Talk to sales",\n url: "/contact",\n },\n },\n ],\n },\n ],\n meta: {\n description:\n "SaaSify for marketing teams. Campaign planning, asset management, and performance analytics to help you launch campaigns that convert.",\n title: "Marketing Teams \u2014 SaaSify Use Case",\n },\n }\n}\n',
7733
+ "marketing/payload/src/endpoints/seed/directoryhub/use-cases/communities.ts": `import type { Page } from "@/payload-types"
6942
7734
  import { createParagraph } from "../richtext-helper"
6943
7735
 
6944
- export const marketplacesPage = (): Partial<Page> => {
7736
+ export const productPage = (): Partial<Page> => {
6945
7737
  return {
6946
- slug: "use-cases/marketplaces",
7738
+ slug: "use-cases/product",
6947
7739
  _status: "published",
6948
- title: "Marketplace Directory",
7740
+ title: "SaaSify for Product Teams",
6949
7741
  hero: {
6950
7742
  type: "lowImpact",
6951
7743
  richText: {
@@ -6961,7 +7753,7 @@ export const marketplacesPage = (): Partial<Page> => {
6961
7753
  format: 0,
6962
7754
  mode: "normal",
6963
7755
  style: "",
6964
- text: "Launch your own multi-vendor marketplace",
7756
+ text: "Ship features your users will love",
6965
7757
  version: 1,
6966
7758
  },
6967
7759
  ],
@@ -6980,7 +7772,7 @@ export const marketplacesPage = (): Partial<Page> => {
6980
7772
  format: 0,
6981
7773
  mode: "normal",
6982
7774
  style: "",
6983
- text: "Build a thriving marketplace with seller storefronts, product listings, and integrated payments. Featured placements and automated payouts help sellers succeed.",
7775
+ text: "Roadmap planning, feedback collection, and release management that help your product team build what matters and ship faster.",
6984
7776
  version: 1,
6985
7777
  },
6986
7778
  ],
@@ -7002,7 +7794,7 @@ export const marketplacesPage = (): Partial<Page> => {
7002
7794
  link: {
7003
7795
  type: "custom",
7004
7796
  appearance: "default",
7005
- label: "Build your marketplace",
7797
+ label: "Start free trial",
7006
7798
  url: "/sign-up",
7007
7799
  },
7008
7800
  },
@@ -7010,8 +7802,8 @@ export const marketplacesPage = (): Partial<Page> => {
7010
7802
  link: {
7011
7803
  type: "custom",
7012
7804
  appearance: "outline",
7013
- label: "See marketplace templates",
7014
- url: "/templates",
7805
+ label: "See a demo",
7806
+ url: "/demo",
7015
7807
  },
7016
7808
  },
7017
7809
  ],
@@ -7019,118 +7811,118 @@ export const marketplacesPage = (): Partial<Page> => {
7019
7811
  layout: [
7020
7812
  {
7021
7813
  blockType: "featureShowcase",
7022
- blockName: "Seller Storefronts",
7023
- label: "Seller Profiles",
7024
- headline: "Beautiful storefronts for every seller",
7814
+ blockName: "Roadmap Planning",
7815
+ label: "Product Roadmap",
7816
+ headline: "Plan and communicate your product vision",
7025
7817
  description: createParagraph(
7026
- "Each seller gets their own storefront with branding, product showcase, and reviews. Customers can browse by seller or discover products across the entire marketplace.",
7818
+ "Visual roadmaps that keep everyone aligned on what's coming. Timeline, kanban, and list views help you plan sprints and communicate priorities to stakeholders.",
7027
7819
  ),
7028
7820
  link: {
7029
7821
  type: "custom",
7030
- label: "See seller features",
7822
+ label: "See roadmap features",
7031
7823
  url: "/features",
7032
7824
  appearance: "default",
7033
7825
  },
7034
7826
  imagePosition: "right",
7035
7827
  features: [
7036
- { text: "Customizable seller pages" },
7037
- { text: "Product galleries and catalogs" },
7038
- { text: "Seller ratings and reviews" },
7039
- { text: "Contact and inquiry forms" },
7828
+ { text: "Visual product roadmap" },
7829
+ { text: "Sprint planning" },
7830
+ { text: "Milestone tracking" },
7831
+ { text: "Stakeholder sharing" },
7040
7832
  ],
7041
7833
  },
7042
7834
  {
7043
7835
  blockType: "featureShowcase",
7044
- blockName: "Product Listings",
7045
- label: "Product Management",
7046
- headline: "Comprehensive product listing tools",
7836
+ blockName: "Feedback Collection",
7837
+ label: "User Feedback",
7838
+ headline: "Collect and prioritize user feedback",
7047
7839
  description: createParagraph(
7048
- "Sellers can add products with images, variants, pricing, and inventory. Built-in categories and search help customers find exactly what they're looking for.",
7840
+ "Centralize feedback from users, support, and sales. Vote on ideas, tag themes, and connect feedback directly to roadmap items.",
7049
7841
  ),
7050
7842
  link: {
7051
7843
  type: "custom",
7052
- label: "Explore product features",
7844
+ label: "Learn about feedback tools",
7053
7845
  url: "/features",
7054
7846
  appearance: "default",
7055
7847
  },
7056
7848
  imagePosition: "left",
7057
7849
  features: [
7058
- { text: "Multiple product images" },
7059
- { text: "Variants and options" },
7060
- { text: "Inventory tracking" },
7061
- { text: "Category organization" },
7850
+ { text: "Feedback collection portal" },
7851
+ { text: "Voting and prioritization" },
7852
+ { text: "Theme tagging" },
7853
+ { text: "Feedback-to-roadmap linking" },
7062
7854
  ],
7063
7855
  },
7064
7856
  {
7065
7857
  blockType: "featureShowcase",
7066
- blockName: "Payments",
7067
- label: "Marketplace Payments",
7068
- headline: "Integrated payments with automated payouts",
7858
+ blockName: "Release Management",
7859
+ label: "Releases",
7860
+ headline: "Ship releases with confidence",
7069
7861
  description: createParagraph(
7070
- "Process payments through Stripe with automatic seller payouts. Set your marketplace commission, handle refunds, and track revenue all in one place.",
7862
+ "Track releases, manage changelogs, and coordinate launches. Automated release notes and internal announcements keep everyone in the loop.",
7071
7863
  ),
7072
7864
  link: {
7073
7865
  type: "custom",
7074
- label: "Learn about payments",
7075
- url: "/features/monetization",
7866
+ label: "See release features",
7867
+ url: "/features",
7076
7868
  appearance: "default",
7077
7869
  },
7078
7870
  imagePosition: "right",
7079
7871
  features: [
7080
- { text: "Stripe Connect integration" },
7081
- { text: "Automated seller payouts" },
7082
- { text: "Configurable commission rates" },
7083
- { text: "Refund management" },
7872
+ { text: "Release tracking" },
7873
+ { text: "Automated changelogs" },
7874
+ { text: "Internal announcements" },
7875
+ { text: "Launch coordination" },
7084
7876
  ],
7085
7877
  },
7086
7878
  {
7087
7879
  blockType: "bentoFeatures",
7088
- blockName: "Marketplace Features",
7089
- heading: "Everything you need for a thriving marketplace",
7090
- subheading: "Tools for sellers to succeed and buyers to discover",
7880
+ blockName: "Product Features",
7881
+ heading: "Tools that help you ship faster",
7882
+ subheading: "Everything your product team needs in one platform",
7091
7883
  features: [
7092
7884
  {
7093
7885
  size: "small",
7094
7886
  style: "gradient",
7095
- icon: "dollarSign",
7096
- stat: "$2M+",
7097
- title: "Revenue Processed",
7098
- description: createParagraph("Marketplaces generating real revenue."),
7887
+ icon: "rocket",
7888
+ stat: "50%",
7889
+ title: "Faster Shipping",
7890
+ description: createParagraph("Reduce time from idea to production."),
7099
7891
  },
7100
7892
  {
7101
7893
  size: "small",
7102
7894
  style: "accent",
7103
- icon: "dollarSign",
7104
- title: "Seller Dashboard",
7105
- description: createParagraph("Analytics and management for sellers."),
7895
+ icon: "layers",
7896
+ title: "Feature Specs",
7897
+ description: createParagraph("Document requirements and acceptance criteria."),
7106
7898
  },
7107
7899
  {
7108
7900
  size: "small",
7109
7901
  style: "default",
7110
- icon: "rocket",
7111
- title: "Featured Slots",
7112
- description: createParagraph("Premium placement for top sellers."),
7902
+ icon: "users",
7903
+ title: "Cross-Team Collaboration",
7904
+ description: createParagraph("Work with design, engineering, and QA."),
7113
7905
  },
7114
7906
  {
7115
7907
  size: "small",
7116
7908
  style: "primary",
7117
- icon: "shield",
7118
- title: "Buyer Protection",
7119
- description: createParagraph("Dispute resolution and guarantees."),
7909
+ icon: "barChart",
7910
+ title: "Product Analytics",
7911
+ description: createParagraph("Track feature adoption and usage."),
7120
7912
  },
7121
7913
  {
7122
7914
  size: "small",
7123
7915
  style: "default",
7124
- icon: "search",
7125
- title: "Smart Search",
7126
- description: createParagraph("AI-powered product discovery."),
7916
+ icon: "zap",
7917
+ title: "Jira Integration",
7918
+ description: createParagraph("Sync with your engineering workflow."),
7127
7919
  },
7128
7920
  {
7129
7921
  size: "small",
7130
7922
  style: "default",
7131
- icon: "barChart",
7132
- title: "Market Analytics",
7133
- description: createParagraph("Trends, sales data, and insights."),
7923
+ icon: "messageSquare",
7924
+ title: "Stakeholder Updates",
7925
+ description: createParagraph("Keep leadership informed automatically."),
7134
7926
  },
7135
7927
  ],
7136
7928
  },
@@ -7138,15 +7930,15 @@ export const marketplacesPage = (): Partial<Page> => {
7138
7930
  blockType: "proofBanner",
7139
7931
  blockName: "CTA Section",
7140
7932
  style: "centered",
7141
- headline: "Launch your marketplace today",
7933
+ headline: "Build products your users will love",
7142
7934
  subtext:
7143
- "From niche products to local services, build the marketplace your community needs.",
7935
+ "Roadmap planning, feedback collection, and release management. Start shipping faster today.",
7144
7936
  links: [
7145
7937
  {
7146
7938
  link: {
7147
7939
  type: "custom",
7148
7940
  appearance: "default",
7149
- label: "Start for free",
7941
+ label: "Start free trial",
7150
7942
  url: "/sign-up",
7151
7943
  },
7152
7944
  },
@@ -7154,8 +7946,8 @@ export const marketplacesPage = (): Partial<Page> => {
7154
7946
  link: {
7155
7947
  type: "custom",
7156
7948
  appearance: "outline",
7157
- label: "See pricing",
7158
- url: "/pricing",
7949
+ label: "Talk to sales",
7950
+ url: "/contact",
7159
7951
  },
7160
7952
  },
7161
7953
  ],
@@ -7163,12 +7955,15 @@ export const marketplacesPage = (): Partial<Page> => {
7163
7955
  ],
7164
7956
  meta: {
7165
7957
  description:
7166
- "Build a multi-vendor marketplace with seller storefronts, product listings, and integrated payments. Automated payouts and featured placements included.",
7167
- title: "Marketplace Directory \u2014 DirectoryHub Use Case",
7958
+ "SaaSify for product teams. Roadmap planning, feedback collection, and release management to help you build and ship features your users will love.",
7959
+ title: "Product Teams \u2014 SaaSify Use Case",
7168
7960
  },
7169
7961
  }
7170
7962
  }
7171
7963
  `,
7964
+ "marketing/payload/src/endpoints/seed/directoryhub/use-cases/index.ts": 'export { salesPage } from "./local-services"\nexport { marketingPage } from "./b2b-vendor-hubs"\nexport { productPage } from "./communities"\nexport { operationsPage } from "./marketplaces"\n',
7965
+ "marketing/payload/src/endpoints/seed/directoryhub/use-cases/local-services.ts": 'import type { Page } from "@/payload-types"\nimport { createParagraph } from "../richtext-helper"\n\nexport const salesPage = (): Partial<Page> => {\n return {\n slug: "use-cases/sales",\n _status: "published",\n title: "SaaSify for Sales Teams",\n hero: {\n type: "lowImpact",\n richText: {\n root: {\n type: "root",\n children: [\n {\n type: "heading",\n children: [\n {\n type: "text",\n detail: 0,\n format: 0,\n mode: "normal",\n style: "",\n text: "Close more deals with less effort",\n version: 1,\n },\n ],\n direction: "ltr" as const,\n format: "" as const,\n indent: 0,\n tag: "h1",\n version: 1,\n },\n {\n type: "paragraph",\n children: [\n {\n type: "text",\n detail: 0,\n format: 0,\n mode: "normal",\n style: "",\n text: "Pipeline management, lead tracking, forecasting, and automation tools that help your sales team work smarter and close faster.",\n version: 1,\n },\n ],\n direction: "ltr" as const,\n format: "" as const,\n indent: 0,\n textFormat: 0,\n version: 1,\n },\n ],\n direction: "ltr" as const,\n format: "" as const,\n indent: 0,\n version: 1,\n },\n },\n links: [\n {\n link: {\n type: "custom",\n appearance: "default",\n label: "Start free trial",\n url: "/sign-up",\n },\n },\n {\n link: {\n type: "custom",\n appearance: "outline",\n label: "See a demo",\n url: "/demo",\n },\n },\n ],\n },\n layout: [\n {\n blockType: "featureShowcase",\n blockName: "Pipeline Management",\n label: "Visual Pipeline",\n headline: "See your entire pipeline at a glance",\n description: createParagraph(\n "Drag-and-drop deal management with customizable stages. Track deal values, probabilities, and expected close dates. Never let a deal slip through the cracks.",\n ),\n link: {\n type: "custom",\n label: "See pipeline features",\n url: "/features",\n appearance: "default",\n },\n imagePosition: "right",\n features: [\n { text: "Customizable deal stages" },\n { text: "Drag-and-drop interface" },\n { text: "Deal value tracking" },\n { text: "Win probability scoring" },\n ],\n },\n {\n blockType: "featureShowcase",\n blockName: "Lead Management",\n label: "Lead Tracking",\n headline: "Never lose track of a lead again",\n description: createParagraph(\n "Capture leads from any source, score them automatically, and route them to the right rep. Activity tracking shows every touchpoint so you always have context.",\n ),\n link: {\n type: "custom",\n label: "Learn about lead management",\n url: "/features",\n appearance: "default",\n },\n imagePosition: "left",\n features: [\n { text: "Lead capture from any source" },\n { text: "Automatic lead scoring" },\n { text: "Smart lead routing" },\n { text: "Complete activity history" },\n ],\n },\n {\n blockType: "featureShowcase",\n blockName: "Sales Automation",\n label: "Automation",\n headline: "Automate follow-ups and admin tasks",\n description: createParagraph(\n "Set up automated email sequences, task reminders, and deal updates. Spend less time on admin and more time selling.",\n ),\n link: {\n type: "custom",\n label: "See automation options",\n url: "/features/automation",\n appearance: "default",\n },\n imagePosition: "right",\n features: [\n { text: "Automated email sequences" },\n { text: "Task reminders and follow-ups" },\n { text: "Deal stage automation" },\n { text: "Meeting scheduling" },\n ],\n },\n {\n blockType: "bentoFeatures",\n blockName: "Sales Features",\n heading: "Tools that help you sell more",\n subheading: "Everything your sales team needs in one platform",\n features: [\n {\n size: "small",\n style: "gradient",\n icon: "barChart",\n stat: "40%",\n title: "Faster Deal Cycles",\n description: createParagraph("Close deals faster with better tools."),\n },\n {\n size: "small",\n style: "accent",\n icon: "users",\n title: "Contact Management",\n description: createParagraph("Complete contact and company records."),\n },\n {\n size: "small",\n style: "default",\n icon: "search",\n title: "Smart Search",\n description: createParagraph("Find any deal, contact, or activity instantly."),\n },\n {\n size: "small",\n style: "primary",\n icon: "target",\n title: "Forecasting",\n description: createParagraph("Accurate revenue forecasting and reporting."),\n },\n {\n size: "small",\n style: "default",\n icon: "zap",\n title: "Email Integration",\n description: createParagraph("Sync with Gmail and Outlook."),\n },\n {\n size: "small",\n style: "default",\n icon: "shield",\n title: "Activity Tracking",\n description: createParagraph("Log calls, emails, and meetings automatically."),\n },\n ],\n },\n {\n blockType: "proofBanner",\n blockName: "CTA Section",\n style: "centered",\n headline: "Give your sales team an unfair advantage",\n subtext:\n "Pipeline management, lead tracking, and automation. Start closing more deals today.",\n links: [\n {\n link: {\n type: "custom",\n appearance: "default",\n label: "Start free trial",\n url: "/sign-up",\n },\n },\n {\n link: {\n type: "custom",\n appearance: "outline",\n label: "Talk to sales",\n url: "/contact",\n },\n },\n ],\n },\n ],\n meta: {\n description:\n "SaaSify for sales teams. Pipeline management, lead tracking, forecasting, and automation tools to help you close more deals faster.",\n title: "Sales Teams \u2014 SaaSify Use Case",\n },\n }\n}\n',
7966
+ "marketing/payload/src/endpoints/seed/directoryhub/use-cases/marketplaces.ts": 'import type { Page } from "@/payload-types"\nimport { createParagraph } from "../richtext-helper"\n\nexport const operationsPage = (): Partial<Page> => {\n return {\n slug: "use-cases/operations",\n _status: "published",\n title: "SaaSify for Operations Teams",\n hero: {\n type: "lowImpact",\n richText: {\n root: {\n type: "root",\n children: [\n {\n type: "heading",\n children: [\n {\n type: "text",\n detail: 0,\n format: 0,\n mode: "normal",\n style: "",\n text: "Scale your operations without the chaos",\n version: 1,\n },\n ],\n direction: "ltr" as const,\n format: "" as const,\n indent: 0,\n tag: "h1",\n version: 1,\n },\n {\n type: "paragraph",\n children: [\n {\n type: "text",\n detail: 0,\n format: 0,\n mode: "normal",\n style: "",\n text: "Process automation, resource planning, and reporting tools that help operations teams do more with less and scale efficiently.",\n version: 1,\n },\n ],\n direction: "ltr" as const,\n format: "" as const,\n indent: 0,\n textFormat: 0,\n version: 1,\n },\n ],\n direction: "ltr" as const,\n format: "" as const,\n indent: 0,\n version: 1,\n },\n },\n links: [\n {\n link: {\n type: "custom",\n appearance: "default",\n label: "Start free trial",\n url: "/sign-up",\n },\n },\n {\n link: {\n type: "custom",\n appearance: "outline",\n label: "See a demo",\n url: "/demo",\n },\n },\n ],\n },\n layout: [\n {\n blockType: "featureShowcase",\n blockName: "Process Automation",\n label: "Automation",\n headline: "Automate repetitive processes",\n description: createParagraph(\n "Build workflows that handle approvals, notifications, data routing, and handoffs automatically. Reduce manual work and eliminate bottlenecks.",\n ),\n link: {\n type: "custom",\n label: "See automation features",\n url: "/features/automation",\n appearance: "default",\n },\n imagePosition: "right",\n features: [\n { text: "Visual workflow builder" },\n { text: "Approval automation" },\n { text: "Data routing and handoffs" },\n { text: "Notification triggers" },\n ],\n },\n {\n blockType: "featureShowcase",\n blockName: "Resource Planning",\n label: "Resource Management",\n headline: "Plan and allocate resources effectively",\n description: createParagraph(\n "See team capacity, workload distribution, and resource utilization at a glance. Make informed decisions about hiring, outsourcing, and prioritization.",\n ),\n link: {\n type: "custom",\n label: "Learn about resource planning",\n url: "/features",\n appearance: "default",\n },\n imagePosition: "left",\n features: [\n { text: "Capacity planning" },\n { text: "Workload visibility" },\n { text: "Resource allocation" },\n { text: "Utilization tracking" },\n ],\n },\n {\n blockType: "featureShowcase",\n blockName: "Reporting",\n label: "Operations Analytics",\n headline: "Get visibility into every process",\n description: createParagraph(\n "Track cycle times, bottlenecks, and throughput. Custom dashboards and scheduled reports keep stakeholders informed and help you continuously improve.",\n ),\n link: {\n type: "custom",\n label: "See analytics features",\n url: "/features/analytics",\n appearance: "default",\n },\n imagePosition: "right",\n features: [\n { text: "Process analytics" },\n { text: "Cycle time tracking" },\n { text: "Bottleneck identification" },\n { text: "Custom dashboards" },\n ],\n },\n {\n blockType: "bentoFeatures",\n blockName: "Operations Features",\n heading: "Tools that help you scale",\n subheading: "Everything your operations team needs in one platform",\n features: [\n {\n size: "small",\n style: "gradient",\n icon: "zap",\n stat: "60%",\n title: "Time Saved",\n description: createParagraph("Automate away the busywork."),\n },\n {\n size: "small",\n style: "accent",\n icon: "layers",\n title: "Process Templates",\n description: createParagraph("Pre-built templates for common processes."),\n },\n {\n size: "small",\n style: "default",\n icon: "users",\n title: "Cross-Team Visibility",\n description: createParagraph("See work across departments."),\n },\n {\n size: "small",\n style: "primary",\n icon: "barChart",\n title: "Performance Metrics",\n description: createParagraph("Track KPIs across all processes."),\n },\n {\n size: "small",\n style: "default",\n icon: "database",\n title: "Data Integrations",\n description: createParagraph("Connect with your existing tools."),\n },\n {\n size: "small",\n style: "default",\n icon: "shield",\n title: "Compliance Tracking",\n description: createParagraph("Audit trails and compliance reporting."),\n },\n ],\n },\n {\n blockType: "proofBanner",\n blockName: "CTA Section",\n style: "centered",\n headline: "Scale operations without adding headcount",\n subtext:\n "Process automation, resource planning, and analytics. Start scaling smarter today.",\n links: [\n {\n link: {\n type: "custom",\n appearance: "default",\n label: "Start free trial",\n url: "/sign-up",\n },\n },\n {\n link: {\n type: "custom",\n appearance: "outline",\n label: "Talk to sales",\n url: "/contact",\n },\n },\n ],\n },\n ],\n meta: {\n description:\n "SaaSify for operations teams. Process automation, resource planning, and reporting tools to help you scale your operations efficiently.",\n title: "Operations Teams \u2014 SaaSify Use Case",\n },\n }\n}\n',
7172
7967
  "marketing/payload/src/endpoints/seed/home-static.ts": `import type { RequiredDataFromCollectionSlug } from "payload"
7173
7968
 
7174
7969
  // Helper to create simple paragraph rich text