diff --git a/generate-sitemap.js b/generate-sitemap.js new file mode 100644 index 0000000..23e43a8 --- /dev/null +++ b/generate-sitemap.js @@ -0,0 +1,39 @@ +import { SitemapStream } from 'sitemap'; +import { createWriteStream } from 'fs'; +import path from 'path'; +import { fileURLToPath } from 'url'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +const pages = [ + { url: '/', changefreq: 'daily', priority: 1.0 }, + { url: '/', changefreq: 'daily', priority: 1.0 }, // LandingPage + { url: '/dashboard', changefreq: 'weekly', priority: 0.9 }, // Dashboard + { url: '/posts', changefreq: 'weekly', priority: 0.8 }, // Publish + { url: '/analytics', changefreq: 'weekly', priority: 0.8 }, // Analytics + { url: '/contributors', changefreq: 'monthly', priority: 0.7 }, // Contributors + { url: '/settings', changefreq: 'monthly', priority: 0.6 }, // Settings + { url: '/signup', changefreq: 'monthly', priority: 0.5 }, // Signup + { url: '/login', changefreq: 'monthly', priority: 0.5 }, // Login + { url: '/newsletter', changefreq: 'monthly', priority: 0.5 } // Newsletter + ]; + + +async function generateSitemap() { + const writeStream = createWriteStream(path.resolve(__dirname, 'public', 'sitemap.xml')); + + const sitemap = new SitemapStream({ hostname: 'https://social-media-management-djkz.vercel.app/' }); + + sitemap.pipe(writeStream).on('finish', () => { + console.log('Sitemap generated successfully'); + }); + + pages.forEach(page => sitemap.write(page)); + + sitemap.end(); +} + +generateSitemap().catch(error => { + console.error('Error generating sitemap:', error); +}); diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..a86b9fd --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Disallow: /private +Allow: / +Sitemap: https://social-media-management-djkz.vercel.app/sitemap.xml \ No newline at end of file diff --git a/public/sitemap.xml b/public/sitemap.xml new file mode 100644 index 0000000..abbb790 --- /dev/null +++ b/public/sitemap.xml @@ -0,0 +1 @@ +https://social-media-management-djkz.vercel.app/daily1.0https://social-media-management-djkz.vercel.app/daily1.0https://social-media-management-djkz.vercel.app/dashboardweekly0.9https://social-media-management-djkz.vercel.app/postsweekly0.8https://social-media-management-djkz.vercel.app/analyticsweekly0.8https://social-media-management-djkz.vercel.app/contributorsmonthly0.7https://social-media-management-djkz.vercel.app/settingsmonthly0.6https://social-media-management-djkz.vercel.app/signupmonthly0.5https://social-media-management-djkz.vercel.app/loginmonthly0.5https://social-media-management-djkz.vercel.app/newslettermonthly0.5 \ No newline at end of file diff --git a/src/pages/LandingPage.jsx b/src/pages/LandingPage.jsx index 6a53e4c..ed34d3a 100644 --- a/src/pages/LandingPage.jsx +++ b/src/pages/LandingPage.jsx @@ -1,8 +1,7 @@ import React from 'react'; import '@fortawesome/fontawesome-free/css/all.min.css'; import Footer from '../components/Footer'; -import { Link } from 'react-router-dom'; - +import BasicNavbar from '../components/BasicNavbar'; const LandingPage = () => { const stats = [ @@ -52,10 +51,7 @@ const LandingPage = () => { const repeatedStats = Array(10).fill(stats).flat(); return ( - -
-
- +
{/* Main Section */}
@@ -65,13 +61,15 @@ const LandingPage = () => {

Socialplus helps you build an audience organically. We’re a values-driven company that provides affordable, intuitive marketing tools for ambitious people and teams.

-
- - - - +
+ +
diff --git a/src/pages/NotFoundPage.jsx b/src/pages/NotFoundPage.jsx new file mode 100644 index 0000000..82de167 --- /dev/null +++ b/src/pages/NotFoundPage.jsx @@ -0,0 +1,120 @@ +import React from 'react'; + +const NotFoundPage = () => { + const containerStyle = { + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + justifyContent: 'center', + height: 'auto', + minHeight: '500px', + flexGrow: 1, + backgroundColor: 'white', + textAlign: 'center', + color: '#333', + fontFamily: "'Roboto', sans-serif", + overflow: 'hidden', + }; + + const backgroundTextStyle = { + position: 'absolute', + fontSize: '12rem', + color: '#f0f0f0', + fontWeight: 'bold', + top: '15rem', + left: '50%', + transform: 'translateX(-50%)', + zIndex: 1, + }; + + const botContainerStyle = { + position: 'relative', + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + justifyContent: 'center', + zIndex: 2, + }; + + const botImageStyle = { + width: '150px', + filter: 'drop-shadow(2px 4px 6px rgba(0, 0, 0, 0.2))', + }; + + const imageFlex = { + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + justifyContent: 'center', + }; + + const tearStyle = { + position: 'absolute', + top: '27%', + left: '46%', + width: '8px', + height: '15px', + backgroundColor: '#00aaff', + borderRadius: '50%', + animation: 'tear-fall 2s linear infinite', + }; + + const spiritImageStyle = { + transform: 'scale(3.5)', + width: '40px', + height: '40px', + animation: 'fade-in 1.5s ease-in-out forwards', + }; + + const textContainerStyle = { + display: 'flex', + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'center', + color: '#666', + fontSize: '1.5rem', + fontWeight: '600', + marginTop: '10px', + }; + + return ( +
+
404
+
+
+ Sad bot +
+
+
+ Spirit + Oops! Page Not Found!! +
+
+ + {/* Inline Keyframes for Animation */} + +
+ ); +}; + +export default NotFoundPage;