Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
12c72db
Created components files/structure and test data in json files and ad…
JeffieJansson Nov 18, 2025
5ace674
added img, experimentet with data to json files and jsx files
JeffieJansson Nov 19, 2025
efad28a
changed order of content in main
JeffieJansson Nov 19, 2025
c5bd5ce
created tech.json file and updated skills.json file
JeffieJansson Nov 20, 2025
545f06d
Connect Tech section to tech.json data
JeffieJansson Nov 20, 2025
110497b
Connect Skills section to skills.json data
JeffieJansson Nov 20, 2025
12b60b3
connect Journey to posts.json and added more data
JeffieJansson Nov 20, 2025
a5f52d3
render all data from projects.json to Project file
JeffieJansson Nov 20, 2025
17e693d
add comments in Card,Projects,Skills,Tech and removed Tagsrow.jsx
JeffieJansson Nov 20, 2025
4161bbb
clean code
JeffieJansson Nov 21, 2025
34b72c8
removed img for now until styling
JeffieJansson Nov 21, 2025
d6df49d
trying out minimal styled components for buttons
JeffieJansson Nov 21, 2025
d03301c
create minimal styled componends for Card insted of previous code
JeffieJansson Nov 21, 2025
96af0eb
redo structure so this file has code for structure and import styles …
JeffieJansson Nov 21, 2025
07f418c
redo structure so this file has code for structure and import styles …
JeffieJansson Nov 21, 2025
3c81fec
removed img until styling
JeffieJansson Nov 21, 2025
046451f
imported styled component and added style for socialmedia icons
JeffieJansson Nov 21, 2025
e4653ac
modiy W and H for icons according to figma
JeffieJansson Nov 21, 2025
994888f
added style according to figma for the buttons
JeffieJansson Nov 21, 2025
978b59d
created assets folder for img and added new img
JeffieJansson Nov 25, 2025
63f6800
added styles from figma
JeffieJansson Nov 25, 2025
5829392
added correct color to icons
JeffieJansson Nov 25, 2025
4543ee0
added correct src path to img
JeffieJansson Nov 25, 2025
a510e38
added correct src path to img
JeffieJansson Nov 25, 2025
e140e20
added styles from figma but will update img to center
JeffieJansson Nov 25, 2025
f077aab
added styles and texts from figma
JeffieJansson Nov 25, 2025
2e70d48
add styles from figma
JeffieJansson Nov 25, 2025
0c56719
added styles from figma
JeffieJansson Nov 25, 2025
3147552
add styles from figma
JeffieJansson Nov 25, 2025
5d0ebab
added global styles component
JeffieJansson Nov 25, 2025
b4b45f3
add anc create globalstyles to app and globalstyles file
JeffieJansson Nov 25, 2025
5289b10
modified styles for tagsrow
JeffieJansson Nov 25, 2025
3cadced
added new posts and img with links to articles
JeffieJansson Nov 25, 2025
fa51699
changed src path to images
JeffieJansson Nov 25, 2025
4d1bd10
clean up
JeffieJansson Nov 25, 2025
1f86780
created media file to try out media query in react.Not done, will be …
JeffieJansson Nov 25, 2025
f857273
added images to posts section
JeffieJansson Nov 25, 2025
e320905
add meta desc and og:type/image/title/url
JeffieJansson Nov 25, 2025
9a3f384
moved from public to assets
JeffieJansson Nov 25, 2025
eec96ba
trying to fix responsivness for buttons and change font sizes to matc…
JeffieJansson Nov 25, 2025
87fd936
try to move one img to public folder to fix error in console for img
JeffieJansson Nov 25, 2025
d1fefae
moved all img to public folder to solve error in console
JeffieJansson Nov 25, 2025
b25a920
img error resolving
JeffieJansson Nov 25, 2025
0373b56
modify img src path
JeffieJansson Nov 26, 2025
7430c15
resolved img problem
JeffieJansson Nov 26, 2025
c8495bc
Fixed responsivess for desktop/tablet/mobile
JeffieJansson Nov 26, 2025
0aa050d
added som styles for hover state and for accessibilty outline
JeffieJansson Nov 26, 2025
6e0cfe3
modified meta tags and linked fonts and clean code
JeffieJansson Nov 26, 2025
1855134
added see more button file and import to journey and projects file a…
JeffieJansson Nov 27, 2025
7396a1c
added svg icon for see more button
JeffieJansson Nov 27, 2025
07b9948
small style touch ups
JeffieJansson Nov 27, 2025
7e775b8
added one more project to display
JeffieJansson Nov 27, 2025
67bba33
modified tech stack to match figma
JeffieJansson Nov 27, 2025
28b08d3
added new images
JeffieJansson Nov 27, 2025
7af2b39
added more images and styles to try and match figma design
JeffieJansson Nov 27, 2025
78ed347
removed old img and add netlify link and figma link to pull request file
JeffieJansson Nov 27, 2025
7890ad3
added favicon folder and code to index.html
JeffieJansson Nov 27, 2025
09acf25
added new icon and updated html and deleted old icon zip file
JeffieJansson Nov 27, 2025
40ac6a9
changed styling so all buttons match figma
JeffieJansson Nov 27, 2025
1e90395
added focus color to globalstyles and skip link to app.jsx for acces…
JeffieJansson Nov 27, 2025
56ab075
added style to make sure title is one row in tablet view
JeffieJansson Nov 27, 2025
9fec479
Rename favicon to jj-favicon
JeffieJansson Nov 28, 2025
b0baaa0
fixed hero img placing
JeffieJansson Nov 28, 2025
0a3d2e6
small changes for clean and dry code
JeffieJansson Nov 28, 2025
711bf24
working on fixing layout and images
JeffieJansson Nov 28, 2025
641d515
small fixes for colors
JeffieJansson Nov 28, 2025
046a55a
change images to improve image delivery
JeffieJansson Nov 30, 2025
c60f536
modified sizes of images and layout for all device views to match figma
JeffieJansson Nov 30, 2025
1a45fcb
final touches and clean the code
JeffieJansson Nov 30, 2025
53705db
delete extra spacing
JeffieJansson Nov 30, 2025
8a0188e
added new project
JeffieJansson Dec 11, 2025
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
32 changes: 31 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,31 @@
# Portfolio
# Developer Portfolio – Jennifer Jansson

