From 53b168f621e4cf7e66399a1535f718da820c8796 Mon Sep 17 00:00:00 2001 From: Dan Mindru Date: Thu, 2 Jan 2025 11:47:17 +0100 Subject: [PATCH] Add PH badge and gh link --- shipixen/app/tag-data.json | 2 +- shipixen/components/shared/Footer.tsx | 5 ++ .../components/shared/ProductHuntBadge.tsx | 49 +++++++++++++++++++ shipixen/data/config/metadata.js | 7 +-- 4 files changed, 59 insertions(+), 4 deletions(-) create mode 100644 shipixen/components/shared/ProductHuntBadge.tsx diff --git a/shipixen/app/tag-data.json b/shipixen/app/tag-data.json index 83010b21..ddde23c7 100644 --- a/shipixen/app/tag-data.json +++ b/shipixen/app/tag-data.json @@ -1 +1 @@ -{"ai":81,"automation":69,"machine-learning":50,"pricing":1,"blogging":1,"books":22,"learning":29,"monetization":1,"seo":47,"accessibility":1,"developer-tools":15,"devtools":43,"efficiency":38,"productivity":139,"tools":123,"web-development":5,"design":29,"graphics":28,"marketing":99,"video-tools":8,"asynchronous":1,"productized-services":2,"remote-work":2,"boilerplates":22,"nextjs":25,"react":21,"saas":27,"starters--libraries":9,"ios":38,"apps":49,"other":32,"ai-tools":9,"developer-assessment":1,"lifestyle":2,"courses":18,"programming":37,"developer":49,"promotion":25,"social-media":21,"analytics":21,"affiliate-marketing":2,"bluesky":1,"scheduling":3,"ads":2,"paid-listings":2,"active-directory":1,"sysadmin":1,"macos":55,"ai-demo-apps":1,"boilerplate":8,"starters":9,"libraries":9,"flutter":3,"gui":1,"kubernetes":1,"health":14,"fitness":14,"wellness":7,"speech-to-text":1,"writing":13,"apis":12,"api":1,"automated-images":1,"miscellaneous":15,"random":9,"content-refresh":1,"optimization":15,"seo-tools":1,"browser-privacy":1,"screen-sharing":1,"streaming":1,"code":1,"development":3,"resources":2,"templates":5,"ai-models":1,"startup-submission":1,"email-marketing":4,"self-hosted":1,"golang":2,"tutorials":11,"rails":1,"subscriptions":1,"calendar-integration":1,"event-planning":1,"chrome-extension":2,"education":1,"finance":5,"investing":3,"money":3,"budgeting":3,"dashboards":4,"notes":10,"todo-apps":3,"one-page-sites":1,"responsive-design":2,"website-builders":5,"art-courses":4,"chatbots":2,"startup-saastools":3,"browser-extensions":7,"analysis":1,"reactjs":1,"tailwindcss":2,"clipboard":2,"utility":6,"content-creation":8,"video":3,"video-production":1,"custom-video":1,"timezones":1,"world-clocks":1,"code-review":1,"github":1,"gitlab":1,"compression":1,"media":2,"web-analytics":1,"api-scheduling":1,"display":1,"hooks":1,"ai-chatbots":1,"customer-engagement":1,"backlinks":3,"business":9,"stripe":1,"ads--paid-listings":5,"directories":4,"analyze":1,"audit":1,"domain-names":1,"salary-tracker":1,"services":1,"review-tracking":1,"design-tools":9,"file-management":1,"data-tools":1,"documentation":2,"chat":3,"pdf":2,"game-design":1,"notion":1,"chat-ui":4,"career":1,"freelancing":1,"guide":1,"open-source":4,"wealth-management":1,"blogs":3,"mailing-lists":4,"newsletters":4,"image-generation":4,"product-demo":1,"gumroad":1,"revenue":1,"images":1,"photography":2,"candidate-screening":1,"recruitment":1,"ai-icons":1,"text-to-speech":3,"voice":3,"ai-learning":1,"communication":1,"tattoo-design":1,"inventory-tracking":1,"ipados":1,"ai-writing-assistant":1,"grammarly-alternative":1,"keywords":1,"cybersecurity":1,"devops":1,"linux":1,"laravel":2,"sveltekit":1,"remix":1,"game-development":1,"content":1,"databases":1,"journaling":1,"html":1,"local-domains":1,"ngrok-alternative":1,"social":3,"business-documents":1,"email-templates":1,"campaigns":1,"customization":2,"designers":1,"developers":2,"marketers":1,"plugins":2,"themes":2,"e-commerce":1,"agencies":1,"freelancers":3,"tailwind-css":2,"typescript":2,"prisma":1,"nuxt":2,"personal-organization":1,"browser-tabs":1,"tab-management":1,"domains":1,"kids":1,"storytelling":1,"privacy":1,"audio":1,"website-builder":1,"monitoring":1,"uptime":1,"social-media-scheduling":2,"proxy":1,"obsidian":1,"mobile-apps":3,"forms":1,"ai-analysis":1,"app-store-reviews":1,"reddit-marketing":1,"sales":1,"traffic":1,"content-repurposing":1,"django":1,"screenshot-api":1,"analyze--audit":1,"codebase":1,"deployment":1,"swiftui":1,"notion-like-builder":1,"entrepreneurship":1,"browser-management":1,"vertical-tabs":1,"ipad":1,"collaboration":1,"color-picker":1,"screenshots":1,"community":1,"pinterest":1,"organization":3,"workspace":1,"desktop":1,"events":1,"timer":1,"posting-schedule":1,"reddit":1,"traffic-analysis":1,"project-generator":1,"xcode":1,"swimming":1,"triathlon":1,"workouts":1,"database":1,"sql":1,"components":1,"email":1,"ocr":1,"text":1,"growth":1,"memories":1,"charts":1,"data-organization":1,"time-tracking":1,"timeboxing":1,"color-palettes":1,"technical-writing":1,"no-code":1,"multilingual":1,"voice-cloning":1,"dictation":1,"rsi":1,"window-management":1,"project-management":1,"screenshot":1,"focus":1,"aov":1,"checkout":1} \ No newline at end of file +{"ai":82,"automation":68,"machine-learning":49,"pricing":1,"blogging":1,"books":22,"learning":29,"monetization":1,"seo":47,"accessibility":1,"developer-tools":15,"devtools":44,"efficiency":38,"productivity":140,"tools":124,"web-development":5,"design":29,"graphics":28,"marketing":99,"video-tools":8,"asynchronous":1,"productized-services":2,"remote-work":2,"boilerplates":23,"nextjs":26,"react":22,"saas":27,"starters--libraries":9,"ios":38,"apps":49,"other":32,"ai-tools":10,"developer-assessment":1,"lifestyle":2,"courses":18,"programming":38,"developer":50,"promotion":25,"social-media":21,"analytics":21,"affiliate-marketing":2,"bluesky":1,"scheduling":3,"ads":2,"paid-listings":2,"active-directory":1,"sysadmin":1,"macos":55,"ai-demo-apps":1,"boilerplate":8,"starters":10,"libraries":10,"flutter":3,"gui":1,"kubernetes":1,"health":14,"fitness":14,"wellness":7,"speech-to-text":1,"writing":13,"apis":12,"api":1,"automated-images":1,"miscellaneous":15,"random":9,"content-refresh":1,"optimization":15,"seo-tools":1,"browser-privacy":1,"screen-sharing":1,"streaming":1,"code":1,"development":3,"resources":2,"templates":5,"ai-models":1,"startup-submission":1,"email-marketing":4,"self-hosted":1,"golang":2,"tutorials":11,"rails":1,"subscriptions":1,"calendar-integration":1,"event-planning":1,"chrome-extension":2,"education":1,"finance":5,"investing":3,"money":3,"budgeting":3,"dashboards":4,"notes":10,"todo-apps":3,"one-page-sites":1,"responsive-design":2,"website-builders":5,"art-courses":4,"chatbots":2,"startup-saastools":3,"browser-extensions":7,"analysis":1,"reactjs":1,"tailwindcss":2,"clipboard":2,"utility":6,"content-creation":9,"video":3,"video-production":1,"custom-video":1,"timezones":1,"world-clocks":1,"code-review":1,"github":1,"gitlab":1,"compression":1,"media":2,"web-analytics":1,"api-scheduling":1,"display":1,"hooks":1,"ai-chatbots":1,"customer-engagement":1,"backlinks":3,"business":9,"stripe":1,"ads--paid-listings":5,"directories":4,"analyze":1,"audit":1,"domain-names":1,"salary-tracker":1,"linkedin-automation":1,"linkedin-growth":1,"linkedin-tool":1,"linkedin-engagement":1,"services":1,"review-tracking":1,"design-tools":9,"file-management":1,"data-tools":1,"documentation":2,"chat":3,"pdf":2,"game-design":1,"notion":1,"chat-ui":3,"career":1,"freelancing":1,"guide":1,"open-source":4,"wealth-management":1,"blogs":3,"mailing-lists":4,"newsletters":4,"image-generation":4,"product-demo":1,"gumroad":1,"revenue":1,"images":1,"photography":2,"candidate-screening":1,"recruitment":1,"ai-icons":1,"text-to-speech":3,"voice":3,"ai-learning":1,"communication":1,"tattoo-design":1,"inventory-tracking":1,"ipados":1,"ai-writing-assistant":1,"grammarly-alternative":1,"keywords":1,"cybersecurity":1,"devops":1,"linux":1,"laravel":2,"sveltekit":1,"remix":1,"game-development":1,"content":1,"databases":1,"journaling":1,"html":1,"local-domains":1,"ngrok-alternative":1,"social":3,"business-documents":1,"email-templates":1,"campaigns":1,"customization":2,"designers":1,"developers":2,"marketers":1,"plugins":2,"themes":2,"e-commerce":1,"agencies":1,"freelancers":3,"tailwind-css":2,"typescript":2,"prisma":1,"nuxt":2,"personal-organization":1,"browser-tabs":1,"tab-management":1,"domains":1,"kids":1,"storytelling":1,"privacy":1,"audio":1,"website-builder":1,"monitoring":1,"uptime":1,"social-media-scheduling":2,"proxy":1,"obsidian":1,"mobile-apps":3,"forms":1,"ai-analysis":1,"app-store-reviews":1,"reddit-marketing":1,"sales":1,"traffic":1,"content-repurposing":1,"django":1,"screenshot-api":1,"analyze--audit":1,"codebase":1,"deployment":1,"swiftui":1,"notion-like-builder":1,"entrepreneurship":1,"browser-management":1,"vertical-tabs":1,"ipad":1,"collaboration":1,"color-picker":1,"screenshots":1,"community":1,"pinterest":1,"organization":3,"workspace":1,"desktop":1,"events":1,"timer":1,"posting-schedule":1,"reddit":1,"traffic-analysis":1,"project-generator":1,"xcode":1,"swimming":1,"triathlon":1,"workouts":1,"database":1,"sql":1,"components":1,"email":1,"ocr":1,"text":1,"growth":1,"memories":1,"charts":1,"data-organization":1,"time-tracking":1,"timeboxing":1,"color-palettes":1,"technical-writing":1,"no-code":1,"multilingual":1,"voice-cloning":1,"dictation":1,"rsi":1,"window-management":1,"project-management":1,"screenshot":1,"focus":1,"aov":1,"checkout":1} \ No newline at end of file diff --git a/shipixen/components/shared/Footer.tsx b/shipixen/components/shared/Footer.tsx index e0d5ec72..07da991e 100644 --- a/shipixen/components/shared/Footer.tsx +++ b/shipixen/components/shared/Footer.tsx @@ -19,6 +19,7 @@ import { Button } from '@/components/shared/ui/button'; import { footerLinks } from '@/data/config/footerLinks'; import { TiktokIcon } from '@/components/icons/TiktokIcon'; import { ThreadsIcon } from '@/components/icons/ThreadsIcon'; +import { ProductHuntBadge } from '@/components/shared/ProductHuntBadge'; export default function Footer({ className }: { className?: string }) { const columnNumber = footerLinks.filter(({ links }) => links.length).length; @@ -129,6 +130,10 @@ export default function Footer({ className }: { className?: string }) { style={{ height: '1px' }} /> +
+ +
+
{siteConfig.email && ( diff --git a/shipixen/components/shared/ProductHuntBadge.tsx b/shipixen/components/shared/ProductHuntBadge.tsx new file mode 100644 index 00000000..c511831d --- /dev/null +++ b/shipixen/components/shared/ProductHuntBadge.tsx @@ -0,0 +1,49 @@ +'use client'; + +export const ProductHuntBadge = ({ + postName, + postId, + theme = 'light', + topic = 'featured', +}: { + postName: string; + postId: string; + theme?: 'light' | 'dark' | 'neutral'; + topic?: 'top-post-badge' | 'topic-dev-tools' | 'featured'; +}) => { + const baseimageSrc = `https://api.producthunt.com/widgets/embed-image/v1`; + + let imageSrc = '' + baseimageSrc; + + switch (topic) { + case 'top-post-badge': + imageSrc += `/top-post-badge.svg?post_id=${postId}&period=daily`; + break; + case 'topic-dev-tools': + imageSrc += `/top-post-topic-badge.svg?post_id=424261&period=weekly&topic_id=267`; + break; + case 'featured': + imageSrc += `/featured.svg?post_id=${postId}`; + break; + default: + imageSrc += `/top-post-badge.svg?post_id=${postId}&period=daily`; + } + + imageSrc += `&theme=${theme}`; + + return ( + + {`${postName} + + ); +}; diff --git a/shipixen/data/config/metadata.js b/shipixen/data/config/metadata.js index f628b720..c1e64e89 100644 --- a/shipixen/data/config/metadata.js +++ b/shipixen/data/config/metadata.js @@ -1,6 +1,7 @@ const metadata = { title: 'Rare Deals and Discounts on Software, Apps & SaaS', - description: 'Get rare limited time details on selected SaaS, software, apps and services. Discounts for Black Friday and beyond.', + description: + 'Get rare limited time details on selected SaaS, software, apps and services. Discounts for Black Friday and beyond.', domain: 'rarebigdeal.com', logoTitle: 'Rare Big Deal', businessName: 'Rare Big Deal', @@ -12,7 +13,7 @@ const metadata = { twitter: 'https://x.com/d4m1n', instagram: '', tiktok: '', - github: '', + github: 'https://github.com/danmindru/rare-big-deal', linkedin: '', youtube: '', facebook: '', @@ -21,7 +22,7 @@ const metadata = { author: 'Rare Big Deal', language: 'en-us', theme: 'system', - locale: 'en-US' + locale: 'en-US', }; module.exports = { metadata };