Merge pull request 'feat: Header logo, gold-to-rusty-red title gradient, and /static asset folder' (#17) from feat/header-logo-and-title-gradient into master
Reviewed-on: #17
This commit was merged in pull request #17.
This commit is contained in:
@@ -36,6 +36,14 @@
|
|||||||
color: var(--primary-light);
|
color: var(--primary-light);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Custom logo image sizing */
|
||||||
|
.brand-logo {
|
||||||
|
height: 2.5rem;
|
||||||
|
width: auto;
|
||||||
|
object-fit: contain;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
.brand-icon {
|
.brand-icon {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@@ -47,9 +55,10 @@
|
|||||||
box-shadow: 0 4px 12px rgba(59, 130, 246, 0.3);
|
box-shadow: 0 4px 12px rgba(59, 130, 246, 0.3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Title gradient: medium-dark gold → rusty dark red-gold */
|
||||||
.brand-text {
|
.brand-text {
|
||||||
letter-spacing: -0.025em;
|
letter-spacing: -0.025em;
|
||||||
background: linear-gradient(135deg, var(--primary-light) 0%, var(--accent) 100%);
|
background: linear-gradient(135deg, #c9940a 0%, #b5620a 50%, #8b2500 100%);
|
||||||
-webkit-background-clip: text;
|
-webkit-background-clip: text;
|
||||||
-webkit-text-fill-color: transparent;
|
-webkit-text-fill-color: transparent;
|
||||||
background-clip: text;
|
background-clip: text;
|
||||||
@@ -99,6 +108,10 @@
|
|||||||
font-size: 1.25rem;
|
font-size: 1.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.brand-logo {
|
||||||
|
height: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
.brand-icon {
|
.brand-icon {
|
||||||
width: 2rem;
|
width: 2rem;
|
||||||
height: 2rem;
|
height: 2rem;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { BrowserRouter as Router, Routes, Route, Link } from 'react-router-dom'
|
import { BrowserRouter as Router, Routes, Route, Link } from 'react-router-dom'
|
||||||
import { Dog, Home, Users, Activity, Heart, BookOpen } from 'lucide-react'
|
import { Home, Users, Activity, Heart } from 'lucide-react'
|
||||||
import Dashboard from './pages/Dashboard'
|
import Dashboard from './pages/Dashboard'
|
||||||
import DogList from './pages/DogList'
|
import DogList from './pages/DogList'
|
||||||
import DogDetail from './pages/DogDetail'
|
import DogDetail from './pages/DogDetail'
|
||||||
@@ -15,7 +15,11 @@ function App() {
|
|||||||
<nav className="navbar">
|
<nav className="navbar">
|
||||||
<div className="container">
|
<div className="container">
|
||||||
<div className="nav-brand">
|
<div className="nav-brand">
|
||||||
<Dog size={32} />
|
<img
|
||||||
|
src="/static/br-logo.png"
|
||||||
|
alt="BREEDR Logo"
|
||||||
|
className="brand-logo"
|
||||||
|
/>
|
||||||
<span className="brand-text">BREEDR</span>
|
<span className="brand-text">BREEDR</span>
|
||||||
</div>
|
</div>
|
||||||
<div className="nav-links">
|
<div className="nav-links">
|
||||||
|
|||||||
@@ -13,6 +13,10 @@ export default defineConfig({
|
|||||||
'/uploads': {
|
'/uploads': {
|
||||||
target: 'http://localhost:3000',
|
target: 'http://localhost:3000',
|
||||||
changeOrigin: true
|
changeOrigin: true
|
||||||
|
},
|
||||||
|
'/static': {
|
||||||
|
target: 'http://localhost:3000',
|
||||||
|
changeOrigin: true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ const app = express();
|
|||||||
const PORT = process.env.PORT || 3000;
|
const PORT = process.env.PORT || 3000;
|
||||||
const DB_PATH = process.env.DB_PATH || path.join(__dirname, '../data/breedr.db');
|
const DB_PATH = process.env.DB_PATH || path.join(__dirname, '../data/breedr.db');
|
||||||
const UPLOAD_PATH = process.env.UPLOAD_PATH || path.join(__dirname, '../uploads');
|
const UPLOAD_PATH = process.env.UPLOAD_PATH || path.join(__dirname, '../uploads');
|
||||||
|
const STATIC_PATH = process.env.STATIC_PATH || path.join(__dirname, '../static');
|
||||||
|
|
||||||
// Ensure directories exist
|
// Ensure directories exist
|
||||||
const dataDir = path.dirname(DB_PATH);
|
const dataDir = path.dirname(DB_PATH);
|
||||||
@@ -18,6 +19,9 @@ if (!fs.existsSync(dataDir)) {
|
|||||||
if (!fs.existsSync(UPLOAD_PATH)) {
|
if (!fs.existsSync(UPLOAD_PATH)) {
|
||||||
fs.mkdirSync(UPLOAD_PATH, { recursive: true });
|
fs.mkdirSync(UPLOAD_PATH, { recursive: true });
|
||||||
}
|
}
|
||||||
|
if (!fs.existsSync(STATIC_PATH)) {
|
||||||
|
fs.mkdirSync(STATIC_PATH, { recursive: true });
|
||||||
|
}
|
||||||
|
|
||||||
// Initialize database schema (creates tables if they don't exist)
|
// Initialize database schema (creates tables if they don't exist)
|
||||||
console.log('Initializing database...');
|
console.log('Initializing database...');
|
||||||
@@ -32,8 +36,9 @@ app.use(cors());
|
|||||||
app.use(express.json());
|
app.use(express.json());
|
||||||
app.use(express.urlencoded({ extended: true }));
|
app.use(express.urlencoded({ extended: true }));
|
||||||
|
|
||||||
// Static file serving for uploads
|
// Static file serving
|
||||||
app.use('/uploads', express.static(UPLOAD_PATH));
|
app.use('/uploads', express.static(UPLOAD_PATH));
|
||||||
|
app.use('/static', express.static(STATIC_PATH));
|
||||||
|
|
||||||
// API Routes
|
// API Routes
|
||||||
app.use('/api/dogs', require('./routes/dogs'));
|
app.use('/api/dogs', require('./routes/dogs'));
|
||||||
@@ -74,6 +79,7 @@ app.listen(PORT, '0.0.0.0', () => {
|
|||||||
console.log(`Port: ${PORT}`);
|
console.log(`Port: ${PORT}`);
|
||||||
console.log(`Database: ${DB_PATH}`);
|
console.log(`Database: ${DB_PATH}`);
|
||||||
console.log(`Uploads: ${UPLOAD_PATH}`);
|
console.log(`Uploads: ${UPLOAD_PATH}`);
|
||||||
|
console.log(`Static: ${STATIC_PATH}`);
|
||||||
console.log(`Access: http://localhost:${PORT}`);
|
console.log(`Access: http://localhost:${PORT}`);
|
||||||
console.log(`==============================\n`);
|
console.log(`==============================\n`);
|
||||||
});
|
});
|
||||||
|
|||||||
3
static/.gitkeep
Normal file
3
static/.gitkeep
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# Drop branding assets here (e.g. br-logo.png).
|
||||||
|
# This file exists only to track the directory in git.
|
||||||
|
# Files in this folder are served at /static/<filename>.
|
||||||
Reference in New Issue
Block a user