Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions app/blogs/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@ const BlogsPage = async () => {

return (
<>
<Heading content="Blogs" emoji="✍️" />
<Summary
content="Along with learning, I am energized by sharing my knowledge and
experiences with others. I hope you take the time to explore my blog
articles."
/>
<Heading title="Blogs" emoji="✍️" />
<Summary>
Writing helps me clarify what I&apos;m learning and share the ideas,
patterns, and lessons I pick up along the way. Each piece is a snapshot
of how I was thinking about the problem at the time.
</Summary>
<hr className="border-tertiary mt-10" />
<section className="mt-10 flex flex-col gap-7">
{blogs.map((blog) => (
Expand Down
12 changes: 12 additions & 0 deletions app/globals.css
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,22 @@
--bg-astro: #c2410c26;
--cloudinary: #a5b4fc;
--bg-cloudinary: #4338ca26;
--cli: #c4b5fd;
--bg-cli: #6d28d926;
--css: #67e8f9;
--bg-css: #0e749026;
--ejs: #bef264;
--bg-ejs: #4d7c0f26;
--express: #cbd5e1;
--bg-express: #33415526;
--go: #67e8f9;
--bg-go: #0e749026;
--interpreter: #f9a8d4;
--bg-interpreter: #be185d26;
--javascript: #fde047;
--bg-javascript: #a1620726;
--library: #fca5a5;
--bg-library: #b91c1c26;
--mdx: #fcd34d;
--bg-mdx: #fcd34d26;
--mongodb: #86efac;
Expand All @@ -43,6 +51,8 @@
--bg-netlify: #0f766e26;
--nextjs: #d4d4d4;
--bg-nextjs: #a3a3a326;
--package: #cbd5e1;
--bg-package: #33415526;
--passport: #6ee7b7;
--bg-passport: #6ee7b726;
--node: #86efac;
Expand All @@ -53,6 +63,8 @@
--bg-railway: #33415526;
--react: #5eead4;
--bg-react: #0f766e26;
--rust: #fdba74;
--bg-rust: #c2410c26;
--tailwind: #67e8f9;
--bg-tailwind: #0e749026;
--typescript: #93c5fd;
Expand Down
9 changes: 5 additions & 4 deletions app/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
import type { Metadata } from "next";
import Header from "@/components/Header";
import "./globals.css";
import { scope } from "@/lib/fonts";
import Footer from "@/components/Footer";

export const metadata = {
title: "Hire Me!",
description: "Brian Schnee Portfolio",
export const metadata: Metadata = {
title: "schnee.dev",
description: "Brian Schnee's website",
};

export default function RootLayout({
Expand All @@ -17,7 +18,7 @@ export default function RootLayout({
<html lang="en">
<body className={scope.className}>
<div className="flex flex-col items-center">
<div className="container flex max-w-2xl flex-col px-8 pb-8 text-sm text-secondary">
<div className="text-secondary container flex max-w-2xl flex-col px-8 pb-8 text-sm">
<Header />
{children}
<Footer />
Expand Down
13 changes: 8 additions & 5 deletions app/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,16 @@ export default function Home() {
return (
<>
<main>
<Heading content="Brian Schnee" />
<h2 className="mt-4">Full-Stack Software Engineer</h2>
<Heading title="Brian Schnee" />
<h2 className="mt-4">
Software Developer at <a href="https://1password.com">1Password</a>
</h2>
<Experience startDate={"2018-01-16"} />
<Summary
content="Transforming ideas into code, one adventure at a time. Constantly pushing
the bounds of my capabilities and finding the best ways to share my
experience with others."
paragraphs={[
"I've never been very good at casual interests. When something captures my attention, I like to see how far I can take it.",
"This site is a collection of projects, writing, and experiences that have shaped my journey so far.",
]}
/>
</main>
<Preview />
Expand Down
92 changes: 52 additions & 40 deletions app/projects/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,22 @@ const Project = ({
}: ProjectProps) => {
return (
<li id={title} className="flex flex-col rounded-md">
<Image
className="w-full rounded-t-md"
src={`/assets/${src}`}
width={610}
height={610}
alt={`preview of pages from ${site} website`}
/>
<section className="flex flex-col gap-3 rounded-b-md bg-[#f2f2f308] p-8">
{src && (
<Image
className="w-full rounded-t-md"
src={`/assets/${src}`}
width={610}
height={610}
alt={`preview of pages from ${title}`}
/>
)}
<section
className={`flex flex-col gap-3 bg-[#f2f2f308] p-8 ${
src ? "rounded-b-md" : "rounded-md"
}`}
>
<div className="flex items-center justify-between">
<h2 className="text-xl text-primary">{title}</h2>
<h2 className="text-primary text-xl">{title}</h2>
<div className="flex items-center gap-2">
<a href={repo}>
<Icon
Expand All @@ -36,24 +42,26 @@ const Project = ({
hover="hover:stroke-secondary"
/>
</a>
<a href={site}>
<Icon
name="external-link"
width="18"
height="18"
stroke="stroke-primary"
strokeWidth={1.25}
hover="hover:stroke-secondary"
/>
</a>
{site && (
<a href={site}>
<Icon
name="external-link"
width="18"
height="18"
stroke="stroke-primary"
strokeWidth={1.25}
hover="hover:stroke-secondary"
/>
</a>
)}
</div>
</div>
<ul className="flex flex-wrap gap-2 text-xs text-tertiary">
<ul className="text-tertiary flex flex-wrap gap-2 text-xs">
{technologies.map((tech, i) => {
return (
<li key={i}>
<div
className="flex items-center gap-1 rounded-md px-2 py-1 text-secondary"
className="text-secondary flex items-center gap-1 rounded-md px-2 py-1"
style={{ background: `var(--bg-${tech})` }}
>
<Icon name={tech} width={15} height={15} />
Expand All @@ -64,7 +72,7 @@ const Project = ({
})}
</ul>
<hr className="border-tertiary opacity-40" />
<p className="leading-2 text-secondary">{description}</p>
<p className="text-secondary leading-relaxed">{description}</p>
</section>
</li>
);
Expand All @@ -73,25 +81,29 @@ const Project = ({
export default function ProjectPage() {
return (
<>
<Heading content="Projects" emoji="🔨" />
<Summary content="As a Full Stack Software Engineer, I'm confident with an array of tools and technologies. I get a kick out of transforming ideas into code. Check out my work and play around with the projects!" />
<hr className="mt-10 border-tertiary" />
<Heading title="Projects" emoji="🔨" />
<Summary>
I enjoy building things and bringing ideas to life through software.
Here you&apos;ll find a collection of projects I&apos;ve worked on,
technologies I&apos;ve explored, and lessons I&apos;ve picked up along
the way.
</Summary>
<hr className="border-tertiary mt-10" />
<ul className="mt-10 flex flex-col gap-12">
{projects
// .filter((project) => project.src !== "backend only")
.map((props: ProjectProps) => {
return (
<Project
key={props.title}
src={props.src}
site={props.site}
repo={props.repo}
title={props.title}
technologies={props.technologies}
description={props.description}
/>
);
})}
{projects.map((props: ProjectProps) => {
return (
<Project
key={props.title}
src={props.src}
site={props.site}
repo={props.repo}
title={props.title}
createdAt={props.createdAt}
technologies={props.technologies}
description={props.description}
/>
);
})}
</ul>
<JumpToTop slug={"/projects"} />
</>
Expand Down
5 changes: 1 addition & 4 deletions components/Blog.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,7 @@ const Blog = ({ title, date, slug }: BlogProps) => {
className="outside-padding group flex h-full flex-col justify-between gap-3"
href={slug}
>
<h3
className="group-hover:underline group-hover:decoration-accent
group-hover:underline-offset-4"
>
<h3 className="group-hover:decoration-accent group-hover:underline group-hover:underline-offset-4">
{title}
</h3>
<time className="text-tertiary group-hover:text-secondary">{date}</time>
Expand Down
2 changes: 1 addition & 1 deletion components/Experience.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ const Experience = ({ startDate }: ExperienceProps) => {

return (
<h3 className="text-tertiary">
{`Programming for ${time.years} years, ${time.months} months, ${time.days} days, ${time.hours} hours, ${time.minutes} minutes,
{`Programming for ${time.years} years, ${time.months} months, ${time.days} days, ${time.hours} hours, ${time.minutes} minutes,
${time.seconds} seconds`}
</h3>
);
Expand Down
12 changes: 6 additions & 6 deletions components/Footer.tsx
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
const Footer = () => {
return (
<footer className="mb-10 mt-20 flex h-1 w-full max-w-xl text-xs">
<footer className="mt-20 mb-10 flex h-1 w-full max-w-xl text-xs">
<h5>
<span className="border-b-[1px] border-dotted">CC BY-NC 4.0</span> 2023
&copy; Brian Schnee.
<span className="border-b border-dotted">CC BY-NC 4.0</span> 2023 &copy;
Brian Schnee.
</h5>
<div className="pointer-events-none fixed bottom-0 right-0 z-10 w-full">
<div className="h-10 w-full bg-gradient-to-t from-background-opaque"></div>
<div className="pb12 h-10 w-full bg-background-opaque pt-1"></div>
<div className="pointer-events-none fixed right-0 bottom-0 z-10 w-full">
<div className="from-background-opaque h-10 w-full bg-linear-to-t"></div>
<div className="pb12 bg-background-opaque h-10 w-full pt-1"></div>
</div>
</footer>
);
Expand Down
2 changes: 1 addition & 1 deletion components/Header.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ const Header = () => {
</svg>
</Link>
</li>
<li className="z-10 h-4 w-[1px] bg-tertiary"></li>
<li className="z-10 h-4 w-px bg-tertiary"></li>
<li className="outside-padding group hover:cursor-pointer">
<a
href="https://www.github.com/schneedotdev"
Expand Down
4 changes: 2 additions & 2 deletions components/Projects.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@ const Project = ({ link, title, tech, year }: ProjectProps) => {
>
<div className="flex items-center gap-2">
<h3>{title}</h3>
<div className="mx-1 flex-1 border-t-2 border-dotted border-tertiary group-hover:border-accent"></div>
<div className="border-tertiary group-hover:border-accent mx-1 flex-1 border-t-2 border-dotted"></div>
<span>{year}</span>
</div>
<ul className="flex flex-wrap gap-2 text-xs text-tertiary">
<ul className="text-tertiary flex flex-wrap gap-2 text-xs">
{tech.map((t, i) => {
return (
<li key={i}>
Expand Down
22 changes: 18 additions & 4 deletions components/Summary.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,22 @@
const Summary = ({ content }: { content: React.ReactNode}) => {
type SummaryProps =
| {
children: React.ReactNode;
paragraphs?: never;
}
| {
children?: never;
paragraphs: React.ReactNode[];
};

const Summary = ({ children, paragraphs }: SummaryProps) => {
const content = paragraphs ?? [children];

return (
<p className="mt-10">
{content}
</p>
<div className="mt-10 flex flex-col gap-3">
{content.map((paragraph, i) => (
<p key={i}>{paragraph}</p>
))}
</div>
);
};

Expand Down
8 changes: 4 additions & 4 deletions components/mdx-components.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,13 @@ const components = {
),
a: ({ className, ...props }: React.HTMLAttributes<HTMLAnchorElement>) => (
<a
className={cn("text-base text-accent hover:text-[#0c885f]", className)}
className={cn("text-accent text-base hover:text-[#0c885f]", className)}
{...props}
/>
),
p: ({ className, ...props }: React.HTMLAttributes<HTMLParagraphElement>) => (
<p
className={cn("my-4 text-base leading-6 text-secondary", className)}
className={cn("text-secondary my-4 text-base leading-6", className)}
{...props}
/>
),
Expand All @@ -59,7 +59,7 @@ const components = {
}: React.HTMLAttributes<HTMLQuoteElement>) => (
<blockquote
className={cn(
"[&>*]:text-muted-foreground mt-6 border-l-2 pl-6 italic",
"*:text-muted-foreground mt-6 border-l-2 pl-6 italic",
className,
)}
{...props}
Expand All @@ -73,7 +73,7 @@ const components = {
// eslint-disable-next-line @next/next/no-img-element
<img className={cn("my-8 rounded-md", className)} alt={alt} {...props} />
),
hr: ({ ...props }) => <hr className="my-8 border-tertiary" {...props} />,
hr: ({ ...props }) => <hr className="border-tertiary my-8" {...props} />,
};

type MdxProps = {
Expand Down
9 changes: 5 additions & 4 deletions components/ui/Heading.tsx
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
import { serif } from "@/lib/fonts";

type HeadingProps = {
content: React.ReactNode;
title: React.ReactNode;
emoji?: string;
};

const Heading = ({ content, emoji }: HeadingProps) => {
const Heading = ({ title, emoji }: HeadingProps) => {
return (
<h1 className={`${serif.className} text-base tracking-wide text-primary`}>
{content} {emoji || <span className="ml-1">{emoji}</span>}
<h1 className={`${serif.className} text-primary text-base tracking-wide`}>
{title}
{emoji && <span className="ml-1">{emoji}</span>}
</h1>
);
};
Expand Down
6 changes: 6 additions & 0 deletions components/ui/Icon.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,12 @@ export const icons: Record<
twitter: (props) => <></>,
blogs: (props) => <></>,
projects: (props) => <></>,
go: (props) => <></>,
rust: (props) => <></>,
cli: (props) => <></>,
package: (props) => <></>,
library: (props) => <></>,
interpreter: (props) => <></>,
jwt: (props) => <></>,
postgresql: (props) => <></>,
prisma: (props) => <></>,
Expand Down
Loading