├── .eslintrc.json ├── .github └── FUNDING.yml ├── .gitignore ├── README.md ├── Software-Developer-Portfolio-Screenshot.png ├── components ├── Contact │ └── index.jsx ├── Experiences │ ├── data │ │ └── data.js │ └── index.jsx ├── Footer │ └── index.jsx ├── Hero │ └── index.jsx ├── Navbar │ └── index.jsx └── Works │ ├── data │ └── data.js │ └── index.jsx ├── next.config.js ├── package-lock.json ├── package.json ├── pages ├── _app.js ├── api │ └── hello.js └── index.js ├── postcss.config.js ├── public ├── favicon.ico └── vercel.svg ├── styles ├── Navbar.module.css └── globals.css └── tailwind.config.js /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # Supported funding model platforms 2 | 3 | github: boularbahsmail 4 | -------------------------------------------------------------------------------- /.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 | # next.js 12 | /.next/ 13 | /out/ 14 | 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | *.pem 21 | 22 | # debug 23 | npm-debug.log* 24 | yarn-debug.log* 25 | yarn-error.log* 26 | .pnpm-debug.log* 27 | 28 | # local env files 29 | .env*.local 30 | 31 | # vercel 32 | .vercel 33 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Software Developer Portfolio :100: 2 | A responsive and open source portfolio for software developers (Next.js & Tailwind CSS version). 3 | 4 | 5 | 6 | [![All Contributors](https://img.shields.io/badge/all_contributors-1-orange.svg?style=flat-square)](#contributors-) 7 | 8 | 9 | 10 | ## Website Screenshot 11 | Software-Developer-Portfolio-Screenshot 12 | 13 | ## Install Dependencies: 14 | First install the needed dependencies: 15 | ```bash 16 | npm install 17 | ``` 18 | 19 | ## Getting Started 20 | Run the development server: 21 | 22 | ```bash 23 | npm run dev 24 | # or 25 | yarn dev 26 | ``` 27 | 28 | Open http://localhost:3000 with your browser to see the result. 29 | 30 | [API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.js`. 31 | 32 | The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages. 33 | 34 | ## Learn More 35 | 36 | To learn more about Next.js, take a look at the following resources: 37 | 38 | - [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. 39 | - [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. 40 | 41 | You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! 42 | 43 | ## Deploy on Vercel 44 | 45 | The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. 46 | 47 | Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. 48 | 49 | © 2022 - Made With ❤️ By Ismailium, using Next.js and Tailwind CSS, Deployed on Vercel. 50 | -------------------------------------------------------------------------------- /Software-Developer-Portfolio-Screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/boularbahsmail/Software-Developer-Portfolio/5ea6d77d08b21074f0a546dd0faffc1a4cf0c41f/Software-Developer-Portfolio-Screenshot.png -------------------------------------------------------------------------------- /components/Contact/index.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | // React Icons 4 | import { 5 | FaLinkedinIn, 6 | FaCodepen, 7 | FaGithub, 8 | FaTwitter 9 | } from "react-icons/fa"; 10 | 11 | const Contact = () => { 12 | return ( 13 |
14 |

15 | Feel free,
Say hi; 16 |

17 |
18 | 32 | 46 |
47 |

Start project?

48 |

Hello@johndoe.com

49 |
50 |
51 |
52 | ); 53 | } 54 | 55 | export default Contact; -------------------------------------------------------------------------------- /components/Experiences/data/data.js: -------------------------------------------------------------------------------- 1 | const data = [ 2 | { 3 | id: 1, 4 | year: 2021, 5 | job_title: "Back-End Enginner", 6 | company: "Nike", 7 | description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." 8 | }, 9 | { 10 | id: 2, 11 | year: 2020, 12 | job_title: "Software Enginner", 13 | company: "Google Clouds", 14 | description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." 15 | }, 16 | { 17 | id: 3, 18 | year: 2019, 19 | job_title: "Full-Stack Developer", 20 | company: "AWS", 21 | description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." 22 | }, 23 | { 24 | id: 4, 25 | year: 2018, 26 | job_title: "Front-End Developer", 27 | company: "Netflix", 28 | description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." 29 | }, 30 | { 31 | id: 5, 32 | year: 2017, 33 | job_title: "Software Developer", 34 | company: "Vercel", 35 | description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." 36 | }, 37 | { 38 | id: 6, 39 | year: 2016, 40 | job_title: "Front-End Enginner", 41 | company: "Facebook", 42 | description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." 43 | } 44 | ]; 45 | 46 | export default data; -------------------------------------------------------------------------------- /components/Experiences/index.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | // Experiences Data 4 | import experiences from "./data/data.js"; 5 | 6 | const Experiences = () => { 7 | return ( 8 |
9 |

