diff --git a/frontend/src/components/AsideMenuLayer.tsx b/frontend/src/components/AsideMenuLayer.tsx
index 34173ef..eb77cc2 100644
--- a/frontend/src/components/AsideMenuLayer.tsx
+++ b/frontend/src/components/AsideMenuLayer.tsx
@@ -3,10 +3,8 @@ import { mdiLogout, mdiClose } from '@mdi/js'
import BaseIcon from './BaseIcon'
import AsideMenuList from './AsideMenuList'
import { MenuAsideItem } from '../interfaces'
-import { useAppSelector } from '../stores/hooks'
+import { useAppSelector, useAppDispatch } from '../stores/hooks'
import Link from 'next/link';
-
-import { useAppDispatch } from '../stores/hooks';
import { createAsyncThunk } from '@reduxjs/toolkit';
import axios from 'axios';
@@ -91,4 +89,4 @@ export default function AsideMenuLayer({ menu, className = '', ...props }: Props
)
-}
+}
\ No newline at end of file
diff --git a/frontend/src/components/NavBarItem.tsx b/frontend/src/components/NavBarItem.tsx
index eb155e3..1986306 100644
--- a/frontend/src/components/NavBarItem.tsx
+++ b/frontend/src/components/NavBarItem.tsx
@@ -1,6 +1,5 @@
-import React, {useEffect, useRef} from 'react'
+import React, {useEffect, useRef, useState} from 'react'
import Link from 'next/link'
-import { useState } from 'react'
import { mdiChevronUp, mdiChevronDown } from '@mdi/js'
import BaseDivider from './BaseDivider'
import BaseIcon from './BaseIcon'
@@ -129,4 +128,4 @@ export default function NavBarItem({ item }: Props) {
}
return
{NavBarItemComponentContents}
-}
+}
\ No newline at end of file
diff --git a/frontend/src/config.ts b/frontend/src/config.ts
index a9783c8..3a08d5a 100644
--- a/frontend/src/config.ts
+++ b/frontend/src/config.ts
@@ -8,8 +8,8 @@ export const localStorageStyleKey = 'style'
export const containerMaxW = 'xl:max-w-full xl:mx-auto 2xl:mx-20'
-export const appTitle = 'created by Flatlogic generator!'
+export const appTitle = 'Social Growth Exchange'
export const getPageTitle = (currentPageTitle: string) => `${currentPageTitle} — ${appTitle}`
-export const tinyKey = process.env.NEXT_PUBLIC_TINY_KEY || ''
+export const tinyKey = process.env.NEXT_PUBLIC_TINY_KEY || ''
\ No newline at end of file
diff --git a/frontend/src/layouts/Authenticated.tsx b/frontend/src/layouts/Authenticated.tsx
index 1b9907d..26c3572 100644
--- a/frontend/src/layouts/Authenticated.tsx
+++ b/frontend/src/layouts/Authenticated.tsx
@@ -1,5 +1,4 @@
-import React, { ReactNode, useEffect } from 'react'
-import { useState } from 'react'
+import React, { ReactNode, useEffect, useState } from 'react'
import jwt from 'jsonwebtoken';
import { mdiForwardburger, mdiBackburger, mdiMenu } from '@mdi/js'
import menuAside from '../menuAside'
@@ -126,4 +125,4 @@ export default function LayoutAuthenticated({
)
-}
+}
\ No newline at end of file
diff --git a/frontend/src/pages/index.tsx b/frontend/src/pages/index.tsx
index 3a72312..b3443ca 100644
--- a/frontend/src/pages/index.tsx
+++ b/frontend/src/pages/index.tsx
@@ -1,166 +1,141 @@
-
-import React, { useEffect, useState } from 'react';
+import React from 'react';
import type { ReactElement } from 'react';
import Head from 'next/head';
import Link from 'next/link';
import BaseButton from '../components/BaseButton';
-import CardBox from '../components/CardBox';
-import SectionFullScreen from '../components/SectionFullScreen';
import LayoutGuest from '../layouts/Guest';
-import BaseDivider from '../components/BaseDivider';
-import BaseButtons from '../components/BaseButtons';
import { getPageTitle } from '../config';
-import { useAppSelector } from '../stores/hooks';
-import CardBoxComponentTitle from "../components/CardBoxComponentTitle";
-import { getPexelsImage, getPexelsVideo } from '../helpers/pexels';
-
+import * as icon from '@mdi/js';
+import BaseIcon from '../components/BaseIcon';
export default function Starter() {
- const [illustrationImage, setIllustrationImage] = useState({
- src: undefined,
- photographer: undefined,
- photographer_url: undefined,
- })
- const [illustrationVideo, setIllustrationVideo] = useState({video_files: []})
- const [contentType, setContentType] = useState('image');
- const [contentPosition, setContentPosition] = useState('left');
- const textColor = useAppSelector((state) => state.style.linkColor);
+ const title = 'Social Growth Exchange'
- const title = 'App Draft'
-
- // Fetch Pexels image/video
- useEffect(() => {
- async function fetchData() {
- const image = await getPexelsImage();
- const video = await getPexelsVideo();
- setIllustrationImage(image);
- setIllustrationVideo(video);
- }
- fetchData();
- }, []);
-
- const imageBlock = (image) => (
-
- );
-
- const videoBlock = (video) => {
- if (video?.video_files?.length > 0) {
- return (
-
-
-
-
)
- }
- };
+ const platforms = [
+ { name: 'Facebook', icon: icon.mdiFacebook, color: 'text-blue-600' },
+ { name: 'Instagram', icon: icon.mdiInstagram, color: 'text-pink-600' },
+ { name: 'Twitter', icon: icon.mdiTwitter, color: 'text-blue-400' },
+ { name: 'YouTube', icon: icon.mdiYoutube, color: 'text-red-600' },
+ { name: 'TikTok', icon: icon.mdiMusicNote, color: 'text-cyan-400' },
+ { name: 'LinkedIn', icon: icon.mdiLinkedin, color: 'text-blue-700' },
+ { name: 'Spotify', icon: icon.mdiSpotify, color: 'text-green-500' },
+ ]
return (
-
+
-
{getPageTitle('Starter Page')}
+
{getPageTitle('Home')}
-
-
- {contentType === 'image' && contentPosition !== 'background'
- ? imageBlock(illustrationImage)
- : null}
- {contentType === 'video' && contentPosition !== 'background'
- ? videoBlock(illustrationVideo)
- : null}
-
-
-
-
-
-
-
-
© 2026 {title}. All rights reserved
-
- Privacy Policy
-
-
+
+ {/* Hero Section */}
+
+
+
+
+
+ Scale Your Social Presence
+ with Fair Value Exchange
+
+
+ The first privacy-first exchange for creators and marketers. Earn credits by helping others grow, and spend them to reach your own audience.
+
+
+
+
+
+
+
+
+ {/* Platforms Section */}
+
+
+ {/* Features Section */}
+
+
+
+
+
+
+
+
Privacy First
+
+ We never ask for your passwords. Our exchange relies on verified public actions, keeping your accounts safe and secure.
+
+
+
+
+
+
+
Real-time Growth
+
+ Watch your metrics climb in real-time as users across the globe discover and engage with your content.
+
+
+
+
+
+
+
Fair Value
+
+ Our tiered credit system ensures that effort equals reward. Top contributors get boosted visibility and premium perks.
+
+
+
+
+
+
+ {/* Footer */}
+
);
}
Starter.getLayout = function getLayout(page: ReactElement) {
return
{page};
-};
-
+};
\ No newline at end of file
diff --git a/frontend/src/pages/search.tsx b/frontend/src/pages/search.tsx
index 00f5168..bb2a612 100644
--- a/frontend/src/pages/search.tsx
+++ b/frontend/src/pages/search.tsx
@@ -1,10 +1,7 @@
import React, { ReactElement, useEffect, useState } from 'react';
import Head from 'next/head';
import 'react-datepicker/dist/react-datepicker.css';
-import { useAppDispatch } from '../stores/hooks';
-
-import { useAppSelector } from '../stores/hooks';
-
+import { useAppDispatch, useAppSelector } from '../stores/hooks';
import { useRouter } from 'next/router';
import LayoutAuthenticated from '../layouts/Authenticated';
import SectionTitleLineWithButton from '../components/SectionTitleLineWithButton';
@@ -93,4 +90,4 @@ SearchView.getLayout = function getLayout(page: ReactElement) {
);
};
-export default SearchView;
+export default SearchView;
\ No newline at end of file