Joseph Asare
Craft-Driven logic & motion
operating at the intersection of engineering & design.
Josephaasare@gmail.com
Craft-Driven logic & motion
operating at the intersection of engineering & design.
Josephaasare@gmail.com
Proficient in modern JavaScript/TypeScript ecosystems, excelling at bringing creative visions to life.
React, Next.js, TypeScript, HTML5/CSS3. Building high-performance frontend systems.
Anime.js, GSAP, Motion, Three.js, WebGL. Rapid web animations & complex DOM orchestrations.
GLSL Shaders, Generative Art, WebAudio API, Custom Data Visualization.
Node.js, Google Cloud Platform (GCP), RESTful APIs, GraphQL, Fast Architectures.
Firebase, Firestore, Authentication. Orchestrating data through the entire lifecycle securely.
Git, GitHub, Docker, Vite, Webpack. Delivering smooth CI/CD pipelines.
Figma, UI/UX Implementation. Turning mockups to reality.
Focuses intensely on granular details of application architecture, performance, and aesthetics.
Prioritizing projects that strive to build something "remarkable".
2024 - Present
Leading a team to architect and scale real-time dashboard experiences. Reduced TTI by 40% using React Concurrent features and WebGL rendering for intense data visualisations.
2021 - 2024
Built award-winning interactive landing pages using Three.js and Framer Motion. Brought design mockups to life with pixel-perfect precision and fluid motion graphics.
Have an opportunity or question? Tell me about it.
import { useState, useEffect } from 'react';
const EngineeringMindset = () => {
return (
<div className="flex bg-zinc-900 text-white">
<h1>Frontend Mastery</h1>
<p>Built with component-driven tools.</p>
</div>
);
};
import gsap from 'gsap';
export function animateEntry() {
gsap.to('.hero-text', {
y: 0,
opacity: 1,
stagger: 0.1,
ease: 'power3.out'
});
}
import { getAuth, signInWithPopup } from 'firebase/auth';
export const handleLogin = async (provider) => {
const auth = getAuth();
await signInWithPopup(auth, provider);
return "Logged In";
};
function initializeCanvas(canvas) {
const ctx = canvas.getContext('2d');
ctx.fillStyle = 'rgba(0, 0, 0, 0.5)';
ctx.fillRect(0, 0, canvas.width, canvas.height);
// Custom Data Viz
requestAnimationFrame(renderLoop);
}
import express from 'express';
const app = express();
app.get('/api/projects', async (req, res) => {
const data = await fetchProjectsFromDB();
res.status(200).json(data);
});
name: Production Release
on:
push:
branches: [ main ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: npm install && npm run build
:root {
--radius-md: 8px;
--shadow-sm: 0 1px 2px rgba(0,0,0,0.1);
--surface: #121212;
}
.card {
border-radius: var(--radius-md);
box-shadow: var(--shadow-sm);
background: var(--surface);
}
export function reportWebVitals(metric) {
console.log({
id: metric.id,
name: metric.name,
value: Math.round(metric.value),
});
}