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:
Mondo Diaz
2025-12-05 17:16:43 -06:00
parent 343f7bfc59
commit 2261bfc830
45 changed files with 2104 additions and 3359 deletions

View 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;
}

View 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;