10 | #06; 11 |
Years Of Professional Experience. 12 |

13 |
14 | { 15 | experiences ? 16 | experiences.map((experience, index) => 17 |
21 | 22 | {experience.company} 23 | 24 |

25 | {experience.year} 26 |

27 |

28 | {experience.job_title} 29 |

30 |

31 | {experience.description} 32 |

33 |
34 | ) 35 | : null 36 | } 37 |
38 |
39 | ); 40 | } 41 | 42 | export default Experiences; -------------------------------------------------------------------------------- /components/Footer/index.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | // React Icons 4 | import { 5 | FaLinkedinIn, 6 | FaCodepen, 7 | FaGithub, 8 | FaTwitter 9 | } from "react-icons/fa"; 10 | 11 | const Footer = () => { 12 | return ( 13 |
14 |
15 |

16 | John Doe 17 |

18 | 40 |
41 | 42 |
43 | 60 |
© 2022 - John Doe. All Rights Reserved.
61 |
62 |
63 |
64 | © 2022 - Made with ❤️ by {" "} 65 | 67 | Ismailium 68 | {" "} 69 | using {" "} 70 | 72 | Next.js 73 | {" "} 74 | & {" "} 75 | 77 | TailwindCSS 78 | . {" "}
79 | Deployed on {" "} 80 | 82 | Vercel 83 | , {" "} 84 | Open Sourced on {" "} 85 | 88 | Github 89 | . 90 |
91 |
92 |
93 | ); 94 | } 95 | 96 | export default Footer; -------------------------------------------------------------------------------- /components/Hero/index.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | // React Icons 4 | import { SiHey } from "react-icons/si"; 5 | import { RiProfileLine, RiContactsBookLine } from "react-icons/ri"; 6 | import { FiLinkedin, FiGithub, FiTwitter } from "react-icons/fi"; 7 | 8 | const Hero = () => { 9 | return ( 10 |
11 |

12 | Hello thereI am 13 |

14 |

15 | John Doe 16 |

17 |

18 | Cuber and Self-Taught Front-end Software Developer, I enjoy building responsive 19 | web apps & designs using HTML5, CSS3, JavaScript, Next.js, React.js, Firebase, 20 | Restful APIs.., I have been working on the web for around 3 years building 21 | freelance/learning projects. 22 |

23 |
24 | 30 | 36 |
37 |
38 |

Find me on :

