diff --git a/.env b/.env
index ff9c79c..a53bee2 100644
--- a/.env
+++ b/.env
@@ -1,2 +1,3 @@
VITE_API_URL=http://localhost:3000/api
+VITE_WS_URL=ws://localhost:3000
VITE_MOCK_AUTH=true
\ No newline at end of file
diff --git a/.env.example b/.env.example
index b87d9f0..f21daf3 100644
--- a/.env.example
+++ b/.env.example
@@ -1,5 +1,5 @@
# API base URL for the backend that wraps the abra CLI
VITE_API_URL=http://localhost:3000/api
-# Set to 'true' to bypass authentication for development
+# Set to 'true' to use mock data
VITE_MOCK_AUTH=true
\ No newline at end of file
diff --git a/src/App.tsx b/src/App.tsx
index 30eaaee..6d37791 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -1,37 +1,28 @@
import { BrowserRouter, Navigate, Route, Routes } from 'react-router-dom';
-import { AuthProvider } from './context/AuthContext';
-import { LoginForm } from './routes/Login/LoginForm';
-import { Authenticated } from './components/Authenticated';
-import { Dashboard } from './routes/Authenticated/Dashboard/Dashboard';
-import { Apps } from './routes/Authenticated/Apps/Apps';
-import { AppDetail } from './routes/Authenticated/Apps/App';
-import { Servers } from './routes/Authenticated/Servers/Servers';
-import { Server } from './routes/Authenticated/Servers/Server';
+import { Dashboard } from './routes/Dashboard/Dashboard';
+import { Apps } from './routes/Apps/Apps';
+import { AppDetail } from './routes/Apps/App';
+import { Servers } from './routes/Servers/Servers';
+import { Server } from './routes/Servers/Server';
+import { Recipes } from './routes/Recipes/Recipes';
function App() {
return (
Loading...
-{version}
{stats.total} apps across {stats.totalServers} servers
{stats.total}
-Total Apps
-{stats.needsUpgrade}
-Upgrades Available
-{stats.chaosApps}
-Chaos Mode
-{stats.totalServers}
-Servers
-{apps.length}
{deployedAppsCount} deployed
@@ -99,7 +98,6 @@ export const Dashboard: React.FC = () => {{servers.length}
{serversWithAppsCount} connected
diff --git a/src/routes/Authenticated/Dashboard/_Dashboard.scss b/src/routes/Dashboard/_Dashboard.scss similarity index 69% rename from src/routes/Authenticated/Dashboard/_Dashboard.scss rename to src/routes/Dashboard/_Dashboard.scss index 8032066..dbbc5dc 100644 --- a/src/routes/Authenticated/Dashboard/_Dashboard.scss +++ b/src/routes/Dashboard/_Dashboard.scss @@ -1,6 +1,6 @@ -@use '../../../assets/scss/variables' as *; -@use '../../../assets/scss/mixins' as *; -@use '../../../assets/scss/global' as *; +@use '../../assets/scss/variables' as *; +@use '../../assets/scss/mixins' as *; +@use '../../assets/scss/global' as *; // Extend global page wrapper .dashboard-page { @@ -23,29 +23,21 @@ } .apps-list { - display: flex; - flex-direction: column; - gap: $spacing-md; + @include card-list-vertical; } .app-item { @include card; + @include card-hover-lift(-2px, $shadow-lg); display: flex; justify-content: space-between; align-items: center; - transition: transform $transition-base, box-shadow $transition-base; cursor: pointer; - &:hover { - transform: translateY(-2px); - box-shadow: $shadow-lg; - } - .app-info { flex: 1; h4 { - margin: 0 0 $spacing-xs; font-size: $font-size-lg; color: $text-primary; font-weight: $font-weight-semibold; diff --git a/src/routes/Login/LoginForm.scss b/src/routes/Login/LoginForm.scss deleted file mode 100644 index 90e259b..0000000 --- a/src/routes/Login/LoginForm.scss +++ /dev/null @@ -1,94 +0,0 @@ -@use '../../assets/scss/variables' as *; -@use '../../assets/scss/mixins' as *; - -.login-container { - @include flex-center; - min-height: 100vh; - width: 100%; - // @include gradient-primary; - background-color: $primary-light; - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0; -} - -.login-card { - @include card; - width: 100%; - max-width: 400px; - - h1 { - margin: 0 0 $spacing-sm; - font-size: $font-size-3xl; - color: $text-primary; - text-align: center; - } - - .login-subtitle { - text-align: center; - color: $text-secondary; - margin: 0 0 $spacing-2xl; - font-size: $font-size-sm; - } -} - -.form-group { - margin-bottom: $spacing-lg; - - label { - display: block; - margin-bottom: $spacing-sm; - color: $text-primary; - font-weight: $font-weight-medium; - font-size: $font-size-sm; - } - - input { - width: 100%; - padding: $spacing-md; - border: 2px solid $border-color; - border-radius: $radius-md; - font-size: $font-size-base; - transition: border-color $transition-base; - box-sizing: border-box; - - &:focus { - outline: none; - border-color: $primary; - } - - &:disabled { - background-color: $bg-secondary; - cursor: not-allowed; - } - } -} - -.error-message { - // background-color: rgba($error, 0.1); - // color: darken($error, 10%); - padding: $spacing-md; - border-radius: $radius-md; - margin-bottom: $spacing-md; - font-size: $font-size-sm; - // border-left: 4px solid $error; -} - -.login-button { - @include button-base; - @include gradient-primary; - width: 100%; - color: white; - font-size: $font-size-base; - - &:hover:not(:disabled) { - transform: translateY(-2px); - box-shadow: 0 8px 16px rgba($primary, 0.4); - } - - &:active:not(:disabled) { - transform: translateY(0); - } -} \ No newline at end of file diff --git a/src/routes/Login/LoginForm.tsx b/src/routes/Login/LoginForm.tsx deleted file mode 100644 index d35e525..0000000 --- a/src/routes/Login/LoginForm.tsx +++ /dev/null @@ -1,72 +0,0 @@ -import React, { useState } from 'react'; -import { useNavigate } from 'react-router-dom'; -import { useAuth } from '../../hooks/useAuth'; -import './LoginForm.scss'; - -export const LoginForm: React.FC = () => { - const [username, setUsername] = useState(''); - const [password, setPassword] = useState(''); - const [error, setError] = useState(''); - const [loading, setLoading] = useState(false); - - const { login } = useAuth(); - const navigate = useNavigate(); - - const handleSubmit = async (e: React.FormEvent) => { - e.preventDefault(); - setError(''); - setLoading(true); - - try { - await login({ username, password }); - navigate('/dashboard'); - } catch (err) { - setError(err instanceof Error ? err.message : 'Login failed'); - } finally { - setLoading(false); - } - }; - - return ( -Sign in to manage your applications
- - -{stats.total} recipes
+{stats.total}
+Total Recipes
+Managing {stats.totalServers} servers with {stats.totalApps} applications
{stats.totalServers}
-Total Servers
-{stats.totalApps}
-Total Apps
-{stats.totalUpgrades}
-Apps Need Upgrade
-{stats.totalChaos}
-Chaos Apps
-