feat: remove projects section and availability badge
- Drop projects section, nav link and data (ProjectCard removed in c5ff89f)
- Swap hero "View projects" button for a GitHub link
- Remove "Open to new opportunities" badge
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
c5ff89f4e5
commit
da7999c52b
@@ -6,7 +6,6 @@ import Icon from './Icon';
|
|||||||
const links = [
|
const links = [
|
||||||
{ href: '/#about', label: 'About' },
|
{ href: '/#about', label: 'About' },
|
||||||
{ href: '/#stack', label: 'Stack' },
|
{ href: '/#stack', label: 'Stack' },
|
||||||
{ href: '/#projects', label: 'Projects' },
|
|
||||||
];
|
];
|
||||||
|
|
||||||
export default function Header() {
|
export default function Header() {
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ export const profile = {
|
|||||||
role: 'Software Engineer',
|
role: 'Software Engineer',
|
||||||
location: 'Amsterdam, NL',
|
location: 'Amsterdam, NL',
|
||||||
email: 'me@jesseinit.dev',
|
email: 'me@jesseinit.dev',
|
||||||
available: true,
|
|
||||||
tagline: 'I build backend systems that scale, and the products on top of them.',
|
tagline: 'I build backend systems that scale, and the products on top of them.',
|
||||||
intro:
|
intro:
|
||||||
'I architect and scale backend systems that handle millions of requests. From payment processing to logistics orchestration, I turn complex technical challenges into reliable production infrastructure.',
|
'I architect and scale backend systems that handle millions of requests. From payment processing to logistics orchestration, I turn complex technical challenges into reliable production infrastructure.',
|
||||||
@@ -54,33 +53,6 @@ export const stack = [
|
|||||||
{ group: 'Infrastructure', items: ['Docker', 'Kubernetes', 'CI/CD'] },
|
{ group: 'Infrastructure', items: ['Docker', 'Kubernetes', 'CI/CD'] },
|
||||||
];
|
];
|
||||||
|
|
||||||
export const projects = [
|
|
||||||
{
|
|
||||||
title: 'LibreOffice Conversion API',
|
|
||||||
description: 'A stateless REST API that exposes document conversion through the LibreOffice CLI.',
|
|
||||||
tags: ['Python', 'Flask', 'Docker'],
|
|
||||||
repo: 'https://github.com/jesseinit/flask_libreoffice_api',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Store Manager',
|
|
||||||
description: 'A web app that helps store owners manage sales and product inventory records.',
|
|
||||||
tags: ['React', 'Node.js', 'PostgreSQL'],
|
|
||||||
repo: 'https://github.com/jesseinit/store-manager-react',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Feather Insure',
|
|
||||||
description: 'A small insurance recommendation API.',
|
|
||||||
tags: ['Python', 'API'],
|
|
||||||
repo: 'https://github.com/jesseinit/feather-insure',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'RSS Reader API',
|
|
||||||
description: 'A REST API that lets users read and follow their favourite RSS feeds.',
|
|
||||||
tags: ['Python', 'REST'],
|
|
||||||
repo: 'https://github.com/jesseinit/rss_reader_api',
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
export const socials = [
|
export const socials = [
|
||||||
{ name: 'GitHub', url: 'https://github.com/jesseinit', icon: 'github' },
|
{ name: 'GitHub', url: 'https://github.com/jesseinit', icon: 'github' },
|
||||||
{ name: 'LinkedIn', url: 'https://linkedin.com/in/jesse-egbosionu/', icon: 'linkedin' },
|
{ name: 'LinkedIn', url: 'https://linkedin.com/in/jesse-egbosionu/', icon: 'linkedin' },
|
||||||
|
|||||||
+5
-32
@@ -2,10 +2,9 @@ import Layout from '../components/Layout';
|
|||||||
import SocialLinks from '../components/SocialLinks';
|
import SocialLinks from '../components/SocialLinks';
|
||||||
import AnimatedName from '../components/AnimatedName';
|
import AnimatedName from '../components/AnimatedName';
|
||||||
import SectionHeading from '../components/SectionHeading';
|
import SectionHeading from '../components/SectionHeading';
|
||||||
import ProjectCard from '../components/ProjectCard';
|
|
||||||
import Reveal from '../components/Reveal';
|
import Reveal from '../components/Reveal';
|
||||||
import Icon from '../components/Icon';
|
import Icon from '../components/Icon';
|
||||||
import { profile, stats, focusAreas, stack, projects } from '../data/profile';
|
import { profile, stats, focusAreas, stack } from '../data/profile';
|
||||||
|
|
||||||
export default function Home() {
|
export default function Home() {
|
||||||
return (
|
return (
|
||||||
@@ -15,13 +14,6 @@ export default function Home() {
|
|||||||
<div className="hero-backdrop" aria-hidden="true" />
|
<div className="hero-backdrop" aria-hidden="true" />
|
||||||
<div className="shell hero-grid">
|
<div className="shell hero-grid">
|
||||||
<div className="hero-content">
|
<div className="hero-content">
|
||||||
{profile.available && (
|
|
||||||
<p className="status-pill">
|
|
||||||
<span className="live-dot" />
|
|
||||||
Open to new opportunities
|
|
||||||
</p>
|
|
||||||
)}
|
|
||||||
|
|
||||||
<h1 className="hero-title">
|
<h1 className="hero-title">
|
||||||
Hey, I’m {profile.firstName}.
|
Hey, I’m {profile.firstName}.
|
||||||
<span className="hero-title-muted">{profile.tagline}</span>
|
<span className="hero-title-muted">{profile.tagline}</span>
|
||||||
@@ -34,8 +26,9 @@ export default function Home() {
|
|||||||
Let’s work together
|
Let’s work together
|
||||||
<Icon name="arrowRight" size={16} />
|
<Icon name="arrowRight" size={16} />
|
||||||
</a>
|
</a>
|
||||||
<a href="#projects" className="button button-ghost">
|
<a href="https://github.com/jesseinit" target="_blank" rel="noopener noreferrer" className="button button-ghost">
|
||||||
View projects
|
<Icon name="github" size={16} />
|
||||||
|
View GitHub
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -134,32 +127,12 @@ export default function Home() {
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
{/* PROJECTS */}
|
|
||||||
<section id="projects" className="section">
|
|
||||||
<div className="shell">
|
|
||||||
<SectionHeading index="03" eyebrow="Projects" title="Things I’ve built.">
|
|
||||||
A mix of production tools and side projects. More on{' '}
|
|
||||||
<a href="https://github.com/jesseinit" target="_blank" rel="noopener noreferrer" className="text-link">
|
|
||||||
GitHub
|
|
||||||
</a>
|
|
||||||
.
|
|
||||||
</SectionHeading>
|
|
||||||
<div className="project-grid">
|
|
||||||
{projects.map((project, i) => (
|
|
||||||
<Reveal key={project.title} delay={(i % 3) * 80} className={project.featured ? 'span-2' : ''}>
|
|
||||||
<ProjectCard project={project} />
|
|
||||||
</Reveal>
|
|
||||||
))}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
{/* CONTACT */}
|
{/* CONTACT */}
|
||||||
<section id="contact" className="section">
|
<section id="contact" className="section">
|
||||||
<div className="shell">
|
<div className="shell">
|
||||||
<Reveal className="contact-card">
|
<Reveal className="contact-card">
|
||||||
<p className="eyebrow">
|
<p className="eyebrow">
|
||||||
<span className="eyebrow-index">04</span>
|
<span className="eyebrow-index">03</span>
|
||||||
Contact
|
Contact
|
||||||
</p>
|
</p>
|
||||||
<h2 className="contact-title">Have a system that needs to scale?</h2>
|
<h2 className="contact-title">Have a system that needs to scale?</h2>
|
||||||
|
|||||||
+1
-137
@@ -449,19 +449,6 @@ button {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.status-pill {
|
|
||||||
display: inline-flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 10px;
|
|
||||||
padding: 6px 14px 6px 12px;
|
|
||||||
border-radius: var(--radius-full);
|
|
||||||
border: 1px solid var(--border);
|
|
||||||
background: var(--bg-elevated);
|
|
||||||
font-size: 0.8125rem;
|
|
||||||
color: var(--text-muted);
|
|
||||||
box-shadow: var(--shadow-card);
|
|
||||||
}
|
|
||||||
|
|
||||||
.hero-title {
|
.hero-title {
|
||||||
font-size: clamp(2.5rem, 6vw, 4.25rem);
|
font-size: clamp(2.5rem, 6vw, 4.25rem);
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
@@ -845,120 +832,6 @@ button {
|
|||||||
margin-bottom: 16px;
|
margin-bottom: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
// PROJECTS
|
|
||||||
.project-grid {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
||||||
gap: 16px;
|
|
||||||
|
|
||||||
> * {
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.span-2 {
|
|
||||||
grid-column: span 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.project-card {
|
|
||||||
@extend .card-base;
|
|
||||||
position: relative;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
width: 100%;
|
|
||||||
padding: 28px;
|
|
||||||
transition: border-color 0.25s ease, transform 0.35s var(--ease), box-shadow 0.35s var(--ease);
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
transform: translateY(-3px);
|
|
||||||
border-color: var(--border-strong);
|
|
||||||
box-shadow: var(--shadow-lift);
|
|
||||||
|
|
||||||
.project-arrow {
|
|
||||||
opacity: 1;
|
|
||||||
transform: translate(0, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.is-featured {
|
|
||||||
background:
|
|
||||||
radial-gradient(120% 120% at 100% 0%, var(--accent-soft), transparent 55%),
|
|
||||||
var(--bg-elevated);
|
|
||||||
|
|
||||||
.project-title {
|
|
||||||
font-size: 1.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.project-description {
|
|
||||||
font-size: 1rem;
|
|
||||||
max-width: 48ch;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.project-top {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: space-between;
|
|
||||||
margin-bottom: 28px;
|
|
||||||
min-height: 28px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.project-glyph {
|
|
||||||
color: var(--text-subtle);
|
|
||||||
}
|
|
||||||
|
|
||||||
.project-repo {
|
|
||||||
position: relative;
|
|
||||||
z-index: 1;
|
|
||||||
display: inline-flex;
|
|
||||||
padding: 6px;
|
|
||||||
border-radius: 8px;
|
|
||||||
color: var(--text-muted);
|
|
||||||
transition: color 0.2s ease, background-color 0.2s ease;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
color: var(--text);
|
|
||||||
background: var(--surface);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.project-title {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 6px;
|
|
||||||
font-size: 1.125rem;
|
|
||||||
font-weight: 600;
|
|
||||||
letter-spacing: -0.02em;
|
|
||||||
margin-bottom: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Stretch the title link over the whole card.
|
|
||||||
.project-link::after {
|
|
||||||
content: '';
|
|
||||||
position: absolute;
|
|
||||||
inset: 0;
|
|
||||||
border-radius: inherit;
|
|
||||||
}
|
|
||||||
|
|
||||||
.project-arrow {
|
|
||||||
color: var(--text-muted);
|
|
||||||
opacity: 0;
|
|
||||||
transform: translate(-4px, 4px);
|
|
||||||
transition: opacity 0.25s ease, transform 0.35s var(--ease);
|
|
||||||
}
|
|
||||||
|
|
||||||
.project-description {
|
|
||||||
font-size: 0.9375rem;
|
|
||||||
color: var(--text-muted);
|
|
||||||
line-height: 1.6;
|
|
||||||
margin-bottom: 24px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.project-card .tag-list {
|
|
||||||
margin-top: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
// CONTACT
|
// CONTACT
|
||||||
.contact-card {
|
.contact-card {
|
||||||
@extend .card-base;
|
@extend .card-base;
|
||||||
@@ -1308,10 +1181,6 @@ button {
|
|||||||
.stack-grid {
|
.stack-grid {
|
||||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||||
}
|
}
|
||||||
|
|
||||||
.project-grid {
|
|
||||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 760px) {
|
@media (max-width: 760px) {
|
||||||
@@ -1379,15 +1248,10 @@ button {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.focus-grid,
|
.focus-grid,
|
||||||
.stack-grid,
|
.stack-grid {
|
||||||
.project-grid {
|
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
}
|
}
|
||||||
|
|
||||||
.project-grid .span-2 {
|
|
||||||
grid-column: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.contact-card {
|
.contact-card {
|
||||||
padding: 36px 24px;
|
padding: 36px 24px;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user