diff --git a/src/frontend/App.jsx b/src/frontend/App.jsx
index 91e2f0f..cec6cf5 100644
--- a/src/frontend/App.jsx
+++ b/src/frontend/App.jsx
@@ -1,33 +1,105 @@
import React from 'react';
+import { BrowserRouter, Routes, Route, Navigate } from 'react-router-dom';
import { AuthProvider, useAuth } from './contexts/AuthContext';
import { MessagingProvider } from './contexts/MessagingContext';
import MainLayout from './mockup/MainLayout';
+import LandingPage from './mockup/pages/LandingPage';
+import LoginPage from './mockup/pages/LoginPage';
+import RegisterPage from './mockup/pages/RegisterPage';
+import AboutPage from './mockup/pages/AboutPage';
+import FeaturesPage from './mockup/pages/FeaturesPage';
import './index.css';
+import './mockup/mockup.css';
/**
- * Main application component
- * AeThex Connect - Discord-style communication platform
+ * Protected route - requires authentication
*/
-function AppContent() {
- const { user, loading } = useAuth();
-
+function ProtectedRoute({ children }) {
+ const { isAuthenticated, loading } = useAuth();
+
if (loading) {
return (
-
-
+
);
}
+
+ return isAuthenticated ? children :
;
+}
- return
;
+/**
+ * Public route - redirects to app if logged in
+ */
+function PublicRoute({ children }) {
+ const { isAuthenticated, loading } = useAuth();
+
+ if (loading) {
+ return (
+
+ );
+ }
+
+ return !isAuthenticated ? children :
;
+}
+
+/**
+ * Main app with routing
+ */
+function AppRoutes() {
+ const { login, register, logout } = useAuth();
+
+ return (
+
+ {/* Marketing pages - public */}
+ } />
+ } />
+ } />
+
+ {/* Auth pages */}
+
+
+
+ } />
+
+
+
+ } />
+
+ {/* Connect App - protected */}
+
+
+
+
+
+ } />
+
+
+
+
+
+ } />
+
+ {/* Catch all - redirect to home */}
+ } />
+
+ );
}
export default function App() {
return (
-
-
-
-
-
+
+
+
+
+
);
}
diff --git a/src/frontend/contexts/AuthContext.jsx b/src/frontend/contexts/AuthContext.jsx
index e4ab73c..dfafc2f 100644
--- a/src/frontend/contexts/AuthContext.jsx
+++ b/src/frontend/contexts/AuthContext.jsx
@@ -49,6 +49,21 @@ export function AuthProvider({ children }) {
return { success: true };
};
+ const register = async (email, password, metadata = {}) => {
+ const { data, error } = await supabase.auth.signUp({
+ email,
+ password,
+ options: {
+ data: metadata
+ }
+ });
+ if (error) {
+ return { success: false, error: error.message };
+ }
+ setUser(data.user);
+ return { success: true };
+ };
+
const logout = async () => {
await supabase.auth.signOut();
setUser(null);
@@ -62,6 +77,7 @@ export function AuthProvider({ children }) {
user,
loading,
login,
+ register,
logout,
updateUser,
isAuthenticated: !!user