Rewrite from Go + vanilla JS to Python (FastAPI) + React (TypeScript)
- Backend: Python 3.12 with FastAPI, SQLAlchemy, boto3 - Frontend: React 18 with TypeScript, Vite build tooling - Updated Dockerfile for multi-stage Node + Python build - Updated CI pipeline for Python backend - Removed old Go code (cmd/, internal/, go.mod, go.sum) - Updated README with new tech stack documentation
This commit is contained in:
65
frontend/src/components/Layout.css
Normal file
65
frontend/src/components/Layout.css
Normal file
@@ -0,0 +1,65 @@
|
||||
.layout {
|
||||
min-height: 100vh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.header {
|
||||
background-color: var(--primary);
|
||||
color: white;
|
||||
padding: 1rem 0;
|
||||
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
|
||||
}
|
||||
|
||||
.header-content {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.logo {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
color: white;
|
||||
font-size: 1.5rem;
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.logo:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.logo-icon {
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
.nav {
|
||||
display: flex;
|
||||
gap: 1.5rem;
|
||||
}
|
||||
|
||||
.nav a {
|
||||
color: white;
|
||||
opacity: 0.9;
|
||||
}
|
||||
|
||||
.nav a:hover {
|
||||
opacity: 1;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.main {
|
||||
flex: 1;
|
||||
padding: 2rem 0;
|
||||
}
|
||||
|
||||
.footer {
|
||||
background-color: var(--primary-dark);
|
||||
color: white;
|
||||
padding: 1rem 0;
|
||||
text-align: center;
|
||||
opacity: 0.9;
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
37
frontend/src/components/Layout.tsx
Normal file
37
frontend/src/components/Layout.tsx
Normal file
@@ -0,0 +1,37 @@
|
||||
import { ReactNode } from 'react';
|
||||
import { Link } from 'react-router-dom';
|
||||
import './Layout.css';
|
||||
|
||||
interface LayoutProps {
|
||||
children: ReactNode;
|
||||
}
|
||||
|
||||
function Layout({ children }: LayoutProps) {
|
||||
return (
|
||||
<div className="layout">
|
||||
<header className="header">
|
||||
<div className="container header-content">
|
||||
<Link to="/" className="logo">
|
||||
<span className="logo-icon">🌳</span>
|
||||
<span className="logo-text">Orchard</span>
|
||||
</Link>
|
||||
<nav className="nav">
|
||||
<Link to="/">Groves</Link>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
<main className="main">
|
||||
<div className="container">
|
||||
{children}
|
||||
</div>
|
||||
</main>
|
||||
<footer className="footer">
|
||||
<div className="container">
|
||||
<p>Orchard - Content-Addressable Storage System</p>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Layout;
|
||||
Reference in New Issue
Block a user