├── src
├── styles
│ ├── Home.css
│ ├── SocialLinks.css
│ ├── app.css
│ ├── Form.css
│ ├── InfoMe.css
│ ├── clouds.css
│ ├── Navbar.css
│ ├── Menu.css
│ ├── Passion.css
│ ├── WhoMe.css
│ ├── Projects.css
│ ├── Skills.css
│ ├── Cards.css
│ ├── Header.css
│ └── Works.css
├── images
│ ├── about.jpg
│ ├── contact.jpg
│ ├── covid.PNG
│ ├── mapty.PNG
│ ├── myphoto.jpg
│ ├── recipe.PNG
│ ├── reile.jpg
│ ├── space.PNG
│ ├── unicef.PNG
│ ├── bookstore.PNG
│ ├── budgeapp.PNG
│ ├── budgetapp.PNG
│ ├── pokemons.PNG
│ ├── project4.jpg
│ ├── project5.jpg
│ ├── project6.jpg
│ ├── project7.jpg
│ ├── project8.jpg
│ ├── projecta2.jpg
│ ├── projects.jpg
│ ├── projects3.jpg
│ ├── covidproject.PNG
│ ├── skills
│ │ ├── css1.png
│ │ ├── html1.png
│ │ ├── jest.png
│ │ ├── rails.png
│ │ ├── ruby1.png
│ │ ├── postgres.png
│ │ ├── Untitled design.png
│ │ ├── tailwindcss.svg
│ │ ├── js.svg
│ │ ├── react.svg
│ │ ├── sass.svg
│ │ ├── design-skills.svg
│ │ ├── book-open.svg
│ │ └── tech.svg
│ ├── rentmedesktop.PNG
│ ├── spacetraveler.PNG
│ ├── exit.svg
│ ├── moon.svg
│ ├── moon (1).svg
│ ├── cloud2.svg
│ ├── cloud3.svg
│ ├── b_cloud01.svg
│ ├── b_cloud02.svg
│ ├── cloud1.svg
│ ├── moonlight.svg
│ └── star.svg
├── index.js
├── component
│ ├── cloud2.js
│ ├── cloud3.js
│ ├── SocialLinks.js
│ ├── Home.js
│ ├── FormContact.js
│ ├── Form.js
│ ├── Projects.js
│ ├── Cards.js
│ ├── InfoMe.js
│ ├── WhoMe.js
│ ├── Works.js
│ ├── ContactMe.js
│ ├── Menu.js
│ ├── About.js
│ ├── Navbar.js
│ ├── Header.js
│ ├── Passion.js
│ ├── porjectsData.js
│ └── Skills.js
└── app.js
├── .babelrc
├── .gitignore
├── .stylelintrc.json
├── .eslintrc.json
├── MIT.md
├── package.json
├── .github
└── workflows
│ └── linters.yml
├── public
└── index.html
└── README.md
/src/styles/Home.css:
--------------------------------------------------------------------------------
1 |
2 | .wrap {
3 | scroll-behavior: smooth;
4 | }
5 |
--------------------------------------------------------------------------------
/src/images/about.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Reem-lab/portfolio/HEAD/src/images/about.jpg
--------------------------------------------------------------------------------
/src/images/contact.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Reem-lab/portfolio/HEAD/src/images/contact.jpg
--------------------------------------------------------------------------------
/src/images/covid.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Reem-lab/portfolio/HEAD/src/images/covid.PNG
--------------------------------------------------------------------------------
/src/images/mapty.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Reem-lab/portfolio/HEAD/src/images/mapty.PNG
--------------------------------------------------------------------------------
/src/images/myphoto.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Reem-lab/portfolio/HEAD/src/images/myphoto.jpg
--------------------------------------------------------------------------------
/src/images/recipe.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Reem-lab/portfolio/HEAD/src/images/recipe.PNG
--------------------------------------------------------------------------------
/src/images/reile.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Reem-lab/portfolio/HEAD/src/images/reile.jpg
--------------------------------------------------------------------------------
/src/images/space.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Reem-lab/portfolio/HEAD/src/images/space.PNG
--------------------------------------------------------------------------------
/src/images/unicef.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Reem-lab/portfolio/HEAD/src/images/unicef.PNG
--------------------------------------------------------------------------------
/src/images/bookstore.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Reem-lab/portfolio/HEAD/src/images/bookstore.PNG
--------------------------------------------------------------------------------
/src/images/budgeapp.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Reem-lab/portfolio/HEAD/src/images/budgeapp.PNG
--------------------------------------------------------------------------------
/src/images/budgetapp.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Reem-lab/portfolio/HEAD/src/images/budgetapp.PNG
--------------------------------------------------------------------------------
/src/images/pokemons.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Reem-lab/portfolio/HEAD/src/images/pokemons.PNG
--------------------------------------------------------------------------------
/src/images/project4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Reem-lab/portfolio/HEAD/src/images/project4.jpg
--------------------------------------------------------------------------------
/src/images/project5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Reem-lab/portfolio/HEAD/src/images/project5.jpg
--------------------------------------------------------------------------------
/src/images/project6.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Reem-lab/portfolio/HEAD/src/images/project6.jpg
--------------------------------------------------------------------------------
/src/images/project7.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Reem-lab/portfolio/HEAD/src/images/project7.jpg
--------------------------------------------------------------------------------
/src/images/project8.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Reem-lab/portfolio/HEAD/src/images/project8.jpg
--------------------------------------------------------------------------------
/src/images/projecta2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Reem-lab/portfolio/HEAD/src/images/projecta2.jpg
--------------------------------------------------------------------------------
/src/images/projects.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Reem-lab/portfolio/HEAD/src/images/projects.jpg
--------------------------------------------------------------------------------
/src/images/projects3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Reem-lab/portfolio/HEAD/src/images/projects3.jpg
--------------------------------------------------------------------------------
/src/images/covidproject.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Reem-lab/portfolio/HEAD/src/images/covidproject.PNG
--------------------------------------------------------------------------------
/src/images/skills/css1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Reem-lab/portfolio/HEAD/src/images/skills/css1.png
--------------------------------------------------------------------------------
/src/images/skills/html1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Reem-lab/portfolio/HEAD/src/images/skills/html1.png
--------------------------------------------------------------------------------
/src/images/skills/jest.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Reem-lab/portfolio/HEAD/src/images/skills/jest.png
--------------------------------------------------------------------------------
/src/images/skills/rails.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Reem-lab/portfolio/HEAD/src/images/skills/rails.png
--------------------------------------------------------------------------------
/src/images/skills/ruby1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Reem-lab/portfolio/HEAD/src/images/skills/ruby1.png
--------------------------------------------------------------------------------
/src/images/rentmedesktop.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Reem-lab/portfolio/HEAD/src/images/rentmedesktop.PNG
--------------------------------------------------------------------------------
/src/images/spacetraveler.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Reem-lab/portfolio/HEAD/src/images/spacetraveler.PNG
--------------------------------------------------------------------------------
/src/images/skills/postgres.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Reem-lab/portfolio/HEAD/src/images/skills/postgres.png
--------------------------------------------------------------------------------
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | "@babel/preset-react"
4 | ],
5 | "plugins": ["@babel/plugin-syntax-jsx"]
6 | }
--------------------------------------------------------------------------------
/src/images/skills/Untitled design.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Reem-lab/portfolio/HEAD/src/images/skills/Untitled design.png
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import App from './app';
4 |
5 | ReactDOM.render(
6 |
7 |
8 | ,
9 | document.getElementById('root'),
10 | );
11 |
--------------------------------------------------------------------------------
/src/component/cloud2.js:
--------------------------------------------------------------------------------
1 | import img1 from '../images/b_cloud02.svg';
2 | import img2 from '../images/b_cloud01.svg';
3 | import '../styles/clouds.css';
4 |
5 | const Cloud2 = () => (
6 |
7 |
8 |
9 |
10 | );
11 |
12 | export default Cloud2;
13 |
--------------------------------------------------------------------------------
/src/styles/SocialLinks.css:
--------------------------------------------------------------------------------
1 | .social-links--site {
2 | display: flex;
3 | gap: 15px;
4 | justify-content: center;
5 | align-items: center;
6 | }
7 |
8 | .anchor-link {
9 | color: #fff;
10 | }
11 |
12 | .anchor-link:hover {
13 | color: #b3b3b3;
14 | }
15 |
16 | .social-icon--footer {
17 | width: 50px;
18 | height: 35px;
19 | margin-right: 5px;
20 | cursor: pointer;
21 | }
22 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 |
8 | # testing
9 | /coverage
10 |
11 | # production
12 | /build
13 |
14 | # misc
15 | .DS_Store
16 | .env.local
17 | .env.development.local
18 | .env.test.local
19 | .env.production.local
20 |
21 | npm-debug.log*
22 | yarn-debug.log*
23 | yarn-error.log*
24 |
--------------------------------------------------------------------------------
/src/component/cloud3.js:
--------------------------------------------------------------------------------
1 | import img3 from '../images/cloud1.svg';
2 | import img4 from '../images/cloud2.svg';
3 | import img5 from '../images/cloud3.svg';
4 | import '../styles/clouds.css';
5 |
6 | const Cloud3 = () => (
7 |
12 | );
13 |
14 | export default Cloud3;
15 |
--------------------------------------------------------------------------------
/.stylelintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": ["stylelint-config-standard"],
3 | "plugins": ["stylelint-scss", "stylelint-csstree-validator"],
4 | "rules": {
5 | "at-rule-no-unknown": [
6 | true,
7 | {
8 | "ignoreAtRules": ["tailwind", "apply", "variants", "responsive", "screen"]
9 | }
10 | ],
11 | "scss/at-rule-no-unknown": [
12 | true,
13 | {
14 | "ignoreAtRules": ["tailwind", "apply", "variants", "responsive", "screen"]
15 | }
16 | ],
17 | "csstree/validator": true
18 | },
19 | "ignoreFiles": ["build/**", "dist/**", "**/reset*.css", "**/bootstrap*.css", "**/*.js", "**/*.jsx"]
20 | }
--------------------------------------------------------------------------------
/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "env": {
3 | "browser": true,
4 | "es6": true,
5 | "jest": true
6 | },
7 | "parser": "@babel/eslint-parser",
8 | "parserOptions": {
9 | "ecmaFeatures": {
10 | "jsx": true
11 | },
12 | "ecmaVersion": 2018,
13 | "sourceType": "module"
14 | },
15 | "extends": ["airbnb", "plugin:react/recommended"],
16 | "plugins": ["react"],
17 | "rules": {
18 | "react/jsx-filename-extension": ["warn", { "extensions": [".js", ".jsx"] }],
19 | "react/react-in-jsx-scope": "off",
20 | "import/no-unresolved": "off",
21 | "no-shadow": "off"
22 | },
23 | "ignorePatterns": [
24 | "dist/",
25 | "build/"
26 | ]
27 | }
--------------------------------------------------------------------------------
/src/images/exit.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/src/styles/app.css:
--------------------------------------------------------------------------------
1 | @import url('https://fonts.googleapis.com/css2?family=Abril+Fatface&family=Montserrat:ital,wght@0,100;0,200;0,300;0,500;0,600;0,700;0,800;0,900;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Poppins:wght@400;600;800;900&family=Roboto+Mono:wght@400;600;700&display=swap');
2 |
3 | * {
4 | margin: 0;
5 | padding: 0;
6 | box-sizing: border-box;
7 | }
8 |
9 | body {
10 | font-family: 'Montserrat', sans-serif;
11 | background-color: #040f1b;
12 | color: #fff;
13 | }
14 |
15 | .app {
16 | background: url('../images/moonlight.svg') no-repeat fixed 100%;
17 | background-position-x: 399px;
18 | background-position-y: -320px;
19 | position: relative;
20 | overflow: hidden;
21 | }
22 |
--------------------------------------------------------------------------------
/src/app.js:
--------------------------------------------------------------------------------
1 | import { Routes, Route, BrowserRouter as Router } from 'react-router-dom';
2 | // import Navbar from './component/Navbar';
3 | import Home from './component/Home';
4 | import './styles/app.css';
5 | import Projects from './component/Projects';
6 | import InfoMe from './component/InfoMe';
7 | import Form from './component/Form';
8 |
9 | function App() {
10 | return (
11 |
12 |
13 | {/* */}
14 |
15 | } />
16 | } />
17 | } />
18 | } />
19 |
20 |
21 |
22 | );
23 | }
24 |
25 | export default App;
26 |
--------------------------------------------------------------------------------
/src/component/SocialLinks.js:
--------------------------------------------------------------------------------
1 | import { AiOutlineTwitter, AiFillGithub, AiFillLinkedin } from 'react-icons/ai';
2 | import { FaAngellist } from 'react-icons/fa';
3 | import '../styles/SocialLinks.css';
4 |
5 | const SocialLinks = () => (
6 |
20 | );
21 |
22 | export default SocialLinks;
23 |
--------------------------------------------------------------------------------
/MIT.md:
--------------------------------------------------------------------------------
1 | ## Copyright 2022, [Reem Janina]
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this [portfolio] and associated documentation files, to deal in the [portfolio] without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the [portfolio], and to permit persons to whom the [portfolio] is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the [portfolio].
6 |
7 | THE [portfolio] IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE [portfolio] OR THE USE OR OTHER DEALINGS IN THE [portfolio].
--------------------------------------------------------------------------------
/src/images/moon.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/images/moon (1).svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/component/Home.js:
--------------------------------------------------------------------------------
1 | // // import Fullpage,{ FullPageSections,
2 | // FullpageSection, FullpageNavigation } from '@ap.cx/react-fullpage';
3 | import Header from './Header';
4 | import Works from './Works';
5 | import Navbar from './Navbar';
6 | import '../styles/Home.css';
7 | import About from './About';
8 | import ContactMe from './ContactMe';
9 |
10 | const Home = () => (
11 |
12 | {/*
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | */}
30 |
31 |
32 |
33 |
34 |
35 |
36 | );
37 |
38 | export default Home;
39 |
--------------------------------------------------------------------------------
/src/component/FormContact.js:
--------------------------------------------------------------------------------
1 | import '../styles/Form.css';
2 |
3 | const FormContact = () => (
4 |
5 |
6 |
7 |
01
8 |
Let's Contact ✉
9 |
10 |
24 |
25 | );
26 |
27 | export default FormContact;
28 |
--------------------------------------------------------------------------------
/src/styles/Form.css:
--------------------------------------------------------------------------------
1 | .contact-form--wrap {
2 | width: 100vw;
3 | height: 100vh;
4 | background-color: #fff;
5 | }
6 |
7 | .form {
8 | display: flex;
9 | flex-direction: column;
10 | justify-content: flex-start;
11 | align-items: flex-end;
12 | gap: 30px;
13 | margin-right: 200px;
14 | margin-bottom: 50px;
15 | }
16 |
17 | .input {
18 | width: 400px;
19 | height: 35px;
20 | padding: 18px;
21 |
22 | /* outline: none; */
23 |
24 | /* outline-color: #e64551; */
25 | border-radius: 5px;
26 | box-shadow: 1px 5px 6px 3px rgb(213, 218, 223);
27 | }
28 |
29 | .input:hover {
30 | border: 1px solid #e64551;
31 | }
32 |
33 | .input-text-area {
34 | height: 150px;
35 | }
36 |
37 | .left-side--form {
38 | display: flex;
39 | gap: 25px;
40 | justify-content: flex-start;
41 | align-items: flex-start;
42 | padding-top: 120px;
43 | }
44 |
45 | @media only screen and (max-width: 420px) {
46 | .form {
47 | margin-right: 39px;
48 | }
49 |
50 | .number-text--form {
51 | font-size: 30px;
52 | }
53 |
54 | .question-contact {
55 | font-size: 30px;
56 | letter-spacing: 0.1px;
57 | padding-bottom: 50px;
58 | }
59 |
60 | .input {
61 | width: 300px;
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/src/styles/InfoMe.css:
--------------------------------------------------------------------------------
1 | .info-projects--text {
2 | font-size: 6.3rem;
3 | font-weight: 700;
4 | max-width: 80%;
5 | letter-spacing: 9px;
6 | }
7 |
8 | .side--text-about {
9 | position: relative;
10 | left: -135px;
11 | top: 95px;
12 | }
13 |
14 | .form-side--text {
15 | padding-top: 50px;
16 | }
17 |
18 | @media only screen and (max-width: 420px) {
19 | .works-projects {
20 | display: flex;
21 | flex-direction: column-reverse;
22 | }
23 |
24 | .image2 {
25 | width: 416px;
26 | height: 456px;
27 | position: relative;
28 | left: -10px;
29 | top: -54px;
30 | border-radius: 1px;
31 | }
32 |
33 | .info-projects--text {
34 | font-size: 45px;
35 | left: 164px;
36 | top: -196px;
37 | position: absolute;
38 | z-index: 1;
39 | }
40 |
41 | .backArrow {
42 | position: absolute;
43 | z-index: 2;
44 | top: -620px;
45 | width: 86px;
46 | height: 50px;
47 | }
48 |
49 | .span-text--mobile {
50 | position: relative;
51 | left: 164px;
52 | top: -172px;
53 | font-size: 14px;
54 | line-height: 1.5;
55 | }
56 |
57 | .lines--about {
58 | position: relative;
59 | left: -88px;
60 | top: -120px;
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/src/component/Form.js:
--------------------------------------------------------------------------------
1 | /* eslint-disable jsx-a11y/click-events-have-key-events */
2 | import { FaArrowLeft } from 'react-icons/fa';
3 | import '../styles/InfoMe.css';
4 | import contact from '../images/contact.jpg';
5 | import FormContact from './FormContact';
6 | import SocialLinks from './SocialLinks';
7 |
8 | const Form = () => (
9 | <>
10 |
11 |
12 | {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions */}
13 |
window.location.replace('/#contact')} className="arrow">
14 |
15 |
16 |
17 |
Get In Touch
18 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | >
31 | );
32 |
33 | export default Form;
34 |
--------------------------------------------------------------------------------
/src/component/Projects.js:
--------------------------------------------------------------------------------
1 | /* eslint-disable jsx-a11y/click-events-have-key-events */
2 | import { FaArrowLeft } from 'react-icons/fa';
3 | import projects from '../images/project7.jpg';
4 | import '../styles/Projects.css';
5 | import Cards from './Cards';
6 |
7 | const Projects = () => (
8 | <>
9 |
10 |
11 | {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}
12 | {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions */}
13 |
window.location.replace('/#works')} className="arrow">
14 |
15 |
16 |
17 |
MOST HIGHLIGHTED PROJECTS
18 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | >
30 | );
31 |
32 | export default Projects;
33 |
--------------------------------------------------------------------------------
/src/component/Cards.js:
--------------------------------------------------------------------------------
1 | import Data from './porjectsData';
2 | import '../styles/Cards.css';
3 |
4 | const Cards = () => (
5 | <>
6 |
7 |
MY WORK
8 |
9 | A small gallery of recent projects chosen by me.
10 | For more projects, please
11 | {' '}
12 | visit
13 | {' '}
14 | my Github
15 |
16 |
17 |
18 | { Data.map((card) => (
19 |
20 |
21 |
22 |
{card.name}
23 |
24 |
25 |
{card.description}
26 |
30 |
31 |
32 | ))}
33 |
34 | >
35 | );
36 |
37 | export default Cards;
38 |
--------------------------------------------------------------------------------
/src/styles/clouds.css:
--------------------------------------------------------------------------------
1 | .clouds {
2 | position: relative;
3 | }
4 |
5 | .cloud2 {
6 | position: relative;
7 | left: 210px;
8 | top: -47px;
9 | }
10 |
11 | .cloud1 {
12 | position: relative;
13 | left: 120px;
14 | top: -185px;
15 | }
16 |
17 | .cloud3 {
18 | position: relative;
19 | left: 355px;
20 | top: -355px;
21 | }
22 |
23 | .cloud4 {
24 | position: relative;
25 | left: 260px;
26 | top: -280px;
27 | }
28 |
29 | .cloud5 {
30 | position: relative;
31 | left: -218px;
32 | top: -550px;
33 | }
34 |
35 | @media only screen and (max-width: 420px) {
36 | .cloud2 {
37 | position: relative;
38 | left: -480px;
39 | top: 88px;
40 | width: 260px;
41 | height: 106px;
42 | }
43 |
44 | .cloud1 {
45 | position: relative;
46 | left: -287px;
47 | top: -79px;
48 | width: 260px;
49 | height: 106px;
50 | }
51 |
52 | .cloud3 {
53 | position: relative;
54 | left: -101px;
55 | top: -175px;
56 | width: 260px;
57 | height: 106px;
58 | }
59 |
60 | .cloud4 {
61 | position: relative;
62 | left: -140px;
63 | top: -140px;
64 | width: 260px;
65 | height: 106px;
66 | }
67 |
68 | .cloud5 {
69 | position: relative;
70 | left: -380px;
71 | top: -271px;
72 | width: 260px;
73 | height: 106px;
74 | }
75 | }
76 |
--------------------------------------------------------------------------------
/src/component/InfoMe.js:
--------------------------------------------------------------------------------
1 | /* eslint-disable jsx-a11y/click-events-have-key-events */
2 | import { FaArrowLeft } from 'react-icons/fa';
3 | import about from '../images/about.jpg';
4 | import '../styles/InfoMe.css';
5 | import WhoMe from './WhoMe';
6 |
7 | const InfoMe = () => (
8 | <>
9 |
10 |
11 | {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}
12 | {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions */}
13 |
window.location.replace('/#about')} className="arrow">
14 |
15 |
16 |
17 |
About ME
18 |
22 |
I love Design, Technology, and React.
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | >
31 | );
32 |
33 | export default InfoMe;
34 |
--------------------------------------------------------------------------------
/src/styles/Navbar.css:
--------------------------------------------------------------------------------
1 | .nav {
2 | display: flex;
3 | justify-content: space-between;
4 | align-items: center;
5 | padding: 30px;
6 |
7 | /* position: fixed; */
8 |
9 | /* top: 0; */
10 |
11 | /* width: 100%; */
12 |
13 | /* z-index: 900; */
14 | }
15 |
16 | .name-nav {
17 | font-size: 20px;
18 | letter-spacing: 2px;
19 | word-spacing: 6px;
20 | }
21 |
22 | .name-nav-link {
23 | color: #fff;
24 | text-decoration: none;
25 | }
26 |
27 | .wrap-social {
28 | display: flex;
29 | width: 200px;
30 | justify-content: space-evenly;
31 | align-items: center;
32 | z-index: 500;
33 | }
34 |
35 | .anchor-link {
36 | color: #fff;
37 | }
38 |
39 | .social-icon {
40 | width: 30px;
41 | height: 27px;
42 | margin-right: 5px;
43 | cursor: pointer;
44 | }
45 |
46 | .menu-bar {
47 | width: 50px;
48 | height: 50px;
49 | filter: brightness(-15);
50 | cursor: pointer;
51 | }
52 |
53 | @media only screen and (max-width: 420px) {
54 | .nav {
55 | position: absolute;
56 | gap: 26px;
57 | padding: 20px;
58 | }
59 |
60 | .social-icon {
61 | display: none;
62 | }
63 |
64 | .menu-bar {
65 | margin-left: 140px;
66 | width: 38px;
67 | height: 41px;
68 | }
69 |
70 | .name-nav {
71 | font-size: 16px;
72 |
73 | /* letter-spacing: 0.5px; */
74 | }
75 | }
76 |
--------------------------------------------------------------------------------
/src/styles/Menu.css:
--------------------------------------------------------------------------------
1 | .main {
2 | width: 100vw;
3 | height: 100vh;
4 | background-image: linear-gradient(to right, rgb(56, 36, 87), rgb(155, 47, 117), rgb(250, 76, 92));
5 | display: flex;
6 | justify-content: center;
7 |
8 | /* overflow-x: hidden; */
9 |
10 | /* position: fixed; */
11 | top: 0;
12 | left: 0;
13 | z-index: 800;
14 | }
15 |
16 | .ul-menu {
17 | display: flex;
18 | flex-direction: column;
19 | align-items: center;
20 | gap: 1.2rem;
21 | list-style: none;
22 | margin-top: 1.2rem;
23 | }
24 |
25 | .anchor {
26 | text-decoration: none;
27 | color: #fff;
28 | font-size: 6.3rem;
29 | font-weight: 600;
30 | }
31 |
32 | .anchor:hover {
33 | text-decoration: line-through;
34 | transition: 3s;
35 | }
36 |
37 | @keyframes animate {
38 | 0% {
39 | transform: translateX(-100%);
40 | left: 0%;
41 | }
42 |
43 | 100% {
44 | transform: translateX(0);
45 | left: 100%;
46 | }
47 | }
48 |
49 | .exit-div {
50 | position: relative;
51 | right: -140px;
52 | }
53 |
54 | .exit {
55 | width: 6.2rem;
56 | cursor: pointer;
57 | }
58 |
59 | @media only screen and (max-width: 420px) {
60 | .ul-menu {
61 | margin-top: 137px;
62 | }
63 |
64 | .anchor {
65 | font-size: 50px;
66 | font-weight: 600;
67 | }
68 |
69 | .exit {
70 | width: 50px;
71 | }
72 | }
73 |
--------------------------------------------------------------------------------
/src/component/WhoMe.js:
--------------------------------------------------------------------------------
1 | import Passion from './Passion';
2 | import Skills from './Skills';
3 | import photoMe from '../images/myphoto.jpg';
4 | import '../styles/WhoMe.css';
5 |
6 | const WhoMe = () => (
7 | <>
8 |
9 |
10 |
11 |
01
12 |
WHO I AM
13 |
14 |
15 |
REEM JANINA
16 |
I am 22 years old and I am in love with pair programming and delivering UI projects with React and the magical back-end framework ROR, I am a diligent recent college graduate (Bachelor's degree in Computer Science ) from Suez canal university. Throughout my academic career, I was consistently praised as proactive by my professors and peers. While working on academic and extracurricular projects, I developed proven communication, leadership, and planning skills.
17 | {/* eslint-disable-next-line jsx-a11y/img-redundant-alt */}
18 |
19 |
20 |
21 |
22 |
23 |
24 | >
25 | );
26 |
27 | export default WhoMe;
28 |
--------------------------------------------------------------------------------
/src/images/skills/tailwindcss.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
9 |
10 |
11 |
12 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/src/images/skills/js.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/component/Works.js:
--------------------------------------------------------------------------------
1 | // import { useHistory } from 'react-router-dom';
2 | import { Link } from 'react-router-dom';
3 | import { Animate } from 'react-simple-animate';
4 | import '../styles/Works.css';
5 | import projects from '../images/project7.jpg';
6 |
7 | const Works = () => (
8 |
9 |
10 |
21 | MOST HIGHLIGHTED PROJECTS
22 |
26 |
27 | Show me more
28 |
29 |
30 |
31 |
32 |
44 |
45 | 01
46 |
47 |
48 |
49 |
50 | );
51 |
52 | export default Works;
53 |
--------------------------------------------------------------------------------
/src/component/ContactMe.js:
--------------------------------------------------------------------------------
1 | // import { useHistory } from 'react-router-dom';
2 | import { Link } from 'react-router-dom';
3 | import { Animate } from 'react-simple-animate';
4 | import '../styles/Works.css';
5 | import contact from '../images/contact.jpg';
6 |
7 | const ContactMe = () => (
8 |
51 | );
52 |
53 | export default ContactMe;
54 |
--------------------------------------------------------------------------------
/src/component/Menu.js:
--------------------------------------------------------------------------------
1 | /* eslint-disable jsx-a11y/no-noninteractive-element-interactions */
2 | import { Animate } from 'react-simple-animate';
3 | import PropTypes from 'prop-types';
4 | import exit from '../images/exit.svg';
5 | import '../styles/Menu.css';
6 |
7 | // eslint-disable-next-line react/prop-types
8 | const Menu = ({ onclick }) => (
9 |
20 |
21 |
22 |
28 |
29 |
30 | {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}
31 | {/* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */}
32 | {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}
33 |
34 |
35 |
36 |
37 | );
38 |
39 | Menu.prototype = {
40 | onclick: PropTypes.func,
41 | };
42 |
43 | export default Menu;
44 |
--------------------------------------------------------------------------------
/src/styles/Passion.css:
--------------------------------------------------------------------------------
1 | .left-side--passion {
2 | display: flex;
3 | gap: 25px;
4 | justify-content: flex-start;
5 | align-items: flex-start;
6 | background-color: #fff;
7 | }
8 |
9 | .question {
10 | color: #020b16;
11 | font-size: 2.3rem;
12 | font-weight: 500;
13 | letter-spacing: 4px;
14 | }
15 |
16 | .horizontal--line-black {
17 | width: 50px;
18 | height: 2px;
19 | border-radius: 2px;
20 | background-color: #020b16;
21 | position: relative;
22 | top: 25px;
23 | }
24 |
25 | .passion {
26 | width: 100%;
27 | height: 100%;
28 | display: -ms-grid;
29 | display: grid;
30 | grid-template-rows: repeat(1, 1fr);
31 | background-color: #fff;
32 | padding-top: 70px;
33 | }
34 |
35 | .passion-info {
36 | display: flex;
37 | justify-content: center;
38 | text-align: center;
39 | align-items: baseline;
40 | gap: 40px;
41 | margin: 50px;
42 | }
43 |
44 | .design {
45 | padding-bottom: 30px;
46 | }
47 |
48 | .react-icon {
49 | width: 170px;
50 | height: 170px;
51 | border-radius: 130px;
52 | padding-top: 12px;
53 | padding-bottom: 12px;
54 | background-image: linear-gradient(to right, rgb(56, 36, 87), rgb(155, 47, 117), rgb(250, 76, 92));
55 | }
56 |
57 | .design-paragraph {
58 | color: #9ca0a3;
59 | width: 350px;
60 | text-align: left;
61 | padding-top: 12px;
62 | line-height: 1.7;
63 | }
64 |
65 | .heading-ternary {
66 | color: #072142;
67 | padding-top: 15px;
68 | }
69 |
70 | @media only screen and (max-width: 420px) {
71 | .passion-info {
72 | display: flex;
73 | flex-direction: column;
74 | margin: 20px;
75 | justify-content: center;
76 | align-items: center;
77 | }
78 | }
79 |
--------------------------------------------------------------------------------
/src/component/About.js:
--------------------------------------------------------------------------------
1 | // import { useHistory } from 'react-router-dom';
2 | import { Link } from 'react-router-dom';
3 | import { Animate } from 'react-simple-animate';
4 | import '../styles/Works.css';
5 | import about from '../images/about.jpg';
6 |
7 | const About = () => (
8 |
9 |
10 |
21 | About me
22 |
26 |
27 | I love Design, Technology, and React.
28 |
29 | Show me more
30 |
31 |
32 |
33 |
34 |
35 |
47 |
48 | 02
49 |
50 |
51 |
52 | );
53 |
54 | export default About;
55 |
--------------------------------------------------------------------------------
/src/component/Navbar.js:
--------------------------------------------------------------------------------
1 | /* eslint-disable jsx-a11y/no-static-element-interactions */
2 | import { useState } from 'react';
3 | import { AiOutlineTwitter, AiFillGithub, AiFillLinkedin } from 'react-icons/ai';
4 | import { HiOutlineMenuAlt4 } from 'react-icons/hi';
5 | import Menu from './Menu';
6 | import '../styles/Navbar.css';
7 |
8 | const Navbar = () => {
9 | const [menu, setmenu] = useState(false);
10 | const showMenu = () => {
11 | setmenu(true);
12 | };
13 |
14 | const onClickHandler = () => {
15 | setmenu(false);
16 | };
17 |
18 | return (
19 | <>
20 | {menu && }
21 |
22 |
25 |
26 |
37 | {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}
38 |
39 |
40 |
41 |
42 |
43 | >
44 | );
45 | };
46 |
47 | export default Navbar;
48 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "portfolio",
3 | "version": "0.1.0",
4 | "private": true,
5 | "dependencies": {
6 | "@ap.cx/react-fullpage": "^0.2.0",
7 | "@testing-library/jest-dom": "^5.16.4",
8 | "@testing-library/react": "^13.3.0",
9 | "@testing-library/user-event": "^13.5.0",
10 | "prop-types": "^15.8.1",
11 | "react": "^18.2.0",
12 | "react-dom": "^18.2.0",
13 | "react-icons": "^4.4.0",
14 | "react-router-dom": "^6.3.0",
15 | "react-scripts": "5.0.1",
16 | "react-simple-animate": "^3.5.0",
17 | "web-vitals": "^2.1.4"
18 | },
19 | "scripts": {
20 | "start": "react-scripts start",
21 | "build": "react-scripts build",
22 | "test": "react-scripts test",
23 | "eject": "react-scripts eject"
24 | },
25 | "eslintConfig": {
26 | "extends": [
27 | "react-app",
28 | "react-app/jest"
29 | ]
30 | },
31 | "browserslist": {
32 | "production": [
33 | ">0.2%",
34 | "not dead",
35 | "not op_mini all"
36 | ],
37 | "development": [
38 | "last 1 chrome version",
39 | "last 1 firefox version",
40 | "last 1 safari version"
41 | ]
42 | },
43 | "devDependencies": {
44 | "@babel/core": "^7.18.9",
45 | "@babel/eslint-parser": "^7.18.9",
46 | "@babel/plugin-syntax-jsx": "^7.18.6",
47 | "@babel/preset-react": "^7.18.6",
48 | "eslint": "^7.32.0",
49 | "eslint-config-airbnb": "^18.2.1",
50 | "eslint-plugin-import": "^2.26.0",
51 | "eslint-plugin-jsx-a11y": "^6.6.0",
52 | "eslint-plugin-react": "^7.30.1",
53 | "eslint-plugin-react-hooks": "^4.6.0",
54 | "stylelint": "^13.13.1",
55 | "stylelint-config-standard": "^21.0.0",
56 | "stylelint-csstree-validator": "^1.9.0",
57 | "stylelint-scss": "^3.21.0"
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/src/component/Header.js:
--------------------------------------------------------------------------------
1 | import { Animate } from 'react-simple-animate';
2 | import '../styles/Header.css';
3 | import Cloud2 from './cloud2';
4 | import Cloud3 from './cloud3';
5 | import img6 from '../images/moon.svg';
6 |
7 | const Header = () => (
8 |
57 | );
58 |
59 | export default Header;
60 |
--------------------------------------------------------------------------------
/src/styles/WhoMe.css:
--------------------------------------------------------------------------------
1 | .information {
2 | width: 100%;
3 | height: 100%;
4 | display: -ms-grid;
5 | display: grid;
6 | grid-template-columns: repeat(2, 1fr);
7 | background-color: #fff;
8 | padding: 120px 0;
9 | }
10 |
11 | .left-side--div {
12 | display: flex;
13 | gap: 25px;
14 | justify-content: flex-start;
15 | align-items: flex-start;
16 | }
17 |
18 | .right-side--div {
19 | display: flex;
20 | flex-direction: column;
21 | gap: 30px;
22 | }
23 |
24 | .question {
25 | color: #020b16;
26 | font-size: 2.3rem;
27 | font-weight: 500;
28 | letter-spacing: 4px;
29 | }
30 |
31 | .number-text--about {
32 | font-family: 'Abril Fatface', cursive;
33 | font-size: 2.3rem;
34 | font-weight: 600;
35 | color: #ff4d5a;
36 | }
37 |
38 | .heading-secondary {
39 | color: #020b16;
40 | font-weight: 600;
41 | font-size: 1.2rem;
42 | }
43 |
44 | .horizontal--line-black {
45 | width: 50px;
46 | height: 2px;
47 | border-radius: 2px;
48 | background-color: #020b16;
49 | position: relative;
50 | top: 25px;
51 | }
52 |
53 | .small-summary {
54 | color: #9ca0a3;
55 | line-height: 1.8;
56 | }
57 |
58 | .my-photo {
59 | width: 450px;
60 | height: auto;
61 | margin: 12px;
62 | box-shadow: 1px 35px 60px 30px rgb(213, 218, 223);
63 | }
64 |
65 | @media only screen and (max-width: 420px) {
66 | .information {
67 | display: -ms-grid;
68 | display: grid;
69 | grid-template-columns: repeat(1, 1fr);
70 | }
71 |
72 | .number-text--about {
73 | font-size: 34px;
74 | }
75 |
76 | .question {
77 | font-size: 35px;
78 | }
79 |
80 | .heading-secondary {
81 | font-size: 17px;
82 | padding-top: 35px;
83 | padding-left: 41px;
84 | }
85 |
86 | .small-summary {
87 | width: 408px;
88 | padding-left: 41px;
89 | padding-right: 48px;
90 | }
91 |
92 | .my-photo {
93 | width: 316px;
94 | height: 316px;
95 | margin-left: 20px;
96 | }
97 | }
98 |
--------------------------------------------------------------------------------
/src/styles/Projects.css:
--------------------------------------------------------------------------------
1 | .works-projects {
2 | width: 100vw;
3 | height: 100vh;
4 | display: flex;
5 | justify-content: center;
6 | background-color: #020b16;
7 | }
8 |
9 | .image2 {
10 | width: 120%;
11 | height: 100%;
12 | position: relative;
13 | top: 1px;
14 | right: 120px;
15 | border-radius: 12px;
16 | }
17 |
18 | .side--text-projects {
19 | background-color: #020b16;
20 | display: flex;
21 | flex-direction: column;
22 | align-items: center;
23 | justify-content: center;
24 | }
25 |
26 | .projects--text {
27 | font-size: 4.4rem;
28 | font-weight: 700;
29 | max-width: 50%;
30 | position: relative;
31 | left: -209px;
32 | }
33 |
34 | .lines {
35 | display: flex;
36 | flex-direction: column;
37 | gap: 15px;
38 | align-self: flex-start;
39 | width: 140px;
40 | margin: 35px;
41 |
42 | /* position: relative;
43 | left: 160px; */
44 | }
45 |
46 | .horizontal--line-red {
47 | width: 85px;
48 | height: 5px;
49 | border-radius: 2px;
50 | background-color: #ff4d5a;
51 | align-self: center;
52 | }
53 |
54 | .second {
55 | align-self: flex-end;
56 | }
57 |
58 | .arrow {
59 | width: 300px;
60 | position: relative;
61 | left: -4px;
62 | top: 25px;
63 | cursor: pointer;
64 | }
65 |
66 | .backArrow {
67 | color: #fff;
68 | width: 150px;
69 | height: 80px;
70 | }
71 |
72 | @media only screen and (max-width: 420px) {
73 | .works-projects {
74 | display: flex;
75 | flex-direction: column-reverse;
76 | }
77 |
78 | .image2 {
79 | width: 451px;
80 | height: 508px;
81 | position: relative;
82 | left: -10px;
83 | top: -53px;
84 | border-radius: 1px;
85 | }
86 |
87 | .projects--text {
88 | font-size: 30px;
89 | left: 22px;
90 | top: 408px;
91 | position: absolute;
92 | z-index: 1;
93 | }
94 |
95 | .backArrow {
96 | position: absolute;
97 | z-index: 2;
98 | top: -640px;
99 | width: 86px;
100 | height: 62px;
101 | }
102 | }
103 |
--------------------------------------------------------------------------------
/.github/workflows/linters.yml:
--------------------------------------------------------------------------------
1 | name: Linters
2 |
3 | on: pull_request
4 |
5 | env:
6 | FORCE_COLOR: 1
7 |
8 | jobs:
9 | eslint:
10 | name: ESLint
11 | runs-on: ubuntu-18.04
12 | steps:
13 | - uses: actions/checkout@v2
14 | - uses: actions/setup-node@v1
15 | with:
16 | node-version: "12.x"
17 | - name: Setup ESLint
18 | run: |
19 | npm install --save-dev eslint@7.x eslint-config-airbnb@18.x eslint-plugin-import@2.x eslint-plugin-jsx-a11y@6.x eslint-plugin-react@7.x eslint-plugin-react-hooks@4.x @babel/eslint-parser@7.x @babel/core@7.x @babel/plugin-syntax-jsx@7.x @babel/preset-env@7.x @babel/preset-react@7.x
20 | [ -f .eslintrc.json ] || wget https://raw.githubusercontent.com/microverseinc/linters-config/master/react-redux/.eslintrc.json
21 | [ -f .babelrc ] || wget https://raw.githubusercontent.com/microverseinc/linters-config/master/react-redux/.babelrc
22 | - name: ESLint Report
23 | run: npx eslint .
24 | stylelint:
25 | name: Stylelint
26 | runs-on: ubuntu-18.04
27 | steps:
28 | - uses: actions/checkout@v2
29 | - uses: actions/setup-node@v1
30 | with:
31 | node-version: "12.x"
32 | - name: Setup Stylelint
33 | run: |
34 | npm install --save-dev stylelint@13.x stylelint-scss@3.x stylelint-config-standard@21.x stylelint-csstree-validator@1.x
35 | [ -f .stylelintrc.json ] || wget https://raw.githubusercontent.com/microverseinc/linters-config/master/react-redux/.stylelintrc.json
36 | - name: Stylelint Report
37 | run: npx stylelint "**/*.{css,scss}"
38 | nodechecker:
39 | name: node_modules checker
40 | runs-on: ubuntu-18.04
41 | steps:
42 | - uses: actions/checkout@v2
43 | - name: Check node_modules existence
44 | run: |
45 | if [ -d "node_modules/" ]; then echo -e "\e[1;31mThe node_modules/ folder was pushed to the repo. Please remove it from the GitHub repository and try again."; echo -e "\e[1;32mYou can set up a .gitignore file with this folder included on it to prevent this from happening in the future." && exit 1; fi
--------------------------------------------------------------------------------
/src/component/Passion.js:
--------------------------------------------------------------------------------
1 | import { FaReact } from 'react-icons/fa';
2 | import design from '../images/skills/design-skills.svg';
3 | import tech from '../images/skills/tech.svg';
4 | import '../styles/Passion.css';
5 |
6 | const Passion = () => (
7 | <>
8 |
9 |
10 |
02
11 |
PASSION
12 |
13 |
14 |
15 |
16 |
17 |
DESIGN
18 |
I think design is like a "magic wand". If a service or product is magic to solve a problem, it is the role of design to act as an intermediary for the user to master it. We strive every day to create a "magic wand" that matches the user.
19 |
20 |
21 |
22 |
TECHNOLOGY
23 |
Technology has the power to change the lives of the world and individuals, as the phrase "well-developed science and technology is indistinguishable from magic." I want to be a person who can always catch up with the latest technology and respond to changes. I think it is the mission of designers as well as engineers to promote innovation.
24 |
25 |
26 |
27 |
REACT
28 |
Being a part of the JavaScript language, using React spawns lots of advantages. Products built with React are simple to scale, a single language used on the server/client/mobile side of things grants outstanding productivity, there are workflow patterns for convenient teamwork, UI code is readable and maintainable, and more.
29 |
30 |
31 |
32 | >
33 | );
34 |
35 | export default Passion;
36 |
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
12 |
13 |
17 |
18 |
19 |
26 |
27 |
28 |
37 | REEM JANINA
38 |
39 |
40 | You need to enable JavaScript to run this app.
41 |
42 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 |
4 | # Portfolio
5 |
6 | > A Simple Software Engineer Portfolio App Made with Vanilla React, HTML5, and CSS3. The Project Contains a Showcase with Information About Me, some of My Works (Apps), and a Contact Form for Communication any feedback is welcome.
7 |
8 |
9 | ## Video Demo 🎥
10 |
11 |
12 |
13 |
14 | https://user-images.githubusercontent.com/58553711/180063763-b1672e44-0a5e-46f1-a130-a57f5e72b53c.mp4
15 |
16 |
17 |
18 |
19 | ## Live Demo 🌐
20 |
21 | [](https://immense-wave-24332.herokuapp.com/)
22 |
23 | [Netlify](https://reemme.netlify.app/)
24 |
25 | [](https://app.netlify.com/sites/reemme/deploys)
26 |
27 | ## Built With
28 |
29 | - Languages: _**HTML, CSS, JAVASCRIPT, REACT**_
30 | - Technologies used: _**GIT, GITHUB, LINTERS**_
31 |
32 | ## Additional tools
33 | - Google Gonts
34 | - React icons
35 | - Make tints and shades
36 | - React simple animation
37 |
38 | ## Getting Started
39 |
40 | ### Clone this repository
41 |
42 | ```bash
43 | $ git clone https://github.com/Reem-lab/portfolio.git
44 | $ cd portfolio
45 |
46 | $ npm install
47 |
48 | ```
49 | ### To run the code
50 | ```bash
51 | $ npm start
52 | ```
53 |
54 |
55 | ### Deployment -->
56 |
57 | ## Authors
58 |
59 |
60 |
61 | 👤 **Reem**
62 |
63 | Platform | Badge |
64 | --- | --- |
65 | **GitHub** | [@Reem-lab](https://github.com/Reem-lab)
66 | **Twitter** | [Rem79940127](https://twitter.com/Rem79940127)
67 | **LinkdIn** | [reem-janina](https://www.linkedin.com/in/reem-janina-ab74ab21a/)
68 |
69 |
70 | ## 🤝 Contributing
71 |
72 | Contributions, issues, and feature requests are welcome!
73 |
74 | Feel free to check the [issues page](../../issues).
75 |
76 | ## Show your support
77 |
78 | Give a ⭐️ if you like this project!
79 |
80 | ## Acknowledgments
81 |
82 | - Original design inspired from [Kuon yagi](https://dribbble.com/kuon_yagi)
83 | - Hat tip to anyone whose code was used
84 | - Inspiration
85 | - etc
86 |
87 | ## 📝 License
88 |
89 | This project is [MIT](/MIT.md) licensed.
90 |
--------------------------------------------------------------------------------
/src/images/cloud2.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/images/cloud3.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/images/b_cloud01.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/images/b_cloud02.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/styles/Skills.css:
--------------------------------------------------------------------------------
1 | .skills {
2 | width: 100%;
3 | height: 100%;
4 | display: -ms-grid;
5 | display: grid;
6 | grid-template-columns: repeat(2, 1fr);
7 | background-color: #fff;
8 | padding-top: 70px;
9 | }
10 |
11 | .left-side--skills {
12 | display: flex;
13 | gap: 25px;
14 | justify-content: flex-start;
15 | align-items: flex-start;
16 | background-color: #fff;
17 | }
18 |
19 | .question {
20 | color: #020b16;
21 | font-size: 2.3rem;
22 | font-weight: 500;
23 | letter-spacing: 4px;
24 | }
25 |
26 | .horizontal--line-black {
27 | width: 50px;
28 | height: 2px;
29 | border-radius: 2px;
30 | background-color: #020b16;
31 | position: relative;
32 | top: 25px;
33 | }
34 |
35 | .number-text--about {
36 | font-family: 'Abril Fatface', cursive;
37 | font-size: 2.3rem;
38 | font-weight: 600;
39 | color: #ff4d5a;
40 | }
41 |
42 | .skills-left--side {
43 | display: flex;
44 | flex-direction: column;
45 | align-items: center;
46 | gap: 55px;
47 | padding-bottom: 80px;
48 | }
49 |
50 | .skill-percent {
51 | display: flex;
52 | gap: 20px;
53 | }
54 |
55 | .skill-paragraph {
56 | color: #020b16;
57 | font-size: 1.2rem;
58 | font-weight: 700;
59 | letter-spacing: 2px;
60 | }
61 |
62 | .span-years {
63 | color: #9ca0a3;
64 | font-size: 0.8rem;
65 | font-weight: 400;
66 | letter-spacing: 2px;
67 | }
68 |
69 | .top-precent {
70 | display: flex;
71 | justify-content: space-between;
72 | }
73 |
74 | .percent-frame {
75 | width: 500px;
76 | }
77 |
78 | .line-skills--percent {
79 | width: 500px;
80 | height: 15px;
81 | border-radius: 9px;
82 | position: relative;
83 | box-shadow: 1px 5px 6px 3px rgb(213, 218, 223);
84 | }
85 |
86 | .progress-line {
87 | width: 90%;
88 | height: 100%;
89 | border-radius: 10px;
90 | position: absolute;
91 | background-image: linear-gradient(to right, rgb(56, 36, 87), rgb(155, 47, 117), rgb(250, 76, 92));
92 | }
93 |
94 | .percent {
95 | color: #ff4d5a;
96 | }
97 |
98 | .footer {
99 | width: 100vw;
100 | height: 350px;
101 | display: flex;
102 | justify-content: center;
103 | align-items: center;
104 | background-image: linear-gradient(to right, rgb(56, 36, 87), rgb(155, 47, 117), rgb(250, 76, 92));
105 | }
106 |
107 | .mail {
108 | color: #fff;
109 | text-decoration: none;
110 | font-size: 2.3rem;
111 | font-weight: 500;
112 | letter-spacing: 5px;
113 | }
114 |
115 | .mail:hover {
116 | color: #c3c8cc;
117 | }
118 |
119 | @media only screen and (max-width: 420px) {
120 | .skills {
121 | display: -ms-grid;
122 | display: grid;
123 | grid-template-columns: repeat(1, 1fr);
124 | align-items: center;
125 | }
126 |
127 | .skills-left--side {
128 | padding: 15px;
129 | margin-top: 5pc;
130 | }
131 |
132 | .line-skills--percent {
133 | width: 270px;
134 | }
135 |
136 | .mail {
137 | font-size: 19px;
138 | }
139 | }
140 |
--------------------------------------------------------------------------------
/src/images/cloud1.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/styles/Cards.css:
--------------------------------------------------------------------------------
1 | .card-container {
2 | padding: 3.6rem;
3 | display: -ms-grid;
4 | display: grid;
5 | gap: 50px;
6 | grid-template-columns: repeat(3, 1fr);
7 | grid-template-rows: repeat(3, 1fr);
8 | background-color: #020b16;
9 | }
10 |
11 | .card {
12 | width: 100%;
13 | height: 110%;
14 | display: flex;
15 | flex-direction: column;
16 | justify-content: center;
17 | align-items: center;
18 | }
19 |
20 | .face {
21 | display: flex;
22 | flex-direction: column;
23 | align-items: center;
24 | justify-content: center;
25 | width: 280px;
26 | height: 215px;
27 | cursor: pointer;
28 | transition: 0.5s;
29 | border-radius: 5px;
30 | }
31 |
32 | .card .face.face1 {
33 | position: relative;
34 | display: flex;
35 | justify-content: center;
36 | align-items: center;
37 | z-index: 1;
38 | transform: translateY(100px);
39 | background-color: #07203f;
40 | }
41 |
42 | .card:hover .face.face1 {
43 | background: #ff4d5a;
44 | transform: translateY(0);
45 | }
46 |
47 | .card .face.face2 {
48 | position: relative;
49 | display: flex;
50 | justify-content: center;
51 | align-items: center;
52 | transform: translateY(-100px);
53 | background: rgb(255, 255, 255);
54 | padding: 20px;
55 | }
56 |
57 | .card:hover .face.face2 {
58 | transform: translateY(0);
59 | }
60 |
61 | .links-div {
62 | display: flex;
63 | gap: 12px;
64 | padding-top: 12px;
65 | }
66 |
67 | .link {
68 | width: 120px;
69 | padding: 6px;
70 | color: #fff;
71 | background-color: #ff4d5a;
72 | text-align: center;
73 | text-decoration: none;
74 | border-radius: 6px;
75 | }
76 |
77 | .link:hover,
78 | .link:active {
79 | background-color: #ff717b;
80 | }
81 |
82 | .description {
83 | width: 280px;
84 | color: #020b16;
85 | font-weight: 600;
86 | padding: 0 7px;
87 | }
88 |
89 | .image-project {
90 | width: 250px;
91 | }
92 |
93 | .project-name {
94 | width: 250px;
95 | color: #fff;
96 | font-weight: 700;
97 | font-size: 1.2rem;
98 | text-align: center;
99 | padding-top: 9px;
100 | padding-bottom: 5px;
101 | }
102 |
103 | .header-works {
104 | background-color: #020b16;
105 |
106 | /* padding: 12px; */
107 | padding-top: 70px;
108 | padding-left: 50px;
109 | padding-bottom: 10px;
110 | }
111 |
112 | .heading-two {
113 | font-size: 4.4rem;
114 | font-weight: 700;
115 | }
116 |
117 | .summary {
118 | font-size: 1.2rem;
119 | font-weight: 500;
120 | }
121 |
122 | @media only screen and (max-width: 420px) {
123 | .header-works {
124 | position: relative;
125 |
126 | /* top: -168px; */
127 | padding-left: 20px;
128 | padding-top: 60px;
129 | padding-bottom: 0;
130 | background-color: #020b16;
131 | }
132 |
133 | .heading-two {
134 | font-size: 56px;
135 | }
136 |
137 | .card-container {
138 | display: flex;
139 | flex-direction: column;
140 | gap: 5px;
141 | background-color: #020b16;
142 | }
143 |
144 | .summary {
145 | font-size: 17px;
146 | }
147 | }
148 |
--------------------------------------------------------------------------------
/src/styles/Header.css:
--------------------------------------------------------------------------------
1 | .intro {
2 | background-image: url('../images/star.svg');
3 | background-position-x: 390px;
4 | background-position-y: -220px;
5 | position: relative;
6 | height: 100vh;
7 | scroll-snap-align: start;
8 | display: flex;
9 | }
10 |
11 | .horizontal-line {
12 | width: 50px;
13 | height: 5px;
14 | color: #ffff;
15 | }
16 |
17 | .info {
18 | display: flex;
19 | flex-direction: column;
20 | align-items: center;
21 | position: relative;
22 | left: 110px;
23 | margin-top: 2rem;
24 | }
25 |
26 | .porfolio {
27 | position: relative;
28 | top: -1270px;
29 | left: 315px;
30 | color: #ff4d5a;
31 | font-size: 4.1rem;
32 | font-weight: 800;
33 | letter-spacing: 3px;
34 | }
35 |
36 | .moon {
37 | position: relative;
38 | left: 411px;
39 | top: -235px;
40 | }
41 |
42 | .name {
43 | font-size: 6.3rem;
44 | font-weight: 600;
45 | letter-spacing: 15px;
46 | }
47 |
48 | .last-name {
49 | font-size: 4.1rem;
50 | font-weight: 600;
51 | letter-spacing: 3px;
52 | align-self: flex-start;
53 | }
54 |
55 | .lines {
56 | display: flex;
57 | flex-direction: column;
58 | gap: 15px;
59 | align-self: flex-start;
60 | width: 140px;
61 | margin: 35px;
62 | }
63 |
64 | .horizontal-line-red {
65 | width: 85px;
66 | height: 5px;
67 | border-radius: 2px;
68 | background-color: #ff4d5a;
69 | }
70 |
71 | .second {
72 | align-self: flex-end;
73 | }
74 |
75 | .job-title {
76 | align-self: flex-start;
77 | letter-spacing: 2px;
78 | font-weight: 600;
79 | }
80 |
81 | @media only screen and (max-width: 480px) {
82 | .intro {
83 | background: url('../images/moonlight.svg') no-repeat fixed 100%;
84 | background-position-x: -88px;
85 | background-size: 562px;
86 | background-position-y: -42px;
87 | position: relative;
88 | overflow: hidden;
89 | }
90 |
91 | .info {
92 | width: 100vw;
93 | height: 100vh;
94 | flex-direction: column-reverse;
95 | }
96 |
97 | .moon {
98 | position: relative;
99 | left: -377px;
100 | top: -130px;
101 | width: 305px;
102 | }
103 |
104 | .porfolio {
105 | position: relative;
106 | left: -406px;
107 | top: -410px;
108 | font-size: 27px;
109 | font-weight: 800;
110 | }
111 |
112 | .first-last--name {
113 | position: relative;
114 | top: -125px;
115 | }
116 |
117 | .lines {
118 | position: relative;
119 | left: -160px;
120 | top: -70px;
121 | }
122 |
123 | .moon-clouds {
124 | position: relative;
125 | left: 164px;
126 | }
127 |
128 | .name {
129 | font-size: 33px;
130 | position: relative;
131 | left: -143px;
132 | top: 76px;
133 | letter-spacing: 4.5px;
134 | }
135 |
136 | .last-name {
137 | font-size: 32px;
138 | position: relative;
139 | left: -145px;
140 | top: 72px;
141 | letter-spacing: 4.5px;
142 | }
143 |
144 | .job-title {
145 | position: relative;
146 | left: -144px;
147 | top: -85px;
148 | font-size: 12px;
149 | }
150 | }
151 |
--------------------------------------------------------------------------------
/src/images/skills/react.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
9 |
10 |
11 |
12 |
14 |
15 |
16 |
17 |
18 |
19 |
41 |
42 |
--------------------------------------------------------------------------------
/src/component/porjectsData.js:
--------------------------------------------------------------------------------
1 | import rent from '../images/rentmedesktop.PNG';
2 | import covid from '../images/covid.PNG';
3 | import space from '../images/space.PNG';
4 | import recipe from '../images/recipe.PNG';
5 | import pokemon from '../images/pokemons.PNG';
6 | import budget from '../images/budgetapp.PNG';
7 | import book from '../images/bookstore.PNG';
8 | import mapty from '../images/mapty.PNG';
9 | import unicef from '../images/unicef.PNG';
10 |
11 | const Data = [
12 | {
13 | image: rent,
14 | name: 'Rent Me',
15 | liveLink: 'https://rent-me-capstone-project.netlify.app/login',
16 | sourceLink: 'https://github.com/Reem-lab/house-booking-back-end',
17 | description: 'This Project is based on an app to book an appointment to rent a house, You can see different types of houses and you can see the details for each house then you can reserve an appointment to see it',
18 | },
19 | {
20 | image: covid,
21 | name: 'Covid19-Tracker',
22 | liveLink: 'https://covid19-tracker9.netlify.app/',
23 | sourceLink: 'https://github.com/Reem-lab/covid-tracker',
24 | description: 'This project is talking about covid cases in all countries in the world and also displays all the information details to each country with all covid cases or recovered cases.',
25 | },
26 | {
27 | image: space,
28 | name: "Space Travellers' Hup",
29 | liveLink: 'https://62201e415f9b8d1761cf3e80--space-travels-hub.netlify.app/',
30 | sourceLink: 'https://github.com/Reem-lab/space-travelers-hub',
31 | description: 'Web application that allows users to book rockets and join selected space missions using real live data from the SpaceX API',
32 | },
33 | {
34 | image: recipe,
35 | name: 'Recipe App',
36 | liveLink: 'https://powerful-mountain-66036.herokuapp.com/',
37 | sourceLink: 'https://github.com/Reem-lab/Recipe-app',
38 | description: 'The Recipe app keeps track of all your recipes, ingredients, and inventory. It will allow you to save ingredients, keep track of what you have, create recipes, and generate a shopping list.',
39 | },
40 | {
41 | image: pokemon,
42 | name: 'Pokemon API',
43 | liveLink: 'https://nicolaswg.github.io/Capstone_Pokemon_Api/',
44 | sourceLink: 'https://github.com/Reem-lab/Capstone_Pokemon_Api',
45 | description: 'This project is JavaScript web application The topic about POKEMONS so we get pokemons from API and display it with the ability to Add your insights in any pokemon you want.',
46 | },
47 | {
48 | image: budget,
49 | name: 'Budget App',
50 | liveLink: 'https://agile-atoll-37898.herokuapp.com/',
51 | sourceLink: 'https://github.com/Reem-lab/budget-app',
52 | description: 'Budget app is about building a mobile web application where you can manage your budget: you have a list of transactions associated with a category, so that you can see how much money you spent and on what',
53 | },
54 | {
55 | image: unicef,
56 | name: "Unicefs'conference",
57 | liveLink: 'https://reem-lab.github.io/CapstoneProject/',
58 | sourceLink: 'https://github.com/Reem-lab/CapstoneProject',
59 | description: 'This project is Myfirst Capstone project Like real world Projects, It is about a conference for charitable organization to help needy people, orphans and refugees made with html,css and javascript',
60 | },
61 | {
62 | image: book,
63 | name: 'Book store',
64 | liveLink: 'https://book-store-reactjs.netlify.app/',
65 | sourceLink: 'https://github.com/Reem-lab/book-store-reactjs',
66 | description: 'This is a simple react project that Stores the books, When the user enter any book with the category will be updated in the API and you can get someof books from API based on the category.',
67 | },
68 | {
69 | image: mapty,
70 | name: 'Mapty',
71 | liveLink: 'https://maptyapplic.netlify.app/',
72 | sourceLink: 'https://github.com/Reem-lab/Mapty-App',
73 | description: 'This Application made with vanilla JavaScript, This app contain a map and you can press on anywhere then specify what you want to do there running or cycling',
74 | },
75 | ];
76 | export default Data;
77 |
--------------------------------------------------------------------------------
/src/styles/Works.css:
--------------------------------------------------------------------------------
1 |
2 | @import url('https://fonts.googleapis.com/css2?family=Abril+Fatface&family=Inter:wght@400;500;700&family=Montserrat:ital,wght@0,100;0,200;0,300;0,500;0,600;0,700;0,800;0,900;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=PT+Sans+Narrow:wght@400;700&family=Poppins:wght@400;600;800;900&family=Roboto+Mono:wght@400;600;700&family=Rubik:wght@400;500;600;700&display=swap');
3 |
4 | .works {
5 | width: 100vw;
6 | height: 100vh;
7 | display: flex;
8 | justify-content: center;
9 | background-image: url('../images/star.svg');
10 | background-position-x: 390px;
11 | background-position-y: -220px;
12 | position: relative;
13 | }
14 |
15 | .side-text {
16 | display: flex;
17 | flex-direction: column;
18 | align-items: flex-start;
19 | gap: 1.2rem;
20 | margin: 8rem;
21 | z-index: 10;
22 | position: relative;
23 | top: -15px;
24 | }
25 |
26 | .show-more {
27 | display: inline-block;
28 | padding-top: 80px;
29 | }
30 |
31 | .projects-text {
32 | font-size: 4.4rem;
33 | font-weight: 700;
34 | max-width: 80%;
35 | letter-spacing: 2px;
36 | }
37 |
38 | .number-text {
39 | font-family: 'Abril Fatface', cursive;
40 | font-size: 8.2rem;
41 | font-weight: 700;
42 | top: -85px;
43 | left: 370px;
44 | position: relative;
45 | }
46 |
47 | .number-text--two {
48 | font-family: 'Abril Fatface', cursive;
49 | font-size: 8.2rem;
50 | font-weight: 700;
51 | top: -85px;
52 | left: 520px;
53 | position: relative;
54 | }
55 |
56 | .btn {
57 | padding: 1rem;
58 | background-color: #ff4d5a;
59 | color: #fff;
60 | font-size: 1.2rem;
61 | font-weight: 400;
62 | border-radius: 40px;
63 | border: 1px solid #ff4d5a;
64 | cursor: pointer;
65 | text-decoration: none;
66 | }
67 |
68 | .btn:hover {
69 | background-color: #e64551;
70 | }
71 |
72 | .image {
73 | width: 125%;
74 |
75 | /* height: 20%; */
76 | position: relative;
77 | top: 110px;
78 | right: 250px;
79 | border-radius: 15px;
80 | z-index: -10;
81 | }
82 |
83 | .side--text-projects {
84 | background-color: #020b16;
85 | }
86 |
87 | .about-image {
88 | width: 730px;
89 | height: 500px;
90 | position: relative;
91 | top: 80px;
92 | right: 90px;
93 | border-radius: 15px;
94 | z-index: -10;
95 | }
96 |
97 | .projects-text-about {
98 | font-size: 5.5rem;
99 | font-weight: 700;
100 | max-width: 80%;
101 | letter-spacing: 9px;
102 | }
103 |
104 | .span-text {
105 | font-size: 1.6rem;
106 | font-weight: 500;
107 | word-spacing: 5px;
108 | line-height: 40px;
109 | padding-bottom: 15px;
110 | }
111 |
112 | .about-span--link {
113 | display: flex;
114 | flex-direction: column;
115 | align-items: flex-start;
116 | gap: 10px;
117 | }
118 |
119 | .lines--about {
120 | display: flex;
121 | flex-direction: column;
122 | gap: 15px;
123 | align-self: flex-start;
124 | width: 140px;
125 | margin: 20px;
126 | }
127 |
128 | @media only screen and (max-width: 420px) {
129 | .works {
130 | display: flex;
131 | flex-direction: column-reverse;
132 | align-items: center;
133 | width: 100vw;
134 | height: 100vh;
135 | background: url('../images/moonlight.svg') no-repeat fixed 100%;
136 | background-position-x: -88px;
137 | background-size: 562px;
138 | background-position-y: -42px;
139 | position: relative;
140 | overflow: hidden;
141 | }
142 |
143 | .image {
144 | width: 327px;
145 | height: 379px;
146 | position: relative;
147 | left: -10px;
148 | top: 208px;
149 | border-radius: 1px;
150 | }
151 |
152 | .projects-text {
153 | font-size: 30px;
154 | position: relative;
155 | left: -62px;
156 | top: -158px;
157 | }
158 |
159 | .lines-works {
160 | position: relative;
161 | left: -88px;
162 | top: -177px;
163 | gap: 5px;
164 | }
165 |
166 | .horizontal-line-red {
167 | height: 2px;
168 | }
169 |
170 | .show-more {
171 | position: relative;
172 | top: -173px;
173 | padding: 11px;
174 | }
175 |
176 | .about-image {
177 | width: 327px;
178 | height: 410px;
179 | position: relative;
180 | left: -10px;
181 | top: 252px;
182 | border-radius: 1px;
183 | }
184 |
185 | .projects-text-about {
186 | font-size: 47px;
187 | position: relative;
188 | left: -87px;
189 | top: -111px;
190 | letter-spacing: 1px;
191 | }
192 |
193 | .span-text {
194 | position: relative;
195 | left: -88px;
196 | top: 29px;
197 | font-size: 12px;
198 | line-height: 1.5;
199 | }
200 |
201 | .about-span--link {
202 | position: relative;
203 | top: -160px;
204 | }
205 |
206 | .about-btn {
207 | position: relative;
208 | top: 10px;
209 | padding: 11px;
210 | }
211 |
212 | .contact-btn {
213 | position: relative;
214 | top: 35px;
215 | padding: 11px;
216 | }
217 |
218 | .lines--about {
219 | position: relative;
220 | left: -88px;
221 | top: -120px;
222 | }
223 | }
224 |
--------------------------------------------------------------------------------
/src/images/moonlight.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/src/images/star.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/images/skills/sass.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/src/images/skills/design-skills.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/src/component/Skills.js:
--------------------------------------------------------------------------------
1 | // import html from '../images/skills/html.svg';
2 | import tailwind from '../images/skills/tailwindcss.svg';
3 | import js from '../images/skills/js.svg';
4 | import react from '../images/skills/react.svg';
5 | import sass from '../images/skills/sass.svg';
6 | import html from '../images/skills/html1.png';
7 | import css from '../images/skills/css1.png';
8 | import ruby from '../images/skills/ruby1.png';
9 | import postgres from '../images/skills/postgres.png';
10 | import rails from '../images/skills/rails.png';
11 | import jest from '../images/skills/jest.png';
12 |
13 | import '../styles/Skills.css';
14 |
15 | const Skills = () => (
16 | <>
17 |
18 |
19 |
03
20 |
SKILL SET
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | HTML
31 | 1 YEAR
32 |
33 | {/*
90% */}
34 |
35 |
36 | {' '}
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 | CSS
48 | 1 YEAR
49 |
50 | {/*
90% */}
51 |
52 |
53 | {' '}
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 | JAVASCRIPT
65 | 1 YEAR
66 |
67 | {/*
90% */}
68 |
69 |
70 | {' '}
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 | REACT
82 | 1 YEAR
83 |
84 | {/*
90% */}
85 |
86 |
87 | {' '}
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 | TAILWIND
99 | 1 YEAR
100 |
101 | {/*
90% */}
102 |
103 |
104 | {' '}
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 | RUBY
120 | 1 YEAR
121 |
122 | {/*
90% */}
123 |
124 |
125 | {' '}
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 | RUBY ON RAILS
137 | 1 YEAR
138 |
139 | {/*
90% */}
140 |
141 |
142 | {' '}
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 | POSTRGESQL
154 | 1 YEAR
155 |
156 | {/*
90% */}
157 |
158 |
159 | {' '}
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 | JEST
171 | 1 YEAR
172 |
173 | {/*
90% */}
174 |
175 |
176 | {' '}
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 | SASS
188 | 1 YEAR
189 |
190 | {/*
90% */}
191 |
192 |
193 | {' '}
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
205 | >
206 | );
207 |
208 | export default Skills;
209 |
--------------------------------------------------------------------------------
/src/images/skills/book-open.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/src/images/skills/tech.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------