This is my personal developer portfolio built with **React** and **styled-components**.
It showcases my projects, technical skills, articles, and ways to get in contact with me.
The design follows a provided Figma layout and the site is fully responsive.

## Features

- Hero section with introduction and portrait
- Tech overview
- Featured projects with links to GitHub and live demos
- Skills section (Code, Toolbox, Upcoming, More)
- My Words / thoughts about code
- Contact section with social links
- Accessible and responsive across all screen sizes from 320-1600px
- Skip link and focus states for improved accessibility

## Tech Stack

- React
- Vite
- JavaScript (ES6)
- styled-components
- JSON data for dynamic content

## Getting Started

```bash
npm install
npm run dev
```
39 changes: 36 additions & 3 deletions index.html
Original file line number Diff line number Diff line change
@@ -1,10 +1,43 @@
<!doctype html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<link rel="icon" type="image/svg+xml" href="/jj-favicon.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Portfolio</title>
<meta
name="description"
content="Jennifer Jansson — Frontend Developer & Digital Analytics Specialist portfolio"
/>
<meta property="og:title" content="Jennifer Jansson — Frontend Developer" />
<meta
property="og:description"
content="Projects in React, JavaScript, accessibility, and data-driven UX."
/>
<meta property="og:type" content="website" />
<meta property="og:image" content="/portrait.png" />
<meta property="og:url" content="https://jeffies-portfolio.netlify.app/" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />

<link
rel="preload"
as="style"
href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap"
/>
<link
rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap"
media="print"
onload="this.media='all'"
/>
<noscript>
<link
rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap"
/>
</noscript>

