Skip to content
Merged

v2 #3

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
13 changes: 0 additions & 13 deletions .eslintignore

This file was deleted.

44 changes: 0 additions & 44 deletions .eslintrc.json

This file was deleted.

16 changes: 9 additions & 7 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,12 @@
# dependencies
/node_modules
/.pnp
.pnp.js
.pnp.*
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/versions

# testing
/coverage
Expand All @@ -25,15 +30,12 @@ yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*

# local env files
.env.local
.env.development.local
.env.test.local
.env.production.local
.env
# env files (can opt-in for committing if needed)
.env*

# vercel
.vercel

# typescript
*.tsbuildinfo
next-env.d.ts
13 changes: 0 additions & 13 deletions .prettierignore

This file was deleted.

11 changes: 0 additions & 11 deletions .prettierrc

This file was deleted.

2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2022 Marin Heđeš
Copyright (c) 2025 Marin Heđeš

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
56 changes: 4 additions & 52 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,65 +1,17 @@
# Personal website

- 💻 Available online at https://marinhedes.com and https://sincerelyfaust.com
- 💙 Written in TypeScript
- ⚛️ Built with Next.js
- 🎨 Styled with TailwindCSS
- 🚶‍♂️ Animated with Framer Motion
- 🔼 Deployed with Vercel
- Available at https://marinhedes.com and https://sincerelyfaust.com

## Development

To develop and locally test the website:

### 1. Clone

Clone this repository from GitHub:

```sh
git clone https://github.com/SincerelyFaust/website
```

### 2. Install development tools:

1. [Install Node.js and NPM](https://nodejs.org/en/download/package-manager/)
1. [Install PNPM](https://pnpm.io/installation) (recommended opposed to NPM/Yarn)
1. Code editor of your choice (I recommend [VSCode](https://code.visualstudio.com/))

### 3. Install dependencies:

Install node modules required to run the website by running:
### 1. Install dependencies:

```
pnpm i
```

### 4. Start the Next.js dev server:
### 2. Start the dev server:

```
pnpm dev
```

In a browser, load the page [localhost:3000](http://localhost:3000) and you should now be able to test the website while making your changes.
Next.js' dev server has hot reloading so no need to restart the instance when it's running!

### 5. Build:

After making your changes and verifying it all works in the dev server, furtherly test them out by building the website:

```
pnpm build
```

### 6. Start:

```
pnpm start
```

In a browser, load the page [localhost:3000](http://localhost:3000) and you should now be able to view the built website.

## License

Copyright @ 2023 - [Marin Heđeš](https://github.com/sincerelyfaust)

This project is licensed under the [MIT license](LICENSE).
```
60 changes: 60 additions & 0 deletions app/cv/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
import Link from "next/link";

export default function CVPage() {
const pdfPath = "/cv/cv.pdf";

return (
<div className="min-h-svh flex justify-center items-start p-3 sm:p-6 overflow-auto">
<div className="window w-full max-w-5xl h-[94svh] sm:h-[90svh] flex flex-col">
<div className="title-bar">
<div className="title-bar-text">CV</div>
<div className="title-bar-controls">
<button aria-label="Minimize" />
<button aria-label="Maximize" />
<button aria-label="Close" />
</div>
</div>

<div className="window-body flex flex-col gap-3 flex-1 min-h-0">
<div className="field-row" style={{ flexWrap: "wrap", gap: 8 }}>
<Link href="/">
<button>Back</button>
</Link>
<a href={pdfPath} download>
<button>Download PDF</button>
</a>
<a href={pdfPath} target="_blank" rel="noopener noreferrer">
<button>Open in new tab</button>
</a>
</div>

<div className="sunken-panel p-2 flex-1 min-h-0">
<object
data={pdfPath}
type="application/pdf"
width="100%"
height="100%"
>
<p>
Your browser can’t display PDFs inline.{" "}
<a href={pdfPath} target="_blank" rel="noopener noreferrer">
Open the PDF
</a>{" "}
or{" "}
<a href={pdfPath} download>
download it
</a>
.
</p>
</object>
</div>

<div className="status-bar">
<p className="status-bar-field">CV</p>
<p className="status-bar-field">PDF</p>
</div>
</div>
</div>
</div>
);
}
26 changes: 26 additions & 0 deletions app/globals.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
@import "tailwindcss";

:root {
--background: #ffffff;
--foreground: #171717;
}

@theme inline {
--color-background: var(--background);
--color-foreground: var(--foreground);
--font-sans: var(--font-geist-sans);
--font-mono: var(--font-geist-mono);
}

@media (prefers-color-scheme: dark) {
:root {
--background: #0a0a0a;
--foreground: #ededed;
}
}

body {
background: var(--background);
color: var(--foreground);
font-family: Arial, Helvetica, sans-serif;
}
90 changes: 90 additions & 0 deletions app/layout.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
import type { Metadata } from "next";
import { Geist, Geist_Mono } from "next/font/google";
import "./globals.css";

const geistSans = Geist({
variable: "--font-geist-sans",
subsets: ["latin"],
});

const geistMono = Geist_Mono({
variable: "--font-geist-mono",
subsets: ["latin"],
});

export const metadata: Metadata = {
title: "Marin Heđeš",
description: "Front-end and mobile developer",
keywords: [
"portfolio",
"marin heđeš",
"faust",
"personal website",
"sincerelyfaust",
"founder",
"developer",
"frontend developer",
"mobile developer",
"software engineer",
],
alternates: {
canonical: "https://www.marinhedes.com",
},
openGraph: {
type: "website",
url: "https://www.marinhedes.com",
title: "Marin Heđeš",
siteName: "Marin Heđeš",
description: "Front-end and mobile developer",
images: [
{
url: "https://avatars.githubusercontent.com/u/44751736?v=4",
},
],
},
appleWebApp: {
capable: true,
title: "Marin Heđeš",
statusBarStyle: "default",
},
manifest: "/site.webmanifest",
icons: {
icon: [
{ url: "/images/favicon/favicon.ico" },
{
url: "/images/favicon/favicon-32x32.png",
sizes: "32x32",
type: "image/png",
},
{
url: "/images/favicon/favicon-16x16.png",
sizes: "16x16",
type: "image/png",
},
],
apple: [{ url: "/images/favicon/apple-touch-icon.png", sizes: "180x180" }],
},
};

export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
return (
<html lang="en">
<head>
<link
rel="stylesheet"
href="https://unpkg.com/xp.css"
precedence="default"
/>
</head>
<body
className={`${geistSans.variable} ${geistMono.variable} antialiased`}
>
{children}
</body>
</html>
);
}
Loading