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
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,6 @@ Klik op het MacBook-scherm en typ:
| `skills` | vaardigheden |
| `email` | stuur een e-mail vanuit de terminal (onderwerp → bericht → optioneel antwoordadres → bevestigen; verzonden via SMTP2GO) |
| `photo` / `open arjan.jpg` | opent de foto op het bureaublad |
| `linkedin` | opent het LinkedIn-profiel |
| `iss` | live positie, hoogte en snelheid van het échte ISS |
| `lang en` / `lang nl` | wissel van taal (wordt onthouden) |
| `neofetch` | systeeminfo van deze MacBook (M1 Max 😉) |
Expand All @@ -76,7 +75,8 @@ npm run preview # test de productiebuild lokaal

## Personaliseren

- **Identiteit & links** - `src/config.ts` (naam, e-mail, LinkedIn, foto-pad).
- **Identiteit & links** - `src/config.ts` (naam, e-mail, LinkedIn, GitHub,
/dev/null, foto-pad).
- **Teksten per taal** - `src/i18n.ts` (bio, titel, skills, alle UI- en
terminalteksten; de TODO-markers wachten op echte content).
- **Foto** - `public/photo.webp` (vierkant, 800×800).
Expand Down
2 changes: 1 addition & 1 deletion index.html
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
"jobTitle": "IT-consultant & softwaredeveloper",
"worksFor": { "@type": "Organization", "name": "ContactCare" },
"knowsAbout": ["Amazon Connect Customer", "Amazon Connect", "PHP", "Laravel", "API-integraties", "Procesoptimalisatie"],
"sameAs": ["https://www.linkedin.com/in/arjankapteijn/"]
"sameAs": ["https://www.linkedin.com/in/arjankapteijn/", "https://dev-null.sh/@arjankapteijn"]
}
</script>
</head>
Expand Down
8 changes: 8 additions & 0 deletions src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,13 @@ export default function App() {
<path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 0 1-2.063-2.065 2.064 2.064 0 1 1 2.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.225 0z" />
</svg>
</a>
<a href={profile.devnull} target="_blank" rel="me noreferrer" aria-label="/dev/null" title="/dev/null">
{/* beeldmerk uit https://dev-null.sh/brand, monochroom zoals de andere iconen */}
<svg viewBox="0 0 48 48" width="20" height="20" fill="currentColor" aria-hidden="true">
<path d="M2 42h10L26 6H16Z" />
<path fillRule="evenodd" clipRule="evenodd" d="M17.81 43.5h13.22L46.19 4.5H32.97ZM22.19 40.5l12.84-33h6.78l-12.84 33Z" />
</svg>
</a>
<a href={profile.github} target="_blank" rel="noreferrer" aria-label="GitHub" title="GitHub - broncode">
<svg viewBox="0 0 24 24" width="20" height="20" fill="currentColor" aria-hidden="true">
<path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12" />
Expand Down Expand Up @@ -144,6 +151,7 @@ export default function App() {
<h1>{profile.name}</h1>
<p>{renderMarkdownLinks(t.bio.join(' '))}</p>
<a href={profile.linkedin}>LinkedIn - {profile.name}</a>
<a href={profile.devnull}>/dev/null - {profile.name}</a>
<a href={`mailto:${profile.email}`}>E-mail - {profile.name}</a>
</main>
</>
Expand Down
3 changes: 3 additions & 0 deletions src/components/PhotoModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,9 @@ export default function PhotoModal({ lang, onClose, onEmail }: PhotoModalProps)
<a href={profile.linkedin} target="_blank" rel="noreferrer">
LinkedIn
</a>
<a href={profile.devnull} target="_blank" rel="me noreferrer">
/dev/null
</a>
<button type="button" onClick={onEmail}>
E-mail
</button>
Expand Down
4 changes: 0 additions & 4 deletions src/components/Terminal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -243,10 +243,6 @@ export default function Terminal({ lang, setLang, onOpenPhoto }: TerminalProps)
case 'mail':
startEmail()
break
case 'linkedin':
window.open(profile.linkedin, '_blank', 'noopener')
print({ text: t.linkedinOpening, cls: 'ok' }, { text: '' })
break
case 'photo':
case 'foto':
print({ text: t.photoOpening, cls: 'ok' }, { text: '' })
Expand Down
1 change: 1 addition & 0 deletions src/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ export const profile = {

linkedin: 'https://www.linkedin.com/in/arjankapteijn/',
github: 'https://github.com/arjankapteijn/website',
devnull: 'https://dev-null.sh/@arjankapteijn',

photo: '/photo.webp',
}
Expand Down
8 changes: 2 additions & 6 deletions src/i18n.ts
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,6 @@ const nl = {
{ text: ' skills waar is hij goed in?' },
{ text: ' email stuur een e-mail vanuit de terminal' },
{ text: ' photo open de foto op het bureaublad' },
{ text: ' linkedin open het LinkedIn-profiel' },
{ text: ' iss live positie van het échte ISS' },
{ text: ' lang switch language (lang en / lang nl)' },
{ text: ' neofetch systeeminfo van deze MacBook' },
Expand All @@ -146,7 +145,6 @@ const nl = {
promptReply: 'e-mailadres (optioneel)> ',
promptConfirm: 'verzenden? (j/n) ',
yes: ['j', 'ja', 'y', 'yes'],
linkedinOpening: 'LinkedIn wordt geopend in een nieuw tabblad…',
photoOpening: 'arjan.jpg wordt geopend…',
openNotFound: (arg: string) => `open: kan '${arg || '?'}' niet vinden`,
lsFiles: 'arjan.jpg over-mij.txt .geheimen',
Expand Down Expand Up @@ -199,7 +197,7 @@ const nl = {
] as TermLine[],
exit: [
{ text: 'Ontsnappen aan een baan om de aarde kost 7,9 km/s.', cls: 'warn' },
{ text: "Makkelijker: typ 'linkedin'.", cls: 'dim' },
{ text: 'Makkelijker: de icoontjes rechtsonder.', cls: 'dim' },
{ text: '' },
] as TermLine[],
notFound: (name: string) =>
Expand Down Expand Up @@ -324,7 +322,6 @@ const en: typeof nl = {
{ text: ' skills what is he good at?' },
{ text: ' email send an e-mail from the terminal' },
{ text: ' photo open the photo on the desktop' },
{ text: ' linkedin open the LinkedIn profile' },
{ text: ' iss live position of the real ISS' },
{ text: ' lang switch language (lang en / lang nl)' },
{ text: ' neofetch system info for this MacBook' },
Expand All @@ -351,7 +348,6 @@ const en: typeof nl = {
promptReply: 'e-mail address (optional)> ',
promptConfirm: 'send? (y/n) ',
yes: ['y', 'yes', 'j', 'ja'],
linkedinOpening: 'Opening LinkedIn in a new tab…',
photoOpening: 'Opening arjan.jpg…',
openNotFound: (arg: string) => `open: cannot find '${arg || '?'}'`,
lsFiles: 'arjan.jpg about-me.txt .secrets',
Expand Down Expand Up @@ -404,7 +400,7 @@ const en: typeof nl = {
],
exit: [
{ text: 'Escaping Earth orbit takes 7.9 km/s.', cls: 'warn' },
{ text: "Easier: type 'linkedin'.", cls: 'dim' },
{ text: 'Easier: the icons in the bottom right.', cls: 'dim' },
{ text: '' },
],
notFound: (name: string) => [
Expand Down
10 changes: 10 additions & 0 deletions src/index.css
Original file line number Diff line number Diff line change
Expand Up @@ -249,6 +249,16 @@ canvas {
background: rgba(70, 120, 255, 0.28);
}

/* Smal scherm: drie knoppen naast elkaar - krapper, zodat elk label op één regel past */
@media (max-width: 640px) {
.photo-modal__actions a,
.photo-modal__actions button {
padding: 10px 6px;
letter-spacing: 0.05em;
white-space: nowrap;
}
}

/* ── Stats-popups (zonnepanelen, hosting) ──────────────────────────── */
.photo-modal__icon {
width: 96px;
Expand Down
Loading