diff --git a/public/factor-e-icon.svg b/public/factor-e-icon.svg new file mode 100644 index 00000000..36e76533 --- /dev/null +++ b/public/factor-e-icon.svg @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/public/favicon copy.svg b/public/favicon copy.svg new file mode 100644 index 00000000..f4e96bb3 --- /dev/null +++ b/public/favicon copy.svg @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/public/glimpse-icon.svg b/public/glimpse-icon.svg new file mode 100644 index 00000000..6fb27e19 --- /dev/null +++ b/public/glimpse-icon.svg @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/public/good-morning-icon.png b/public/good-morning-icon.png new file mode 100644 index 00000000..15585b23 Binary files /dev/null and b/public/good-morning-icon.png differ diff --git a/public/good-morning-icon.svg b/public/good-morning-icon.svg new file mode 100644 index 00000000..15585b23 Binary files /dev/null and b/public/good-morning-icon.svg differ diff --git a/public/images/factor-e/debug-overlay.gif b/public/images/factor-e/debug-overlay.gif new file mode 100644 index 00000000..09a8e06c Binary files /dev/null and b/public/images/factor-e/debug-overlay.gif differ diff --git a/public/images/factor-e/pixel-art.png b/public/images/factor-e/pixel-art.png new file mode 100644 index 00000000..61661c66 Binary files /dev/null and b/public/images/factor-e/pixel-art.png differ diff --git a/public/images/factor-e/place-destroy.gif b/public/images/factor-e/place-destroy.gif new file mode 100644 index 00000000..48c5e284 Binary files /dev/null and b/public/images/factor-e/place-destroy.gif differ diff --git a/public/images/factor-e/world-gen.gif b/public/images/factor-e/world-gen.gif new file mode 100644 index 00000000..f49e43fc Binary files /dev/null and b/public/images/factor-e/world-gen.gif differ diff --git a/public/images/glimpse/comments.png b/public/images/glimpse/comments.png new file mode 100644 index 00000000..7b3f4d32 Binary files /dev/null and b/public/images/glimpse/comments.png differ diff --git a/public/images/glimpse/crop.png b/public/images/glimpse/crop.png new file mode 100644 index 00000000..a72dc053 Binary files /dev/null and b/public/images/glimpse/crop.png differ diff --git a/public/images/glimpse/feed.png b/public/images/glimpse/feed.png new file mode 100644 index 00000000..1331f516 Binary files /dev/null and b/public/images/glimpse/feed.png differ diff --git a/public/images/glimpse/profile.png b/public/images/glimpse/profile.png new file mode 100644 index 00000000..c9f0d510 Binary files /dev/null and b/public/images/glimpse/profile.png differ diff --git a/public/images/glimpse/search.png b/public/images/glimpse/search.png new file mode 100644 index 00000000..e6ed33a2 Binary files /dev/null and b/public/images/glimpse/search.png differ diff --git a/public/images/glimpse/settings.png b/public/images/glimpse/settings.png new file mode 100644 index 00000000..5e76c9b5 Binary files /dev/null and b/public/images/glimpse/settings.png differ diff --git a/public/images/good-morning/create-notice.png b/public/images/good-morning/create-notice.png new file mode 100644 index 00000000..908213f0 Binary files /dev/null and b/public/images/good-morning/create-notice.png differ diff --git a/public/images/good-morning/login-with-google.png b/public/images/good-morning/login-with-google.png new file mode 100644 index 00000000..088a5c1e Binary files /dev/null and b/public/images/good-morning/login-with-google.png differ diff --git a/public/images/good-morning/me.png b/public/images/good-morning/me.png new file mode 100644 index 00000000..73278e76 Binary files /dev/null and b/public/images/good-morning/me.png differ diff --git a/public/images/good-morning/no-notice.png b/public/images/good-morning/no-notice.png new file mode 100644 index 00000000..a31bf943 Binary files /dev/null and b/public/images/good-morning/no-notice.png differ diff --git a/public/images/good-morning/notice.png b/public/images/good-morning/notice.png new file mode 100644 index 00000000..ca2dc2d4 Binary files /dev/null and b/public/images/good-morning/notice.png differ diff --git a/public/images/good-morning/partner-pairing.png b/public/images/good-morning/partner-pairing.png new file mode 100644 index 00000000..4d796986 Binary files /dev/null and b/public/images/good-morning/partner-pairing.png differ diff --git a/public/images/mizu/card-details.png b/public/images/mizu/card-details.png new file mode 100644 index 00000000..a40b4f6d Binary files /dev/null and b/public/images/mizu/card-details.png differ diff --git a/public/images/mizu/card-fighter.png b/public/images/mizu/card-fighter.png new file mode 100644 index 00000000..40529fd0 Binary files /dev/null and b/public/images/mizu/card-fighter.png differ diff --git a/public/images/mizu/card.png b/public/images/mizu/card.png new file mode 100644 index 00000000..6d948b74 Binary files /dev/null and b/public/images/mizu/card.png differ diff --git a/public/images/mizu/collection1.png b/public/images/mizu/collection1.png new file mode 100644 index 00000000..9fe5c625 Binary files /dev/null and b/public/images/mizu/collection1.png differ diff --git a/public/images/mizu/collection2.png b/public/images/mizu/collection2.png new file mode 100644 index 00000000..fe3ac85d Binary files /dev/null and b/public/images/mizu/collection2.png differ diff --git a/public/images/mizu/complete-trade.png b/public/images/mizu/complete-trade.png new file mode 100644 index 00000000..d0066c00 Binary files /dev/null and b/public/images/mizu/complete-trade.png differ diff --git a/public/images/mizu/current-trade.png b/public/images/mizu/current-trade.png new file mode 100644 index 00000000..0c20e08a Binary files /dev/null and b/public/images/mizu/current-trade.png differ diff --git a/public/images/mizu/forage-design.png b/public/images/mizu/forage-design.png new file mode 100644 index 00000000..4dc152d6 Binary files /dev/null and b/public/images/mizu/forage-design.png differ diff --git a/public/images/mizu/forage-locations.png b/public/images/mizu/forage-locations.png new file mode 100644 index 00000000..220ab541 Binary files /dev/null and b/public/images/mizu/forage-locations.png differ diff --git a/public/images/mizu/forage.png b/public/images/mizu/forage.png new file mode 100644 index 00000000..483690be Binary files /dev/null and b/public/images/mizu/forage.png differ diff --git a/public/images/mizu/inventory.png b/public/images/mizu/inventory.png new file mode 100644 index 00000000..417a5588 Binary files /dev/null and b/public/images/mizu/inventory.png differ diff --git a/public/images/mizu/pack-planning.png b/public/images/mizu/pack-planning.png new file mode 100644 index 00000000..b0991159 Binary files /dev/null and b/public/images/mizu/pack-planning.png differ diff --git a/public/images/mizu/quests-planning.png b/public/images/mizu/quests-planning.png new file mode 100644 index 00000000..a262251e Binary files /dev/null and b/public/images/mizu/quests-planning.png differ diff --git a/public/images/mizu/quests.png b/public/images/mizu/quests.png new file mode 100644 index 00000000..7b22567b Binary files /dev/null and b/public/images/mizu/quests.png differ diff --git a/public/images/mizu/update-planning.png b/public/images/mizu/update-planning.png new file mode 100644 index 00000000..456a47d2 Binary files /dev/null and b/public/images/mizu/update-planning.png differ diff --git a/public/images/prayerbud/create-network.png b/public/images/prayerbud/create-network.png new file mode 100644 index 00000000..6517abc9 Binary files /dev/null and b/public/images/prayerbud/create-network.png differ diff --git a/public/images/prayerbud/dashboard.png b/public/images/prayerbud/dashboard.png new file mode 100644 index 00000000..5bc5378e Binary files /dev/null and b/public/images/prayerbud/dashboard.png differ diff --git a/public/images/prayerbud/home.png b/public/images/prayerbud/home.png new file mode 100644 index 00000000..00156cac Binary files /dev/null and b/public/images/prayerbud/home.png differ diff --git a/public/images/prayerbud/post-login.png b/public/images/prayerbud/post-login.png new file mode 100644 index 00000000..5e2c0cc4 Binary files /dev/null and b/public/images/prayerbud/post-login.png differ diff --git a/public/images/prayerbud/prayer-card.png b/public/images/prayerbud/prayer-card.png new file mode 100644 index 00000000..b87ceb0c Binary files /dev/null and b/public/images/prayerbud/prayer-card.png differ diff --git a/public/images/prayerbud/pre-login.png b/public/images/prayerbud/pre-login.png new file mode 100644 index 00000000..bd6368a4 Binary files /dev/null and b/public/images/prayerbud/pre-login.png differ diff --git a/public/images/prayerbud/welcome-to-network.png b/public/images/prayerbud/welcome-to-network.png new file mode 100644 index 00000000..b17ea874 Binary files /dev/null and b/public/images/prayerbud/welcome-to-network.png differ diff --git a/public/images/wiskatron/1.png b/public/images/wiskatron/1.png new file mode 100644 index 00000000..88fc20eb Binary files /dev/null and b/public/images/wiskatron/1.png differ diff --git a/public/images/wiskatron/2.png b/public/images/wiskatron/2.png new file mode 100644 index 00000000..a17cd458 Binary files /dev/null and b/public/images/wiskatron/2.png differ diff --git a/public/images/wiskatron/3.png b/public/images/wiskatron/3.png new file mode 100644 index 00000000..f29f5feb Binary files /dev/null and b/public/images/wiskatron/3.png differ diff --git a/public/images/wiskatron/4.png b/public/images/wiskatron/4.png new file mode 100644 index 00000000..7e8a80bf Binary files /dev/null and b/public/images/wiskatron/4.png differ diff --git a/public/images/wiskatron/5.png b/public/images/wiskatron/5.png new file mode 100644 index 00000000..c85a6aca Binary files /dev/null and b/public/images/wiskatron/5.png differ diff --git a/public/images/wiskatron/6.png b/public/images/wiskatron/6.png new file mode 100644 index 00000000..0148b6ba Binary files /dev/null and b/public/images/wiskatron/6.png differ diff --git a/public/mizu-icon.svg b/public/mizu-icon.svg new file mode 100644 index 00000000..95cd5faa --- /dev/null +++ b/public/mizu-icon.svg @@ -0,0 +1,48 @@ + + \ No newline at end of file diff --git a/public/prayerbud-icon.svg b/public/prayerbud-icon.svg new file mode 100644 index 00000000..08ab6c40 --- /dev/null +++ b/public/prayerbud-icon.svg @@ -0,0 +1,14 @@ + diff --git a/public/watercooler-icon.svg b/public/watercooler-icon.svg new file mode 100644 index 00000000..cbd81415 --- /dev/null +++ b/public/watercooler-icon.svg @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/public/wiskatron-icon.svg b/public/wiskatron-icon.svg new file mode 100644 index 00000000..e94dfb3f --- /dev/null +++ b/public/wiskatron-icon.svg @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/src/App.tsx b/src/App.tsx index 3f516635..ae8ad486 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,7 +1,7 @@ +import { ProjectListItem } from "@/components/ProjectListItem"; +import { type ProjectEntry, projectList, projects } from "@/projects"; import { Link, Route, Routes, useParams } from "react-router-dom"; -import { ThemeToggle } from "@/components/theme-toggle"; -import { cn } from "@/lib/utils"; -import { type ProjectMetadata, projectList, projects } from "@/projects"; +import { ThemeToggle } from "./components/theme-toggle"; function App() { return ( @@ -16,20 +16,28 @@ function App() { export default App; function Home() { + const isDevMode = import.meta.env.VITE_PUBLIC_DEV === "1"; + const sortedProjects: ProjectEntry[] = [...projectList].sort( + (a, b) => + parseDate(b.metadata.date).getTime() - + parseDate(a.metadata.date).getTime(), + ); + return (
- {metadata.description} -
- {tags.length > 0 ? ( -- {metadata.date} -
-{metadata.description}
+ {tags.length > 0 ? ( ++ {metadata.date} +
++ "factor-e" is an isometric factory sandbox prototype I built to learn + C++ and{" "} + + raylib + + . Inspired by Minecraft and{" "} + + Terrafactor + + , it explores tile-based building, inventory management and procedural + world generation. +
+ ++ "flackie" is a portable FLAC music player I built using a Raspberry Pi + Zero 2 W, a small e-ink display, and some physical buttons. The device + features a custom Python UI for browsing and playing FLAC files. The + case was designed in CAD and 3D printed to house all the components + neatly. +
+ ++ "glimpse" is a full-stack social app for sharing photos with friends and + building real community. Early Instagram and tumblr were huge + inspirations, no influencers and brands, just keeping up with your + friends and family. Sign in with Google, and immediately access a + dynamic feed, view and comment on posts. Choose your profile colour, and + enable push notifications for new posts, comments, and friend requests. +
++ "good morning!" is a web app I built to help couples or friends share + daily notices, songs, and photos with each other. It features a simple + and intuitive interface for sending and receiving messages, along with + support for photo attachments. The app is built with React and + TypeScript on the frontend, and Go with PostgreSQL on the backend. Media + files are stored securely using Cloudflare R2 (AWS S3). +
+ ++ I led a four-person team to create MIZU, a popular anime trading card + game on Discord. In this role, I was responsible for the full lifecycle + of the application: designing the core architecture, building the + application with Node.js and TypeScript, and deploying it on a + self-managed VPS. We successfully scaled to serve over 4,000 players. + Although MIZU is no longer active, it was a significant experience in + leading a team and scaling a live application. +
+ ++ Pray Together and Grow Together: Join a diverse community of + individuals from around the world who are passionate about prayer and + spiritual growth. Create and share prayer requests with your PrayerBud + community who are ready to offer support, encouragement, and heartfelt + prayers. +
++ For prayer teams or churches, the app offers a streamlined way to + manage and organise prayer requests, ensuring that no request goes + unnoticed. +
++
{metadata.date} {metadata.github ? ( <> @@ -50,7 +50,7 @@ export function ProjectPage({ metadata, children }: ProjectPageProps) { href={metadata.github} target="_blank" rel="noopener noreferrer" - className="text-ayu-green-500 hover:underline" + className="text-green-500 hover:underline" > Source Code @@ -63,7 +63,7 @@ export function ProjectPage({ metadata, children }: ProjectPageProps) { {tags.map((tag: string) => ( {tag} @@ -73,7 +73,7 @@ export function ProjectPage({ metadata, children }: ProjectPageProps) {
+
Oliver Bryan - {metadata.date}
{metadata.github ? (
<>
@@ -83,7 +83,7 @@ export function ProjectPage({ metadata, children }: ProjectPageProps) {
href={metadata.github}
target="_blank"
rel="noopener noreferrer"
- className="text-ayu-green-500 hover:underline"
+ className="text-green-500 hover:underline"
>
Source Code
diff --git a/src/projects/shleep/index.tsx b/src/projects/shleep/index.tsx
new file mode 100644
index 00000000..1fbaee18
--- /dev/null
+++ b/src/projects/shleep/index.tsx
@@ -0,0 +1,51 @@
+import { Demo } from "@/projects/shared/Demo";
+import { ProjectPage } from "@/projects/shared/ProjectPage";
+
+export const metadata = {
+ title: "Shleep",
+ description:
+ "A couch co-op base defense game where you protect a sleepign child from nightmares.",
+ date: "February - June 2023",
+ slug: "shleep",
+ image: "/shleep-icon.svg",
+ url: "https://bigbootstudio.itch.io/shleep",
+ hidden: true,
+ tags: ["Unity", "C#", "HLSL", "Shader Graph", "Visual Effects Graph"],
+ type: "personal",
+};
+
+export function ShleepProject() {
+ return (
+
+ Shleep is a couch co-op base defense game where you can build towers to
+ help aid you and your party to protect a sleeping child from nightmares.
+
+ Technologies
+
+
+
+ Screenshots
+
Sprint uses a monorepo structure with three packages: a shared package containing database schemas and types, a Bun.serve API with Drizzle @@ -82,9 +80,7 @@ export function SprintProject() {
watercooler description here
+ ++ Spotify listening activity web app with dynamic visuals, built with + Next.js. +
+ +