39 | 56 |
57 |
58 | ) 59 | } 60 | 61 | export default Hero; -------------------------------------------------------------------------------- /components/Navbar/index.jsx: -------------------------------------------------------------------------------- 1 | import { useState } from 'react'; 2 | import styles from "../../styles/Navbar.module.css"; 3 | 4 | const Navbar = () => { 5 | const [menuOpen, SetMenuOpen] = useState(false); 6 | 7 | const closeMenu = () => { 8 | if (!menuOpen) { 9 | SetMenuOpen(menuOpen); 10 | menuOpen = true; 11 | } 12 | else { 13 | SetMenuOpen(!menuOpen); 14 | menuOpen = false; 15 | } 16 | } 17 | 18 | return ( 19 |
20 |
21 |

22 | John Doe 23 |

24 |
25 | 45 |
SetMenuOpen(!menuOpen)}> 48 | 49 | 50 | 51 |
52 |
53 | ) 54 | } 55 | 56 | export default Navbar; -------------------------------------------------------------------------------- /components/Works/data/data.js: -------------------------------------------------------------------------------- 1 | const data = [ 2 | { 3 | id: 1, 4 | image_url: "https://cdn.dribbble.com/users/2919663/screenshots/18372585/media/22afc4757735732a96d5a9563202f729.png", 5 | work_title: "Blockchain Platform", 6 | description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", 7 | genre: "Digital Assets" 8 | }, 9 | { 10 | id: 2, 11 | image_url: "https://cdn.dribbble.com/users/702789/screenshots/15916650/media/ec203705bbc00f7338ba4e356b2c8af9.png", 12 | work_title: "Web Application", 13 | description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", 14 | genre: "Design & Dev" 15 | }, 16 | { 17 | id: 3, 18 | image_url: "https://cdn.dribbble.com/users/2417352/screenshots/6918204/media/d88f537661e3ea9cc4802e31b06e0ad8.png", 19 | work_title: "Site Optimization", 20 | description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", 21 | genre: "Interactive guide" 22 | }, 23 | { 24 | id: 4, 25 | image_url: "https://cdn.dribbble.com/users/2417352/screenshots/6918204/media/d88f537661e3ea9cc4802e31b06e0ad8.png", 26 | work_title: "Site Optimization", 27 | description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", 28 | genre: "Interactive guide" 29 | }, 30 | { 31 | id: 5, 32 | image_url: "https://cdn.dribbble.com/users/2919663/screenshots/18372585/media/22afc4757735732a96d5a9563202f729.png", 33 | work_title: "Blockchain Platform", 34 | description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", 35 | genre: "Digital Assets" 36 | }, 37 | { 38 | id: 6, 39 | image_url: "https://cdn.dribbble.com/users/702789/screenshots/15916650/media/ec203705bbc00f7338ba4e356b2c8af9.png", 40 | work_title: "Web Application", 41 | description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", 42 | genre: "Design & Dev" 43 | }, 44 | ]; 45 | 46 | export default data; -------------------------------------------------------------------------------- /components/Works/index.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | // Works Data 4 | import works from "./data/data.js"; 5 | 6 | // React Icons 7 | import { HiOutlineArrowNarrowRight } from "react-icons/hi"; 8 | // 9 | const Works = () => { 10 | return ( 11 |
12 |

#Latest Works

13 |

14 | Digital Explorers is a knowledge exchange initative 15 | between 2 buzzing ICT, offering. 16 |

17 |
18 | { 19 | works ? 20 | works.map((work, index) => 21 |
22 |
23 | Work-Image 27 |
28 |
29 |

{work.work_title}

30 | ⎯⎯ {work.genre} 31 |

{work.description}

32 | 38 |
39 |
40 | ) 41 | : null 42 | } 43 |
44 |
45 | ); 46 | } 47 | 48 | export default Works; -------------------------------------------------------------------------------- /next.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = { 3 | reactStrictMode: true, 4 | swcMinify: true, 5 | images: { 6 | domains: ["cdn.dribbble.com"] 7 | } 8 | } 9 | 10 | module.exports = nextConfig 11 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "portfolio-nextjs-tailwindcss", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "next dev", 7 | "build": "next build", 8 | "start": "next start", 9 | "lint": "next lint" 10 | }, 11 | "dependencies": { 12 | "next": "12.2.2", 13 | "react": "18.2.0", 14 | "react-dom": "18.2.0", 15 | "react-icons": "^4.4.0" 16 | }, 17 | "devDependencies": { 18 | "autoprefixer": "^10.4.7", 19 | "eslint": "8.19.0", 20 | "eslint-config-next": "12.2.2", 21 | "postcss": "^8.4.14", 22 | "tailwindcss": "^3.1.6" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /pages/_app.js: -------------------------------------------------------------------------------- 1 | import '../styles/globals.css' 2 | 3 | function MyApp({ Component, pageProps }) { 4 | return 5 | } 6 | 7 | export default MyApp 8 | -------------------------------------------------------------------------------- /pages/api/hello.js: -------------------------------------------------------------------------------- 1 | // Next.js API route support: https://nextjs.org/docs/api-routes/introduction 2 | 3 | export default function handler(req, res) { 4 | res.status(200).json({ name: 'John Doe' }) 5 | } 6 | -------------------------------------------------------------------------------- /pages/index.js: -------------------------------------------------------------------------------- 1 | import Head from 'next/head'; 2 | 3 | // Components 4 | import Navbar from '../components/Navbar'; 5 | import Hero from '../components/Hero'; 6 | import Experiences from '../components/Experiences'; 7 | import Works from '../components/Works'; 8 | import Contact from '../components/Contact'; 9 | import Footer from '../components/Footer'; 10 | 11 | export default function Home() { 12 | return ( 13 |
14 | 15 | John Doe - Software Developer 16 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
29 |
30 |
31 | ) 32 | } 33 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/boularbahsmail/Software-Developer-Portfolio/5ea6d77d08b21074f0a546dd0faffc1a4cf0c41f/public/favicon.ico -------------------------------------------------------------------------------- /public/vercel.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | -------------------------------------------------------------------------------- /styles/Navbar.module.css: -------------------------------------------------------------------------------- 1 | /* Toggle Menu */ 2 | .hamburger.open span:nth-child(1) { 3 | transform: rotate(-45deg); 4 | transform-origin: center; 5 | } 6 | 7 | .hamburger.open span:nth-child(2) { 8 | display: none; 9 | } 10 | 11 | .hamburger.open span:nth-child(3) { 12 | transform: rotate(45deg); 13 | transform-origin: center; 14 | margin-top: -7.8px; 15 | } 16 | 17 | .menu.open { 18 | display: block; 19 | } 20 | /* 21 | .brand.open { 22 | position: fixed; 23 | padding-top: 32px; 24 | } */ -------------------------------------------------------------------------------- /styles/globals.css: -------------------------------------------------------------------------------- 1 | /* Tailwind CSS Config */ 2 | @tailwind base; 3 | @tailwind components; 4 | @tailwind utilities; 5 | 6 | /* Google Font */ 7 | @import url('https://fonts.googleapis.com/css2?family=Roboto:wght@100;300;400;500;700;900&display=swap'); 8 | 9 | html, 10 | body { 11 | padding: 0; 12 | margin: 0; 13 | background-color: #11162b; 14 | background-image: url("data:image/svg+xml,%3Csvg width='64' height='64' viewBox='0 0 64 64' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8 16c4.418 0 8-3.582 8-8s-3.582-8-8-8-8 3.582-8 8 3.582 8 8 8zm0-2c3.314 0 6-2.686 6-6s-2.686-6-6-6-6 2.686-6 6 2.686 6 6 6zm33.414-6l5.95-5.95L45.95.636 40 6.586 34.05.636 32.636 2.05 38.586 8l-5.95 5.95 1.414 1.414L40 9.414l5.95 5.95 1.414-1.414L41.414 8zM40 48c4.418 0 8-3.582 8-8s-3.582-8-8-8-8 3.582-8 8 3.582 8 8 8zm0-2c3.314 0 6-2.686 6-6s-2.686-6-6-6-6 2.686-6 6 2.686 6 6 6zM9.414 40l5.95-5.95-1.414-1.414L8 38.586l-5.95-5.95L.636 34.05 6.586 40l-5.95 5.95 1.414 1.414L8 41.414l5.95 5.95 1.414-1.414L9.414 40z' fill='teal' fill-opacity='0.04' fill-rule='evenodd'/%3E%3C/svg%3E"); 15 | scroll-behavior: smooth; 16 | } 17 | 18 | a { 19 | color: inherit; 20 | text-decoration: none; 21 | } 22 | 23 | * { 24 | box-sizing: border-box; 25 | font-family: 'Roboto', sans-serif; 26 | } -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | module.exports = { 3 | content: [ 4 | "./pages/**/*.{js,ts,jsx,tsx}", 5 | "./components/**/*.{js,ts,jsx,tsx}", 6 | ], 7 | theme: { 8 | extend: {}, 9 | }, 10 | plugins: [], 11 | } 12 | --------------------------------------------------------------------------------