<title>Jennifer Jansson — Frontend Developer Portfolio</title>
</head>
<body>
<div id="root"></div>
Expand Down
6 changes: 4 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,15 @@
},
"dependencies": {
"react": "^19.0.0",
"react-dom": "^19.0.0"
"react-dom": "^19.0.0",
"styled-components": "^6.1.19"
},
"devDependencies": {
"@eslint/js": "^9.21.0",
"@types/react": "^19.0.10",
"@types/react-dom": "^19.0.4",
"@vitejs/plugin-react": "^4.3.4",
"@vitejs/plugin-react": "^4.7.0",
"babel-plugin-styled-components": "^2.1.4",
"eslint": "^9.21.0",
"eslint-plugin-react-hooks": "^5.1.0",
"eslint-plugin-react-refresh": "^0.4.19",
Expand Down
Binary file added public/accessibility.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/arts.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/business.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/footer.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/happy.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions public/jj-favicon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/mic.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/pitch.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/portrait.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/post2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/react-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/recipe.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/weather.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/web-accessibility.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 5 additions & 1 deletion pull_request_template.md
Original file line number Diff line number Diff line change
@@ -1 +1,5 @@
Please include a link to your Figma design and a Netlify link.
Please include a link to your Figma design and a Netlify link.

https://jeffies-portfolio.netlify.app/

https://www.figma.com/design/QV6stSlcpaPdDl2fojewHc/Figma-designs-for-students--Copy-?node-id=1791-1386&m=dev
43 changes: 39 additions & 4 deletions src/App.jsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,43 @@
// src/App.jsx
import { GlobalStyle } from "./components/GlobalStyles";
import { Hero } from "./sections/Hero";
import { Tech } from "./sections/Tech";
import { Projects } from "./sections/Projects";
import { Skills } from "./sections/Skills";
import { Journey } from "./sections/Journey";
import { Contact } from "./sections/Contact";
import styled from "styled-components";

const SkipLink = styled.a`
position: absolute;
left: -999px;
top: 16px;
padding: 8px 16px;
background: #000;
color: #fff;
border-radius: 8px;
z-index: 1000;
&:focus-visible {
left: 16px;
}
`;

export const App = () => {
return (
<>
<h1>Portfolio</h1>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Voluptatem, laborum! Maxime animi nostrum facilis distinctio neque labore consectetur beatae eum ipsum excepturi voluptatum, dicta repellendus incidunt fugiat, consequatur rem aperiam.</p>
<GlobalStyle />
<SkipLink href="#main-content">Skip to main content</SkipLink>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice that you use a skip to main content link!

<div className="app">
<Hero />
<main id="main-content">
<Tech />
<Projects />
<Skills />
<Journey />
<Contact />
</main>
</div>
</>
)
}
);
};
29 changes: 29 additions & 0 deletions src/components/Button.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
// src/components/Button.jsx
import styled from "styled-components";

// Styled button component for links
const Button = styled.a`
display: flex;
width: 303px;
height: 48px;
gap: 16px;
padding: 0 16px;
align-items: center;
border-radius: 12px;
text-decoration: none;
font-weight: 500;
color: #fff;
background: #000;
font-size: 18px;
cursor: pointer;
transition: background 0.2s, transform 0.1s;

&:hover {
background: #fff;
color: #000;
outline: 2px solid #000;
}

`;

export default Button;
21 changes: 21 additions & 0 deletions src/components/Card.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import styled from "styled-components";

// (HTML, CSS, API…)
export const TagsRow = styled.div`
display: flex;
align-items: flex-start;
gap: 4px;
align-self: stretch;
`;

// single tag
export const Tag = styled.span`
display: flex;
width: 142px;
padding: 2px 6px;
justify-content: center;
align-items: flex-start;
border-radius: 4px;
border: 1px solid #000;
background: #FFF;
`;
89 changes: 89 additions & 0 deletions src/components/GlobalStyles.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
// src/styles/GlobalStyle.jsx
import { createGlobalStyle } from "styled-components";

export const GlobalStyle = createGlobalStyle`
*, *::before, *::after {
box-sizing: border-box;
}

html, body {
margin: 0;
padding: 0;
}

html {
scroll-behavior: smooth;
}

body {
min-height: 100vh;
font-family: "Poppins", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
background-color: #ffffff;
color: #000000;
line-height: 1.5;
-webkit-font-smoothing: antialiased;
overflow-x: hidden;

}

#root {
min-height: 100vh;
}

img {
max-width: 100%;
height: auto;
display: block;
}

a {
color: inherit;
text-decoration: none;
}

a:hover {
text-decoration: underline;
}

a:focus-visible,
button:focus-visible {
outline: 3px solid #e6229bff;
outline-offset: 4px;
}

ul, ol {
margin: 0;
padding: 0;
list-style: none;
}

button {
font-family: inherit;
border: none;
background: none;
cursor: pointer;
}

h1, h2, h3, h4, h5, h6 {
margin: 0;
font-weight: 700;
letter-spacing: -0.03em;
}

h1 {
font-size: clamp(3rem, 6vw, 4.5rem);
}

h2 {
font-size: clamp(2rem, 4vw, 3rem);
}

h3 {
font-size: clamp(1.3rem, 2.4vw, 1.8rem);
}

p {
margin: 0;
}

`;
Loading