diff --git a/app/(landing)/blog/page.tsx b/app/(landing)/blog/page.tsx index 466acd7a9..654c7a317 100644 --- a/app/(landing)/blog/page.tsx +++ b/app/(landing)/blog/page.tsx @@ -1,7 +1,6 @@ import React from 'react'; import { Metadata } from 'next'; import { generatePageMetadata } from '@/lib/metadata'; -import BlogHero from '@/components/landing-page/blog/BlogHero'; import BlogGrid from '@/components/landing-page/blog/BlogGrid'; import { getAllBlogPosts } from '@/lib/data/blog'; @@ -9,12 +8,10 @@ export const metadata: Metadata = generatePageMetadata('blog'); const BlogPage = async () => { const posts = await getAllBlogPosts(); - const otherPosts = posts.slice(1); return (
- - +
); }; diff --git a/components/landing-page/blog/BlogCard.tsx b/components/landing-page/blog/BlogCard.tsx index 8fca56ba6..21465621b 100644 --- a/components/landing-page/blog/BlogCard.tsx +++ b/components/landing-page/blog/BlogCard.tsx @@ -7,54 +7,45 @@ import { import Link from 'next/link'; import Image from 'next/image'; import React from 'react'; +import { BlogPost } from '@/lib/data/blog'; -type Blog = { - id: number; - title: string; - excerpt: string; - image: string; - date: string; - slug: string; - category: string; -}; - -const BlogCard = ({ blog }: { blog: Blog }) => { +const BlogCard = ({ post }: { post: BlogPost }) => { return ( -
+
{blog.title}
- -
- - {blog.category} + +
+ + {post.category} - {blog.date} + {post.date}
-

- {blog.title} +

+ {post.title}

-

- {blog.excerpt} +

+ {post.excerpt}

- + Continue reading = ({ posts, - showLoadMore = false, + showLoadMore = true, maxPosts, }) => { - const displayPosts = maxPosts ? posts.slice(0, maxPosts) : posts; + const [visiblePosts, setVisiblePosts] = useState(maxPosts || 12); + const [selectedCategory, setSelectedCategory] = useState('Latest'); + const [isLoading, setIsLoading] = useState(false); - return
; + // Get posts to display (no filtering) + const displayPosts = posts.slice(0, visiblePosts); + const hasMorePosts = visiblePosts < posts.length; + + // Load more handler + const handleLoadMore = useCallback(() => { + if (isLoading || !hasMorePosts) return; + + setIsLoading(true); + + // Simulate loading delay for better UX + setTimeout(() => { + setVisiblePosts(prev => prev + 12); + setIsLoading(false); + }, 500); + }, [isLoading, hasMorePosts]); + + const handleCategoryChange = (category: string) => { + setSelectedCategory(category); + // UI only - no filtering functionality + }; + + return ( +
+ {/* Header Navigation */} +
+
+
+ {/* Category Buttons */} +
+ + +
+ + {/* Search Bar */} +
+ + +
+
+
+
+ + {/* Blog Grid */} +
+
+ {displayPosts.map(post => ( +
+ +
+ ))} +
+ + {/* View More Button */} + {showLoadMore && hasMorePosts && !isLoading && ( +
+ +
+ )} + + {/* Loading indicator */} + {isLoading && ( +
+
+ + Loading more posts... +
+
+ )} + + {/* No more posts message */} + {!hasMorePosts && posts.length > 0 && !isLoading && ( +
+

You've reached the end of the blog posts!

+
+ )} +
+
+ ); }; export default BlogGrid; diff --git a/components/landing-page/blog/BlogHero.tsx b/components/landing-page/blog/BlogHero.tsx deleted file mode 100644 index 8929cc6f8..000000000 --- a/components/landing-page/blog/BlogHero.tsx +++ /dev/null @@ -1,7 +0,0 @@ -'use client'; - -const BlogHero = () => { - return
; -}; - -export default BlogHero; diff --git a/components/landing-page/blog/BlogPostDetails.tsx b/components/landing-page/blog/BlogPostDetails.tsx index 8a5d80b2d..b1db47cee 100644 --- a/components/landing-page/blog/BlogPostDetails.tsx +++ b/components/landing-page/blog/BlogPostDetails.tsx @@ -3,12 +3,20 @@ import React from 'react'; import Image from 'next/image'; import Link from 'next/link'; -import { ArrowLeft, Clock, Tag, Share2, BookOpen } from 'lucide-react'; -import { BlogPost } from '@/lib/data/blog'; +import { + ArrowLeft, + Tag, + BookOpen, + Twitter, + MessageCircle, + Send, + Link as LinkIcon, +} from 'lucide-react'; +import { BlogPost, getRelatedPosts } from '@/lib/data/blog'; import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'; -import { Button } from '@/components/ui/button'; import { Badge } from '@/components/ui/badge'; import { useMarkdown } from '@/hooks/use-markdown'; +import BlogCard from './BlogCard'; interface BlogPostDetailsProps { post: BlogPost; @@ -21,6 +29,17 @@ const BlogPostDetails: React.FC = ({ post }) => { pedantic: true, loadingDelay: 100, }); + + const [relatedPosts, setRelatedPosts] = React.useState([]); + + React.useEffect(() => { + const fetchRelatedPosts = async () => { + const related = await getRelatedPosts(post.slug, 3); + setRelatedPosts(related); + }; + fetchRelatedPosts(); + }, [post.slug]); + const formatDate = (dateString: string) => { const date = new Date(dateString); return date.toLocaleDateString('en-US', { @@ -30,87 +49,108 @@ const BlogPostDetails: React.FC = ({ post }) => { }); }; - const handleShare = async () => { - if (navigator.share) { - try { - await navigator.share({ - title: post.title, - text: post.excerpt, - url: window.location.href, - }); - } catch { - // Silent error handling - } - } else { - // Fallback: copy to clipboard - navigator.clipboard.writeText(window.location.href); - // You could add a toast notification here + const handleShare = async (platform: string) => { + const url = window.location.href; + const title = post.title; + const text = post.excerpt; + + switch (platform) { + case 'twitter': + window.open( + `https://twitter.com/intent/tweet?text=${encodeURIComponent(title)}&url=${encodeURIComponent(url)}`, + '_blank' + ); + break; + case 'discord': + // Copy to clipboard for Discord + navigator.clipboard.writeText(`${title} ${url}`); + break; + case 'link': + navigator.clipboard.writeText(url); + break; + default: + if (navigator.share) { + try { + await navigator.share({ title, text, url }); + } catch { + // Silent error handling + } + } else { + navigator.clipboard.writeText(url); + } } }; return (
{/* Header */} -
-
+
+
Back to Blog -
- - {post.category} - - - - {formatDate(post.publishedAt)} - -
- -

- {post.title} -

- -

- {post.excerpt} -

- -
-
- - - {post.author.name.charAt(0)} - - {post.author.name} +
+
+
+ Admin + + + {formatDate(post.publishedAt)} + +
+ +

+ {post.title} +

+ +

+ {post.excerpt} +

-
- - {post.readTime} min read + {/* Share Section */} +
+

+ SHARE +

+
+ + + + +
- -
{/* Featured Image */} -
+
{post.title} = ({ post }) => {
{/* Content */} -
-
+
+
{loading ? ( -
+
Loading content...
) : error ? ( -
+

Error loading content:

{error}

@@ -138,7 +178,7 @@ const BlogPostDetails: React.FC = ({ post }) => {
{/* Tags */} -
+
Tags: {post.tags.map(tag => ( @@ -155,16 +195,16 @@ const BlogPostDetails: React.FC = ({ post }) => {
{/* Author Bio */} -
-
- +
+
+ - + {post.author.name.charAt(0)}
-

+

{post.author.name}

{post.author.bio}

@@ -174,47 +214,22 @@ const BlogPostDetails: React.FC = ({ post }) => {
{/* Related Posts */} -
-
-

+
+
+

Related Articles

-
- {/* This would be populated with related posts */} -
- -

Related posts will be loaded here

-
-
-
-
- - {/* CTA Section */} -
-
-

- Ready to Launch Your Project? -

-

- Join thousands of creators who are building the future with - Boundless. -

-
- - +
+ {relatedPosts.length > 0 ? ( + relatedPosts.map(relatedPost => ( + + )) + ) : ( +
+ +

No related posts found

+
+ )}
diff --git a/components/landing-page/blog/BlogSection.tsx b/components/landing-page/blog/BlogSection.tsx index 3a3e33024..b048c8e8b 100644 --- a/components/landing-page/blog/BlogSection.tsx +++ b/components/landing-page/blog/BlogSection.tsx @@ -1,134 +1,240 @@ 'use client'; -import { ArrowRight } from 'lucide-react'; +import { ArrowRight, ChevronLeft, ChevronRight } from 'lucide-react'; import Link from 'next/link'; +import { useState, useEffect, useCallback, useMemo } from 'react'; +import { motion } from 'framer-motion'; import BlogCard from './BlogCard'; +import { BlogPost, getAllBlogPosts } from '@/lib/data/blog'; -interface BlogPost { +interface CardStackItem { id: number; - title: string; - excerpt: string; - image: string; - date: string; - slug: string; - category: string; + name: string; + designation: string; + content: React.ReactNode; } -const mockBlogs: BlogPost[] = [ - { - id: 1, - title: 'Why Validation Before Funding Protects Everyone', - excerpt: - 'Validation ensures that only strong ideas move forward. By allowing the community and admins to review projects before funding, Boundless protects backers from risky proposals and gives creators the chance to refine their concepts. This process builds trust, reduces wasted resources, and creates a safer, more transparent environment where everyone benefits.', - image: '/blog1.jpg', - date: '29, Jul, 2025', - slug: 'why-validation-before-funding-protects-everyone', - category: 'Blog', - }, - { - id: 2, - title: 'The Future of Decentralized Crowdfunding', - excerpt: - 'Explore how blockchain technology is revolutionizing the way projects get funded. From smart contracts to community governance, discover the innovations that are making crowdfunding more transparent and efficient than ever before.', - image: '/blog2.jpg', - date: '25, Jul, 2025', - slug: 'future-decentralized-crowdfunding', - category: 'Web3', - }, - { - id: 3, - title: 'Building Trust in Web3 Communities', - excerpt: - 'Trust is the foundation of any successful community. Learn about the mechanisms and best practices that help build and maintain trust in decentralized communities, from reputation systems to transparent governance.', - image: '/blog3.jpg', - date: '22, Jul, 2025', - slug: 'building-trust-web3-communities', - category: 'Community', - }, - { - id: 4, - title: 'Grant Programs That Actually Work', - excerpt: - 'Not all grant programs are created equal. Discover what makes grant programs successful and how to design them to maximize impact while ensuring fair distribution of resources to deserving projects.', - image: '/blog4.jpg', - date: '18, Jul, 2025', - slug: 'grant-programs-that-actually-work', - category: 'Grants', - }, - { - id: 5, - title: 'The Psychology of Backing Projects', - excerpt: - 'Understanding what motivates people to back projects is crucial for creators. Dive into the psychological factors that influence backing decisions and how to create compelling project proposals.', - image: '/blog5.jpg', - date: '15, Jul, 2025', - slug: 'psychology-of-backing-projects', - category: 'Psychology', - }, - { - id: 6, - title: 'Smart Contracts for Crowdfunding', - excerpt: - 'Learn how smart contracts are automating and securing crowdfunding processes. From automatic fund distribution to milestone-based releases, explore the technical innovations driving the future of funding.', - image: '/blog6.jpg', - date: '12, Jul, 2025', - slug: 'smart-contracts-crowdfunding', - category: 'Technology', - }, -]; +const CARD_TRANSITION_DURATION = 0.5; +const AUTO_SLIDE_INTERVAL = 5000; +const MOBILE_BREAKPOINT = 640; + +interface CardStackProps { + items: CardStackItem[]; + offset?: number; + scaleFactor?: number; +} + +const CardStack = ({ + items, + offset = 10, + scaleFactor = 0.06, +}: CardStackProps) => { + const [currentIndex, setCurrentIndex] = useState(0); + + const nextCard = useCallback(() => { + setCurrentIndex(prev => (prev + 1) % items.length); + }, [items.length]); + + const prevCard = useCallback(() => { + setCurrentIndex(prev => (prev - 1 + items.length) % items.length); + }, [items.length]); + + useEffect(() => { + const interval = setInterval(nextCard, AUTO_SLIDE_INTERVAL); + return () => clearInterval(interval); + }, [nextCard]); + + if (items.length === 0) return null; + + return ( +
+ {items.map((item, index) => { + const isActive = index === currentIndex; + const isPrev = + index === (currentIndex - 1 + items.length) % items.length; + const isNext = index === (currentIndex + 1) % items.length; + + let zIndex = 0; + let translateY = 0; + let scale = 1; + let opacity = 0.3; + + if (isActive) { + zIndex = 3; + translateY = 0; + scale = 1; + opacity = 1; + } else if (isPrev) { + zIndex = 2; + translateY = offset; + scale = 1 - scaleFactor; + opacity = 0.7; + } else if (isNext) { + zIndex = 1; + translateY = -offset; + scale = 1 - scaleFactor * 2; + opacity = 0.4; + } else { + zIndex = 0; + translateY = offset * 2; + scale = 1 - scaleFactor * 3; + opacity = 0.1; + } + + return ( + + {item.content} + + ); + })} + + {/* Navigation Buttons */} + + + + {/* Dots Indicator */} +
+ {items.map((_, index) => ( +
+
+ ); +}; const BlogSection = () => { + const [isMobile, setIsMobile] = useState(false); + const [blogPosts, setBlogPosts] = useState([]); + const [loading, setLoading] = useState(true); + + useEffect(() => { + const fetchBlogPosts = async () => { + try { + const posts = await getAllBlogPosts(); + setBlogPosts(posts.slice(0, 6)); // Take first 6 posts for the section + setLoading(false); + } catch (error) { + console.error('Error fetching blog posts:', error); + setLoading(false); + } + }; + + fetchBlogPosts(); + }, []); + + useEffect(() => { + const checkMobile = () => { + setIsMobile(window.innerWidth < MOBILE_BREAKPOINT); + }; + + checkMobile(); + window.addEventListener('resize', checkMobile); + return () => window.removeEventListener('resize', checkMobile); + }, []); + + const cardStackItems: CardStackItem[] = useMemo( + () => + blogPosts.map(post => ({ + id: post.id, + name: post.title, + designation: post.date, + content: , + })), + [blogPosts] + ); + + if (loading) { + return ( +
+
+
Loading blog posts...
+
+
+ ); + } + return (
-
-
-

- From the Blog -

+
+ {/* Header */} +

- Ideas that shape the future + Latest from Our Blog

-

- Discover stories, tips, and updates on crowdfunding, grants, and - Web3. Learn from builders and backers driving real impact. +

+ Stay updated with the latest insights, trends, and stories from the + world of decentralized crowdfunding and Web3 innovation.

-
- - Read More Articles - - -
-
-
- {mockBlogs.map(blog => ( -
- + {/* Blog Cards */} + {isMobile ? ( +
+ {blogPosts.map(post => ( +
+ +
+ ))}
- ))} -
+ ) : ( + + )} + + {/* View All Button */} +
- Read More Articles - + View All Posts +
@@ -136,4 +242,4 @@ const BlogSection = () => { ); }; -export default BlogSection; +export default BlogSection; \ No newline at end of file diff --git a/lib/data/blog.ts b/lib/data/blog.ts index ac496adba..7e364abdc 100644 --- a/lib/data/blog.ts +++ b/lib/data/blog.ts @@ -26,9 +26,9 @@ export interface BlogPost { export const mockBlogPosts: BlogPost[] = [ { id: 1, - title: 'Why Validation Before Funding Protects Everyone', + title: "Milestone-Based Funding: Why It's the Future of Crowdfunding", excerpt: - 'Validation ensures that only strong ideas move forward. By allowing the community and admins to review projects before funding, Boundless protects backers from risky proposals and gives creators the chance to refine their concepts.', + "Traditional crowdfunding often leaves backers exposed. Discover how Boundless' milestone escrow protects supporters and ensures projects deliver on their promises.", content: `# Why Validation Before Funding Protects Everyone The crowdfunding landscape has evolved significantly over the past decade. What started as a simple way for creators to raise funds has become a complex ecosystem where trust, transparency, and validation are paramount. At Boundless, we believe that validation before funding isn't just a nice-to-have feature—it's essential for protecting everyone involved in the process. @@ -160,10 +160,10 @@ At Boundless, we're committed to making crowdfunding better for everyone. Our va > "The best validation is the one that protects everyone while enabling innovation." - Boundless Team Ready to launch your validated project? [Get started today](/auth/signup) and join thousands of creators who are building the future with Boundless.`, - image: '/blog1.jpg', - date: '29, Jul, 2025', - slug: 'why-validation-before-funding-protects-everyone', - category: 'Blog', + image: '/funding.png', + date: '29 Jul, 2025', + slug: 'milestone-based-funding-future-crowdfunding', + category: 'Category', author: { name: 'Sarah Chen', avatar: '/team/avatar1.jpg', @@ -345,7 +345,7 @@ At Boundless, we're committed to leading this transformation. Join us in buildin > "The future of funding is decentralized, transparent, and community-driven." - Boundless Team [Start your journey today](/auth/signup) and be part of the decentralized crowdfunding revolution.`, - image: '/blog2.jpg', + image: '/funding.png', date: '25, Jul, 2025', slug: 'future-decentralized-crowdfunding', category: 'Web3', @@ -657,7 +657,7 @@ The key is to start with clear values, implement appropriate systems, and contin [Join the Boundless community](/auth/signup) and help us build the future of trusted Web3 collaboration. `, - image: '/blog3.jpg', + image: '/funding.png', date: '22, Jul, 2025', slug: 'building-trust-web3-communities', category: 'Community', @@ -681,6 +681,621 @@ The key is to start with clear values, implement appropriate systems, and contin ], }, }, + { + id: 4, + title: 'Smart Contract Security in Crowdfunding', + excerpt: + 'Learn about the essential security measures that protect both creators and backers in decentralized crowdfunding platforms.', + content: `# Smart Contract Security in Crowdfunding + +Security is paramount in decentralized crowdfunding. This comprehensive guide covers the essential security measures that protect both creators and backers.`, + image: '/funding.png', + date: '18 Jul, 2025', + slug: 'smart-contract-security-crowdfunding', + category: 'Category', + author: { + name: 'David Kim', + avatar: '/team/avatar4.jpg', + bio: 'Blockchain security expert with 10+ years in smart contract auditing.', + }, + tags: ['Security', 'Smart Contracts', 'Crowdfunding'], + readTime: 6, + publishedAt: '2025-07-18T16:45:00Z', + seo: { + metaTitle: 'Smart Contract Security in Crowdfunding | Boundless', + metaDescription: + 'Learn about essential security measures for decentralized crowdfunding platforms.', + keywords: [ + 'smart contract security', + 'blockchain security', + 'crowdfunding safety', + ], + }, + }, + { + id: 5, + title: 'The Psychology of Backing Projects', + excerpt: + 'Understanding what motivates people to back projects is crucial for creators. Dive into the psychological factors that influence backing decisions.', + content: `# The Psychology of Backing Projects + +Understanding the psychological factors that influence backing decisions can help creators design more compelling campaigns.`, + image: '/funding.png', + date: '15 Jul, 2025', + slug: 'psychology-backing-projects', + category: 'Category', + author: { + name: 'Lisa Wang', + avatar: '/team/avatar5.jpg', + bio: 'Behavioral economist specializing in crowdfunding psychology.', + }, + tags: ['Psychology', 'Marketing', 'Crowdfunding'], + readTime: 7, + publishedAt: '2025-07-15T11:20:00Z', + seo: { + metaTitle: 'The Psychology of Backing Projects | Boundless', + metaDescription: + 'Discover the psychological factors that influence crowdfunding backing decisions.', + keywords: [ + 'crowdfunding psychology', + 'backing behavior', + 'campaign psychology', + ], + }, + }, + { + id: 6, + title: 'Grant Programs That Actually Work', + excerpt: + 'Not all grant programs are created equal. Discover what makes grant programs successful and how to design them for maximum impact.', + content: `# Grant Programs That Actually Work + +Learn the key principles behind successful grant programs and how to design them for maximum impact and fair distribution.`, + image: '/funding.png', + date: '12 Jul, 2025', + slug: 'grant-programs-actually-work', + category: 'Category', + author: { + name: 'Michael Torres', + avatar: '/team/avatar6.jpg', + bio: 'Grant program designer with experience in both traditional and Web3 funding.', + }, + tags: ['Grants', 'Funding', 'Program Design'], + readTime: 9, + publishedAt: '2025-07-12T14:30:00Z', + seo: { + metaTitle: 'Grant Programs That Actually Work | Boundless', + metaDescription: + 'Discover what makes grant programs successful and how to design them for maximum impact.', + keywords: ['grant programs', 'funding design', 'successful grants'], + }, + }, + { + id: 7, + title: 'Community-Driven Development', + excerpt: + 'Explore how community feedback and participation can drive better product development and create more successful projects.', + content: `# Community-Driven Development + +Learn how to leverage community feedback and participation to create better products and more successful projects.`, + image: '/funding.png', + date: '10 Jul, 2025', + slug: 'community-driven-development', + category: 'Category', + author: { + name: 'Anna Patel', + avatar: '/team/avatar7.jpg', + bio: 'Community manager and product strategist focused on user-driven development.', + }, + tags: ['Community', 'Development', 'Product Strategy'], + readTime: 8, + publishedAt: '2025-07-10T09:00:00Z', + seo: { + metaTitle: 'Community-Driven Development | Boundless', + metaDescription: + 'Learn how community feedback drives better product development and project success.', + keywords: ['community development', 'user feedback', 'product strategy'], + }, + }, + { + id: 8, + title: 'Token Economics in Crowdfunding', + excerpt: + 'Understand how token economics can enhance crowdfunding platforms and create better incentives for all participants.', + content: `# Token Economics in Crowdfunding + +Discover how well-designed token economics can enhance crowdfunding platforms and create better incentives for creators and backers.`, + image: '/funding.png', + date: '8 Jul, 2025', + slug: 'token-economics-crowdfunding', + category: 'Category', + author: { + name: 'James Wilson', + avatar: '/team/avatar8.jpg', + bio: 'Tokenomics expert and economist specializing in Web3 incentive design.', + }, + tags: ['Tokenomics', 'Economics', 'Incentives'], + readTime: 11, + publishedAt: '2025-07-08T13:15:00Z', + seo: { + metaTitle: 'Token Economics in Crowdfunding | Boundless', + metaDescription: + 'Learn how token economics can enhance crowdfunding platforms and create better incentives.', + keywords: [ + 'token economics', + 'crowdfunding incentives', + 'Web3 economics', + ], + }, + }, + { + id: 9, + title: 'Cross-Chain Crowdfunding Solutions', + excerpt: + 'Explore how cross-chain technology enables projects to accept funding from multiple blockchain networks.', + content: `# Cross-Chain Crowdfunding Solutions + +Learn how cross-chain technology is enabling projects to accept funding from multiple blockchain networks, increasing accessibility.`, + image: '/funding.png', + date: '5 Jul, 2025', + slug: 'cross-chain-crowdfunding-solutions', + category: 'Category', + author: { + name: 'Elena Rodriguez', + avatar: '/team/avatar9.jpg', + bio: 'Blockchain engineer specializing in cross-chain interoperability solutions.', + }, + tags: ['Cross-Chain', 'Interoperability', 'Blockchain'], + readTime: 10, + publishedAt: '2025-07-05T15:45:00Z', + seo: { + metaTitle: 'Cross-Chain Crowdfunding Solutions | Boundless', + metaDescription: + 'Discover how cross-chain technology enables multi-network crowdfunding.', + keywords: [ + 'cross-chain', + 'blockchain interoperability', + 'multi-chain funding', + ], + }, + }, + { + id: 10, + title: 'Regulatory Landscape for Web3 Funding', + excerpt: + 'Navigate the complex regulatory landscape surrounding Web3 funding and learn how to stay compliant while innovating.', + content: `# Regulatory Landscape for Web3 Funding + +Navigate the complex regulatory landscape surrounding Web3 funding and learn how to stay compliant while driving innovation.`, + image: '/funding.png', + date: '2 Jul, 2025', + slug: 'regulatory-landscape-web3-funding', + category: 'Category', + author: { + name: 'Robert Chen', + avatar: '/team/avatar10.jpg', + bio: 'Regulatory compliance expert specializing in Web3 and fintech regulations.', + }, + tags: ['Regulation', 'Compliance', 'Web3'], + readTime: 12, + publishedAt: '2025-07-02T10:30:00Z', + seo: { + metaTitle: 'Regulatory Landscape for Web3 Funding | Boundless', + metaDescription: + 'Learn how to navigate Web3 funding regulations and stay compliant.', + keywords: ['Web3 regulation', 'funding compliance', 'crypto regulation'], + }, + }, + { + id: 11, + title: 'AI-Powered Project Matching', + excerpt: + 'Discover how artificial intelligence is revolutionizing project-backer matching and improving funding success rates.', + content: `# AI-Powered Project Matching + +Explore how artificial intelligence is revolutionizing the way projects are matched with potential backers, improving success rates.`, + image: '/funding.png', + date: '30 Jun, 2025', + slug: 'ai-powered-project-matching', + category: 'Category', + author: { + name: 'Dr. Sarah Johnson', + avatar: '/team/avatar11.jpg', + bio: 'AI researcher and machine learning engineer focused on recommendation systems.', + }, + tags: ['AI', 'Machine Learning', 'Matching'], + readTime: 9, + publishedAt: '2025-06-30T12:00:00Z', + seo: { + metaTitle: 'AI-Powered Project Matching | Boundless', + metaDescription: + 'Learn how AI is revolutionizing project-backer matching in crowdfunding.', + keywords: ['AI matching', 'machine learning', 'project recommendations'], + }, + }, + { + id: 12, + title: 'Sustainable Funding Models', + excerpt: + 'Explore innovative funding models that promote long-term sustainability for both creators and the platform ecosystem.', + content: `# Sustainable Funding Models + +Discover innovative funding models that promote long-term sustainability for creators, backers, and the platform ecosystem.`, + image: '/funding.png', + date: '28 Jun, 2025', + slug: 'sustainable-funding-models', + category: 'Category', + author: { + name: 'Dr. Maria Gonzalez', + avatar: '/team/avatar12.jpg', + bio: 'Sustainability economist and funding model researcher.', + }, + tags: ['Sustainability', 'Funding Models', 'Long-term'], + readTime: 13, + publishedAt: '2025-06-28T16:20:00Z', + seo: { + metaTitle: 'Sustainable Funding Models | Boundless', + metaDescription: + 'Explore sustainable funding models for long-term platform and creator success.', + keywords: [ + 'sustainable funding', + 'funding models', + 'long-term sustainability', + ], + }, + }, + { + id: 13, + title: 'DeFi Integration in Crowdfunding Platforms', + excerpt: + 'Explore how decentralized finance protocols are being integrated into crowdfunding platforms to provide better yield opportunities for backers.', + content: `# DeFi Integration in Crowdfunding Platforms + +Decentralized finance is revolutionizing how crowdfunding platforms operate, offering new opportunities for both creators and backers.`, + image: '/funding.png', + date: '25 Jun, 2025', + slug: 'defi-integration-crowdfunding-platforms', + category: 'Category', + author: { + name: 'Dr. Kevin Park', + avatar: '/team/avatar13.jpg', + bio: 'DeFi researcher and protocol architect with expertise in yield farming and liquidity provision.', + }, + tags: ['DeFi', 'Yield Farming', 'Liquidity'], + readTime: 14, + publishedAt: '2025-06-25T11:30:00Z', + seo: { + metaTitle: 'DeFi Integration in Crowdfunding Platforms | Boundless', + metaDescription: + 'Learn how DeFi protocols are enhancing crowdfunding platforms with yield opportunities.', + keywords: ['DeFi crowdfunding', 'yield farming', 'liquidity provision'], + }, + }, + { + id: 14, + title: 'NFT Rewards in Crowdfunding Campaigns', + excerpt: + 'Discover how non-fungible tokens are being used as unique rewards and ownership tokens in modern crowdfunding campaigns.', + content: `# NFT Rewards in Crowdfunding Campaigns + +NFTs are transforming how creators reward their backers, offering unique digital assets and ownership experiences.`, + image: '/funding.png', + date: '22 Jun, 2025', + slug: 'nft-rewards-crowdfunding-campaigns', + category: 'Category', + author: { + name: 'Sophie Chen', + avatar: '/team/avatar14.jpg', + bio: 'NFT strategist and digital art curator specializing in utility-based token design.', + }, + tags: ['NFTs', 'Digital Rewards', 'Ownership'], + readTime: 10, + publishedAt: '2025-06-22T14:15:00Z', + seo: { + metaTitle: 'NFT Rewards in Crowdfunding Campaigns | Boundless', + metaDescription: + 'Explore how NFTs are revolutionizing crowdfunding rewards and backer experiences.', + keywords: ['NFT rewards', 'digital ownership', 'crowdfunding NFTs'], + }, + }, + { + id: 15, + title: 'Multi-Chain Crowdfunding Strategies', + excerpt: + 'Learn how to leverage multiple blockchain networks to maximize funding opportunities and reach diverse communities.', + content: `# Multi-Chain Crowdfunding Strategies + +Expanding across multiple blockchain networks can significantly increase your project's reach and funding potential.`, + image: '/funding.png', + date: '20 Jun, 2025', + slug: 'multi-chain-crowdfunding-strategies', + category: 'Category', + author: { + name: 'Alex Thompson', + avatar: '/team/avatar15.jpg', + bio: 'Blockchain strategist with experience in cross-chain protocol development and community building.', + }, + tags: ['Multi-Chain', 'Strategy', 'Community'], + readTime: 12, + publishedAt: '2025-06-20T09:45:00Z', + seo: { + metaTitle: 'Multi-Chain Crowdfunding Strategies | Boundless', + metaDescription: + 'Discover strategies for successful multi-chain crowdfunding campaigns.', + keywords: [ + 'multi-chain crowdfunding', + 'blockchain strategy', + 'cross-chain', + ], + }, + }, + { + id: 16, + title: 'Governance Tokens in Crowdfunding', + excerpt: + 'Understand how governance tokens can enhance community participation and create more democratic funding decisions.', + content: `# Governance Tokens in Crowdfunding + +Governance tokens are empowering communities to have a direct say in funding decisions and platform development.`, + image: '/funding.png', + date: '18 Jun, 2025', + slug: 'governance-tokens-crowdfunding', + category: 'Category', + author: { + name: 'Rachel Green', + avatar: '/team/avatar16.jpg', + bio: 'Governance expert and DAO researcher focused on token-based decision making.', + }, + tags: ['Governance', 'DAO', 'Democracy'], + readTime: 11, + publishedAt: '2025-06-18T16:20:00Z', + seo: { + metaTitle: 'Governance Tokens in Crowdfunding | Boundless', + metaDescription: + 'Learn how governance tokens are democratizing crowdfunding decisions.', + keywords: ['governance tokens', 'DAO governance', 'democratic funding'], + }, + }, + { + id: 17, + title: 'Risk Assessment in Web3 Crowdfunding', + excerpt: + 'Learn how to properly assess and mitigate risks when backing or launching projects in the Web3 crowdfunding space.', + content: `# Risk Assessment in Web3 Crowdfunding + +Proper risk assessment is crucial for success in the dynamic world of Web3 crowdfunding.`, + image: '/funding.png', + date: '15 Jun, 2025', + slug: 'risk-assessment-web3-crowdfunding', + category: 'Category', + author: { + name: 'Dr. Michael Brown', + avatar: '/team/avatar17.jpg', + bio: 'Risk management specialist with expertise in blockchain and cryptocurrency investments.', + }, + tags: ['Risk Management', 'Assessment', 'Web3'], + readTime: 13, + publishedAt: '2025-06-15T13:10:00Z', + seo: { + metaTitle: 'Risk Assessment in Web3 Crowdfunding | Boundless', + metaDescription: + 'Master risk assessment techniques for Web3 crowdfunding investments.', + keywords: ['risk assessment', 'Web3 investment', 'crypto risk'], + }, + }, + { + id: 18, + title: 'Liquidity Pools for Crowdfunding', + excerpt: + 'Explore how liquidity pools can provide continuous funding opportunities and better price discovery for crowdfunding projects.', + content: `# Liquidity Pools for Crowdfunding + +Liquidity pools are revolutionizing how projects maintain continuous funding and price discovery.`, + image: '/funding.png', + date: '12 Jun, 2025', + slug: 'liquidity-pools-crowdfunding', + category: 'Category', + author: { + name: 'David Lee', + avatar: '/team/avatar18.jpg', + bio: 'Liquidity expert and AMM protocol developer with deep knowledge of automated market makers.', + }, + tags: ['Liquidity', 'AMM', 'Price Discovery'], + readTime: 9, + publishedAt: '2025-06-12T10:30:00Z', + seo: { + metaTitle: 'Liquidity Pools for Crowdfunding | Boundless', + metaDescription: + 'Discover how liquidity pools enhance crowdfunding with continuous funding opportunities.', + keywords: ['liquidity pools', 'AMM crowdfunding', 'continuous funding'], + }, + }, + { + id: 19, + title: 'Social Impact Crowdfunding', + excerpt: + 'Learn how crowdfunding platforms are being used to fund social impact projects and create positive change in communities.', + content: `# Social Impact Crowdfunding + +Crowdfunding is becoming a powerful tool for driving social change and funding impactful community projects.`, + image: '/funding.png', + date: '10 Jun, 2025', + slug: 'social-impact-crowdfunding', + category: 'Category', + author: { + name: 'Sarah Williams', + avatar: '/team/avatar19.jpg', + bio: 'Social impact strategist and community development expert with experience in nonprofit funding.', + }, + tags: ['Social Impact', 'Community', 'Change'], + readTime: 8, + publishedAt: '2025-06-10T15:45:00Z', + seo: { + metaTitle: 'Social Impact Crowdfunding | Boundless', + metaDescription: + 'Explore how crowdfunding is driving social change and community impact.', + keywords: [ + 'social impact crowdfunding', + 'community funding', + 'social change', + ], + }, + }, + { + id: 20, + title: 'Automated Market Making for Projects', + excerpt: + 'Discover how automated market making can provide continuous liquidity and better price discovery for crowdfunding projects.', + content: `# Automated Market Making for Projects + +Automated market making is providing new ways for projects to maintain liquidity and discover fair prices.`, + image: '/funding.png', + date: '8 Jun, 2025', + slug: 'automated-market-making-projects', + category: 'Category', + author: { + name: 'Tom Anderson', + avatar: '/team/avatar20.jpg', + bio: 'Market making specialist and algorithmic trading expert with focus on DeFi protocols.', + }, + tags: ['Market Making', 'Automation', 'Liquidity'], + readTime: 10, + publishedAt: '2025-06-08T12:00:00Z', + seo: { + metaTitle: 'Automated Market Making for Projects | Boundless', + metaDescription: + 'Learn how automated market making enhances project liquidity and price discovery.', + keywords: [ + 'automated market making', + 'project liquidity', + 'price discovery', + ], + }, + }, + { + id: 21, + title: 'Staking Mechanisms in Crowdfunding', + excerpt: + 'Understand how staking mechanisms can align incentives and provide additional rewards for long-term project supporters.', + content: `# Staking Mechanisms in Crowdfunding + +Staking is creating new ways to reward long-term supporters and align incentives in crowdfunding projects.`, + image: '/funding.png', + date: '5 Jun, 2025', + slug: 'staking-mechanisms-crowdfunding', + category: 'Category', + author: { + name: 'Emma Davis', + avatar: '/team/avatar21.jpg', + bio: 'Staking protocol designer and incentive mechanism researcher with expertise in token economics.', + }, + tags: ['Staking', 'Incentives', 'Long-term'], + readTime: 11, + publishedAt: '2025-06-05T14:30:00Z', + seo: { + metaTitle: 'Staking Mechanisms in Crowdfunding | Boundless', + metaDescription: + 'Explore how staking mechanisms enhance crowdfunding with better incentives.', + keywords: [ + 'staking crowdfunding', + 'incentive mechanisms', + 'long-term rewards', + ], + }, + }, + { + id: 22, + title: 'Cross-Border Crowdfunding Challenges', + excerpt: + 'Navigate the complexities of international crowdfunding, including regulatory compliance and currency considerations.', + content: `# Cross-Border Crowdfunding Challenges + +International crowdfunding presents unique challenges and opportunities for global project funding.`, + image: '/funding.png', + date: '2 Jun, 2025', + slug: 'cross-border-crowdfunding-challenges', + category: 'Category', + author: { + name: 'Dr. Lisa Zhang', + avatar: '/team/avatar22.jpg', + bio: 'International finance expert and regulatory compliance specialist with global experience.', + }, + tags: ['International', 'Compliance', 'Global'], + readTime: 12, + publishedAt: '2025-06-02T11:15:00Z', + seo: { + metaTitle: 'Cross-Border Crowdfunding Challenges | Boundless', + metaDescription: + 'Learn how to navigate international crowdfunding regulations and challenges.', + keywords: [ + 'international crowdfunding', + 'cross-border funding', + 'global compliance', + ], + }, + }, + { + id: 23, + title: 'Fractional Ownership in Crowdfunding', + excerpt: + 'Explore how fractional ownership models are making high-value investments accessible to smaller backers.', + content: `# Fractional Ownership in Crowdfunding + +Fractional ownership is democratizing access to high-value investments through crowdfunding platforms.`, + image: '/funding.png', + date: '30 May, 2025', + slug: 'fractional-ownership-crowdfunding', + category: 'Category', + author: { + name: 'Mark Johnson', + avatar: '/team/avatar23.jpg', + bio: 'Investment strategist and fractional ownership expert with experience in real estate and alternative investments.', + }, + tags: ['Fractional Ownership', 'Accessibility', 'Investment'], + readTime: 9, + publishedAt: '2025-05-30T16:45:00Z', + seo: { + metaTitle: 'Fractional Ownership in Crowdfunding | Boundless', + metaDescription: + 'Discover how fractional ownership makes high-value investments accessible.', + keywords: [ + 'fractional ownership', + 'investment accessibility', + 'crowdfunding investment', + ], + }, + }, + { + id: 24, + title: 'Community-Driven Due Diligence', + excerpt: + 'Learn how community members can collaborate to perform thorough due diligence on crowdfunding projects.', + content: `# Community-Driven Due Diligence + +Community collaboration is revolutionizing how due diligence is performed on crowdfunding projects.`, + image: '/funding.png', + date: '28 May, 2025', + slug: 'community-driven-due-diligence', + category: 'Category', + author: { + name: 'Jennifer Martinez', + avatar: '/team/avatar24.jpg', + bio: 'Due diligence specialist and community research coordinator with expertise in project evaluation.', + }, + tags: ['Due Diligence', 'Community', 'Research'], + readTime: 10, + publishedAt: '2025-05-28T13:20:00Z', + seo: { + metaTitle: 'Community-Driven Due Diligence | Boundless', + metaDescription: + 'Learn how communities collaborate to perform thorough project due diligence.', + keywords: [ + 'community due diligence', + 'project research', + 'collaborative evaluation', + ], + }, + }, ]; export async function getAllBlogPosts(): Promise { diff --git a/package-lock.json b/package-lock.json index eb1ae2643..7e863fd88 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1014,6 +1014,28 @@ "license": "Apache-2.0", "peer": true }, + "node_modules/@near-js/providers/node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, "node_modules/@near-js/signers": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/@near-js/signers/-/signers-0.2.2.tgz", @@ -1192,6 +1214,111 @@ "node": ">= 10" } }, + "node_modules/@next/swc-darwin-x64": { + "version": "15.5.3", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.5.3.tgz", + "integrity": "sha512-w83w4SkOOhekJOcA5HBvHyGzgV1W/XvOfpkrxIse4uPWhYTTRwtGEM4v/jiXwNSJvfRvah0H8/uTLBKRXlef8g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "15.5.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.5.3.tgz", + "integrity": "sha512-+m7pfIs0/yvgVu26ieaKrifV8C8yiLe7jVp9SpcIzg7XmyyNE7toC1fy5IOQozmr6kWl/JONC51osih2RyoXRw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "15.5.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.5.3.tgz", + "integrity": "sha512-u3PEIzuguSenoZviZJahNLgCexGFhso5mxWCrrIMdvpZn6lkME5vc/ADZG8UUk5K1uWRy4hqSFECrON6UKQBbQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "15.5.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.5.3.tgz", + "integrity": "sha512-lDtOOScYDZxI2BENN9m0pfVPJDSuUkAD1YXSvlJF0DKwZt0WlA7T7o3wrcEr4Q+iHYGzEaVuZcsIbCps4K27sA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "15.5.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.5.3.tgz", + "integrity": "sha512-9vWVUnsx9PrY2NwdVRJ4dUURAQ8Su0sLRPqcCCxtX5zIQUBES12eRVHq6b70bbfaVaxIDGJN2afHui0eDm+cLg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "15.5.3", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.5.3.tgz", + "integrity": "sha512-1CU20FZzY9LFQigRi6jM45oJMU3KziA5/sSG+dXeVaTm661snQP6xu3ykGxxwU5sLG3sh14teO/IOEPVsQMRfA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "15.5.3", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.5.3.tgz", + "integrity": "sha512-JMoLAq3n3y5tKXPQwCK5c+6tmwkuFDa2XAxz8Wm4+IVthdBZdZGh+lmiLUHg9f9IDwIQpUjp+ysd6OkYTyZRZw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, "node_modules/@ngneat/elf": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/@ngneat/elf/-/elf-2.5.1.tgz", diff --git a/public/funding.png b/public/funding.png new file mode 100644 index 000000000..4d8b63804 Binary files /dev/null and b/public/funding.png differ