├── .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 | [](#contributors-)
7 |
8 |
9 |
10 | ## Website Screenshot
11 |
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 |
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 |
41 |
42 |
43 |
60 |
© 2022 - John Doe. All Rights Reserved.
61 |
62 |
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 there I 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 |
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 |
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 |
27 |
28 |
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 |
--------------------------------------------------------------------------------