changes and whatnot
This commit is contained in:
35
src/app.ts
35
src/app.ts
@@ -1,43 +1,10 @@
|
|||||||
import { Renderer, UiState } from './engine/renderer'
|
import { Renderer, UiState } from './engine/renderer'
|
||||||
import { Input } from './ui/input'
|
import { Input } from './ui/input'
|
||||||
import { DomOverlay } from './ui/overlay'
|
import { DomOverlay } from './ui/overlay'
|
||||||
|
import { SCENES } from './data/scenes'
|
||||||
|
|
||||||
const DPR_CAP = 2
|
const DPR_CAP = 2
|
||||||
|
|
||||||
interface SceneContent {
|
|
||||||
title: string
|
|
||||||
subtitle: string
|
|
||||||
body: string
|
|
||||||
}
|
|
||||||
|
|
||||||
const SCENES: SceneContent[] = [
|
|
||||||
{
|
|
||||||
title: 'Ahmed A. Mohamed',
|
|
||||||
subtitle: 'Creative Developer & Graphics Engineer',
|
|
||||||
body: 'Welcome to my personal website, there\'s a lot going on in my life that I will be sharing here randomly over time so take a look.'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'ABOUT',
|
|
||||||
subtitle: 'Who I am',
|
|
||||||
body: 'I build creative web experiences\nusing cutting-edge graphics technology.'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'PROJECTS',
|
|
||||||
subtitle: 'Things I have built',
|
|
||||||
body: 'A collection of work exploring\nWebGPU, shaders, and generative art.'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'CONTACT',
|
|
||||||
subtitle: 'Get in touch',
|
|
||||||
body: 'Reach me at hello@example.com\nor find me on GitHub.'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'RESUME',
|
|
||||||
subtitle: 'Ahmed Mohamed',
|
|
||||||
body: 'Graphics & Systems Engineer'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
|
||||||
export class App {
|
export class App {
|
||||||
private canvas: HTMLCanvasElement
|
private canvas: HTMLCanvasElement
|
||||||
private renderer = new Renderer()
|
private renderer = new Renderer()
|
||||||
|
|||||||
@@ -34,9 +34,9 @@ export const RESUME: ResumeData = {
|
|||||||
{ label: 'linkedin.com/in/inedited/', href: 'https://linkedin.com/in/inedited/' },
|
{ label: 'linkedin.com/in/inedited/', href: 'https://linkedin.com/in/inedited/' },
|
||||||
{ label: 'github.com/inedited', href: 'https://github.com/inedited' },
|
{ label: 'github.com/inedited', href: 'https://github.com/inedited' },
|
||||||
],
|
],
|
||||||
location: 'Gustav-Schwab-Str., 4, 81673 München, Germany',
|
location: 'München, Germany',
|
||||||
summary:
|
summary:
|
||||||
'Experienced software developer with a strong background in graphics programming, real-time rendering, XR development and AI engineering. Experienced in developing high-performance applications and specializing in low-level optimizations.',
|
'Experienced software developer with a strong background in graphics programming, real-time rendering, XR development, Game development and AI engineering. Experienced in developing high-performance applications and specializing in low-level optimizations.',
|
||||||
education: [
|
education: [
|
||||||
{
|
{
|
||||||
role: 'Master of Science in Informatics: Games Engineering',
|
role: 'Master of Science in Informatics: Games Engineering',
|
||||||
|
|||||||
7
src/data/scenes/about.ts
Normal file
7
src/data/scenes/about.ts
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
import type { SceneContent } from './index'
|
||||||
|
|
||||||
|
export const about: SceneContent = {
|
||||||
|
title: 'ABOUT',
|
||||||
|
subtitle: 'Who I am',
|
||||||
|
body: 'My name is Ahmed Alaa Ahmed Mohamed (aka Djoser/Djosen/Inedited), I\'m a passionate creative software engineer and game developer. ',
|
||||||
|
}
|
||||||
7
src/data/scenes/contact.ts
Normal file
7
src/data/scenes/contact.ts
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
import type { SceneContent } from './index'
|
||||||
|
|
||||||
|
export const contact: SceneContent = {
|
||||||
|
title: 'CONTACT',
|
||||||
|
subtitle: 'Get in touch',
|
||||||
|
body: 'Reach me at hello@example.com\nor find me on GitHub.',
|
||||||
|
}
|
||||||
7
src/data/scenes/hero.ts
Normal file
7
src/data/scenes/hero.ts
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
import type { SceneContent } from './index'
|
||||||
|
|
||||||
|
export const hero: SceneContent = {
|
||||||
|
title: 'Ahmed A. Mohamed',
|
||||||
|
subtitle: 'Creative Developer & Graphics Engineer',
|
||||||
|
body: 'Welcome to my personal website, there\'s a lot going on in my life that I will be sharing here randomly over time so take a look.',
|
||||||
|
}
|
||||||
19
src/data/scenes/index.ts
Normal file
19
src/data/scenes/index.ts
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
// ---------- types ----------
|
||||||
|
|
||||||
|
export interface SceneContent {
|
||||||
|
title: string
|
||||||
|
subtitle: string
|
||||||
|
body: string
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------- scene files ----------
|
||||||
|
|
||||||
|
import { hero } from './hero'
|
||||||
|
import { about } from './about'
|
||||||
|
import { projects } from './projects'
|
||||||
|
import { contact } from './contact'
|
||||||
|
import { resume } from './resume'
|
||||||
|
|
||||||
|
// ---------- scene registry ----------
|
||||||
|
|
||||||
|
export const SCENES: SceneContent[] = [hero, about, projects, contact, resume]
|
||||||
7
src/data/scenes/projects.ts
Normal file
7
src/data/scenes/projects.ts
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
import type { SceneContent } from './index'
|
||||||
|
|
||||||
|
export const projects: SceneContent = {
|
||||||
|
title: 'PROJECTS',
|
||||||
|
subtitle: 'Things I have built',
|
||||||
|
body: 'A collection of work exploring\nWebGPU, shaders, and generative art.',
|
||||||
|
}
|
||||||
7
src/data/scenes/resume.ts
Normal file
7
src/data/scenes/resume.ts
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
import type { SceneContent } from './index'
|
||||||
|
|
||||||
|
export const resume: SceneContent = {
|
||||||
|
title: 'RESUME',
|
||||||
|
subtitle: 'Ahmed Mohamed',
|
||||||
|
body: 'Graphics & Systems Engineer',
|
||||||
|
}
|
||||||
@@ -1,11 +1,6 @@
|
|||||||
import { RESUME, ResumeData, ResumeEntry, SkillGroup } from '../data/resume'
|
import { RESUME, ResumeData, ResumeEntry, SkillGroup } from '../data/resume'
|
||||||
import { PROJECTS, CATEGORIES, ProjectPage, ProjectCategory } from '../data/projects/index'
|
import { PROJECTS, CATEGORIES, ProjectPage, ProjectCategory } from '../data/projects/index'
|
||||||
|
import type { SceneContent } from '../data/scenes'
|
||||||
interface SceneContent {
|
|
||||||
title: string
|
|
||||||
subtitle: string
|
|
||||||
body: string
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface OverlayCallbacks {
|
export interface OverlayCallbacks {
|
||||||
onNavClick: (scene: number) => void
|
onNavClick: (scene: number) => void
|
||||||
|
|||||||
Reference in New Issue
Block a user