├── .gitignore
├── LICENSE
├── README.md
├── images
├── intro.jpg
├── laptopView.jpg
├── mobile-view-1.jpg
└── mobile-view-2.jpg
├── package-lock.json
├── package.json
├── public
├── index.html
└── r-icon.jpg
└── src
├── App.css
├── App.js
├── App.test.js
├── assets
├── aboutMePhoto.jpg
├── blogs
│ └── stegblog_500x300.jpeg
├── contact.png
├── contact1.png
├── dashboard.gif
├── dashboardgif.gif
├── fonts
│ ├── DMSans-VariableFont_opsz,wght.woff2
│ ├── LilitaOne-Regular.woff2
│ └── LobsterTwo-Regular.woff2
├── icons
│ ├── angular.svg
│ ├── angularjs.svg
│ ├── azure.png
│ ├── bootstrap.png
│ ├── c++.png
│ ├── css3.svg
│ ├── express.svg
│ ├── firebase.png
│ ├── git.svg
│ ├── gitlab.svg
│ ├── html.svg
│ ├── javascript.svg
│ ├── mongodb.svg
│ ├── nodejs.svg
│ ├── postgres.png
│ ├── react.svg
│ ├── redux.png
│ ├── rxjs.png
│ └── typescript.svg
├── projects
│ ├── bloggers.jpg
│ ├── eeg_500x300.jpg
│ ├── lets_collab_img3.jpg
│ ├── medhub_500x300.jpg
│ ├── mt_500x300.jpg
│ ├── nft_blockchain_500x300.jpg
│ ├── primeng.png
│ └── steg_500x300.jpeg
├── sidenav.png
├── sidenavDark.png
└── sidenavLight.png
├── components
├── Footer
│ └── Footer.js
├── Navbar
│ └── Navbar.js
├── ProjectCard
│ └── ProjectCard.js
├── Sidenav
│ ├── Content.js
│ └── Sidenav.js
├── aboutMeInfo
│ └── aboutMeInfo.js
└── techStackCard
│ └── techStackCard.js
├── index.css
├── index.js
├── reportWebVitals.js
├── routes.js
├── theme
├── additions
│ └── card
│ │ └── card.js
├── components
│ └── button.js
├── foundations
│ └── breakpoints.js
├── styles.js
└── theme.js
└── views
├── about
└── about.js
├── contact
└── contact.js
├── dashboard
└── dashboard.js
├── projects
└── projects.js
└── resume
└── resume.js
/.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 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "[]"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright [yyyy] [name of copyright owner]
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Portfolio
2 |
3 | Self Coded Portfolio Website made using React JS and Chakra UI.
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | ## Live Demo
14 |
15 | - Click [here](https://rahulkp15.onrender.com/) to view the live demo.
16 |
17 | ## Features 📋
18 |
19 | ⚡️ Dark and Light Theme \
20 | 🎨 Customizable Layouts: Personalize your portfolio layout.\
21 | 📱 Responsive Design: Look great on desktop, tablet, and mobile.\
22 | 🏳️ Shimmering Effect and Lazy Loading of Images. \
23 | 💡 Edit with Ease: Light weight editing solution.\
24 | 💻 Downloadable React Code: Full control over your portfolio.
25 |
26 |
27 | ## Sections 📚
28 |
29 | ✔️ Home\
30 | ✔️ About Me\
31 | ✔️ Projects And Blogs\
32 | ✔️ Resume\
33 | ✔️ Contact Me
34 |
35 | ### Tech Stack 💻
36 |
37 | - [React.js](https://react.dev/)
38 | - [Chakra UI](https://chakra-ui.com/)
39 |
40 | ## Screenshots
41 |
42 | ### Laptop Views
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 | ### Mobile Views
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 | ## Getting Started ⚡ :-
61 |
62 | **1. Clone this repo by running the following command :-**
63 |
64 | ```bash
65 | git clone https://github.com/Rahul1582/portfolio-rahulkp.git
66 | ```
67 |
68 | **2. Now Install all the required packages by running the following commands :-**
69 |
70 | ```bash
71 | npm install
72 | ```
73 |
74 | **3. Now start the React server by running the following command :-**
75 |
76 | ```bash
77 | npm start
78 | ```
79 |
80 | **3.** **🎉 Open your browser and go to `https://localhost:3000`**
81 |
82 | ## Deployment 📦
83 |
84 | This Web Application is deployed to Render.
85 |
86 | You could also host directly with Render by linking your own repository.
87 |
88 |
89 | ## License 📄
90 | This project is licensed under the Apache-2.0 License - see the [LICENSE.md](./LICENSE) file for details
91 |
92 |
93 | ## Show your Support
94 |
95 | Give a ⭐️ if you like this project!
--------------------------------------------------------------------------------
/images/intro.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rahul1582/portfolio-rahulkp/0fd6d2ab73402e2e232a614c68ff63bdfffc4348/images/intro.jpg
--------------------------------------------------------------------------------
/images/laptopView.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rahul1582/portfolio-rahulkp/0fd6d2ab73402e2e232a614c68ff63bdfffc4348/images/laptopView.jpg
--------------------------------------------------------------------------------
/images/mobile-view-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rahul1582/portfolio-rahulkp/0fd6d2ab73402e2e232a614c68ff63bdfffc4348/images/mobile-view-1.jpg
--------------------------------------------------------------------------------
/images/mobile-view-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rahul1582/portfolio-rahulkp/0fd6d2ab73402e2e232a614c68ff63bdfffc4348/images/mobile-view-2.jpg
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "portfolio-rahulkp",
3 | "version": "0.1.0",
4 | "private": true,
5 | "dependencies": {
6 | "@chakra-ui/icons": "^2.1.1",
7 | "@chakra-ui/react": "^2.8.1",
8 | "@chakra-ui/theme-tools": "^2.1.1",
9 | "@emotion/cache": "^11.11.0",
10 | "@emotion/react": "^11.11.1",
11 | "@emotion/styled": "^11.11.0",
12 | "@hypertheme-editor/chakra-ui": "^0.1.6-rc.0",
13 | "@testing-library/jest-dom": "^5.17.0",
14 | "@testing-library/react": "^13.4.0",
15 | "@testing-library/user-event": "^13.5.0",
16 | "axios": "^1.5.1",
17 | "framer-motion": "^10.16.4",
18 | "react": "^18.2.0",
19 | "react-dom": "^18.2.0",
20 | "react-github-btn": "^1.4.0",
21 | "react-github-calendar": "^4.0.1",
22 | "react-icons": "^4.11.0",
23 | "react-lazy-load-image-component": "^1.6.0",
24 | "react-loader-spinner": "^6.1.6",
25 | "react-router-dom": "^6.15.0",
26 | "react-scripts": "5.0.1",
27 | "typewriter-effect": "^2.21.0",
28 | "web-vitals": "^2.1.4"
29 | },
30 | "scripts": {
31 | "start": "react-scripts start",
32 | "build": "react-scripts build",
33 | "test": "react-scripts test",
34 | "eject": "react-scripts eject"
35 | },
36 | "eslintConfig": {
37 | "extends": [
38 | "react-app",
39 | "react-app/jest"
40 | ]
41 | },
42 | "browserslist": {
43 | "production": [
44 | ">0.2%",
45 | "not dead",
46 | "not op_mini all"
47 | ],
48 | "development": [
49 | "last 1 chrome version",
50 | "last 1 firefox version",
51 | "last 1 safari version"
52 | ]
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | Portfolio | Rahul Patro
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/public/r-icon.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rahul1582/portfolio-rahulkp/0fd6d2ab73402e2e232a614c68ff63bdfffc4348/public/r-icon.jpg
--------------------------------------------------------------------------------
/src/App.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: 'Lilita One';
3 | src: url(./assets/fonts/LilitaOne-Regular.woff2);
4 | }
5 |
6 | @font-face {
7 | font-family: 'Lobster Two';
8 | src: url(./assets/fonts/LobsterTwo-Regular.woff2);
9 | }
10 |
11 | @font-face {
12 | font-family: 'DM Sans';
13 | src: url(./assets/fonts/DMSans-VariableFont_opsz\,wght.woff2);
14 | }
15 |
16 | body {
17 | font-family: 'Lilita One', cursive;
18 | }
19 |
20 | option {
21 | color: black;
22 | }
23 |
24 | .starry-background {
25 | position: fixed;
26 | top: 0;
27 | left: 0;
28 | width: 100%;
29 | height: 100%;
30 | opacity: 0.8;
31 | z-index: -1;
32 | }
33 |
34 | .loader-center{
35 | width: 100%;
36 | height: 100vh;
37 | display: flex;
38 | justify-content: center;
39 | align-items: center;
40 | }
41 |
42 | .star-white {
43 | position: absolute;
44 | background: #e9a6a6;
45 | width: 3px;
46 | height: 3px;
47 | animation: blink 1s linear infinite, move 20s linear infinite;
48 | z-index: 9999;
49 | border-radius: 50%;
50 | }
51 |
52 | .star-black {
53 | position: absolute;
54 | background: #0284c7;
55 | width: 3px;
56 | height: 3px;
57 | animation: blink 1s linear infinite, move 20s linear infinite;
58 | z-index: 9999;
59 | border-radius: 50%;
60 | }
61 |
62 | @keyframes blink {
63 | 0%,
64 | 100% {
65 | opacity: 0;
66 | }
67 | 50% {
68 | opacity: 1;
69 | }
70 | }
71 |
72 | @keyframes move {
73 | 0% {
74 | transform: translateY(0);
75 | }
76 | 100% {
77 | transform: translateY(-100vh);
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/src/App.js:
--------------------------------------------------------------------------------
1 | import "./App.css";
2 | import Sidenav from "./components/Sidenav/Sidenav";
3 | import Footer from "./components/Footer/Footer";
4 | import routes from "./routes.js";
5 | import { Box, useColorMode } from "@chakra-ui/react";
6 | import {
7 | BrowserRouter as Router,
8 | Route,
9 | Routes,
10 | Navigate,
11 | } from "react-router-dom";
12 | import { Hourglass } from "react-loader-spinner";
13 | import { useState, useEffect } from "react";
14 |
15 | export default function App() {
16 | const { colorMode } = useColorMode();
17 | const [loading, setloading] = useState(true);
18 |
19 | const redirectRoute = (routes) => {
20 | return routes.map((route, key) => {
21 | return (
22 | } key={key} />
23 | );
24 | });
25 | };
26 |
27 | const StarryBackground = () => {
28 | const numberOfStars = 100;
29 | const stars = [];
30 |
31 | for (let i = 0; i < numberOfStars; i++) {
32 | const style = {
33 | left: `${Math.random() * 100}%`,
34 | top: `${Math.random() * 100}%`,
35 | animationDelay: `${Math.random() * 5}s`,
36 | };
37 |
38 | const starClassName = colorMode === "light" ? "star-black" : "star-white";
39 |
40 | stars.push(
);
41 | }
42 |
43 | return {stars}
;
44 | };
45 |
46 | useEffect(() => {
47 | setTimeout(() => {
48 | setloading(false);
49 | }, 2000);
50 | }, []);
51 |
52 | return (
53 |
54 | {loading && (
55 |
56 |
65 |
66 | )}
67 | {!loading && (
68 | <>
69 |
70 |
71 |
84 |
92 |
93 | {redirectRoute(routes)}
94 | } />
95 |
96 |
97 |
98 |
99 |
100 |
101 | >
102 | )}
103 |
104 | );
105 | }
106 |
--------------------------------------------------------------------------------
/src/App.test.js:
--------------------------------------------------------------------------------
1 | import { render, screen } from "@testing-library/react";
2 | import App from "./App";
3 |
4 | test("renders learn react link", () => {
5 | render( );
6 | const linkElement = screen.getByText(/learn react/i);
7 | expect(linkElement).toBeInTheDocument();
8 | });
9 |
--------------------------------------------------------------------------------
/src/assets/aboutMePhoto.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rahul1582/portfolio-rahulkp/0fd6d2ab73402e2e232a614c68ff63bdfffc4348/src/assets/aboutMePhoto.jpg
--------------------------------------------------------------------------------
/src/assets/blogs/stegblog_500x300.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rahul1582/portfolio-rahulkp/0fd6d2ab73402e2e232a614c68ff63bdfffc4348/src/assets/blogs/stegblog_500x300.jpeg
--------------------------------------------------------------------------------
/src/assets/contact.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rahul1582/portfolio-rahulkp/0fd6d2ab73402e2e232a614c68ff63bdfffc4348/src/assets/contact.png
--------------------------------------------------------------------------------
/src/assets/contact1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rahul1582/portfolio-rahulkp/0fd6d2ab73402e2e232a614c68ff63bdfffc4348/src/assets/contact1.png
--------------------------------------------------------------------------------
/src/assets/dashboard.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rahul1582/portfolio-rahulkp/0fd6d2ab73402e2e232a614c68ff63bdfffc4348/src/assets/dashboard.gif
--------------------------------------------------------------------------------
/src/assets/dashboardgif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rahul1582/portfolio-rahulkp/0fd6d2ab73402e2e232a614c68ff63bdfffc4348/src/assets/dashboardgif.gif
--------------------------------------------------------------------------------
/src/assets/fonts/DMSans-VariableFont_opsz,wght.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rahul1582/portfolio-rahulkp/0fd6d2ab73402e2e232a614c68ff63bdfffc4348/src/assets/fonts/DMSans-VariableFont_opsz,wght.woff2
--------------------------------------------------------------------------------
/src/assets/fonts/LilitaOne-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rahul1582/portfolio-rahulkp/0fd6d2ab73402e2e232a614c68ff63bdfffc4348/src/assets/fonts/LilitaOne-Regular.woff2
--------------------------------------------------------------------------------
/src/assets/fonts/LobsterTwo-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rahul1582/portfolio-rahulkp/0fd6d2ab73402e2e232a614c68ff63bdfffc4348/src/assets/fonts/LobsterTwo-Regular.woff2
--------------------------------------------------------------------------------
/src/assets/icons/angular.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/angularjs.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/azure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rahul1582/portfolio-rahulkp/0fd6d2ab73402e2e232a614c68ff63bdfffc4348/src/assets/icons/azure.png
--------------------------------------------------------------------------------
/src/assets/icons/bootstrap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rahul1582/portfolio-rahulkp/0fd6d2ab73402e2e232a614c68ff63bdfffc4348/src/assets/icons/bootstrap.png
--------------------------------------------------------------------------------
/src/assets/icons/c++.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rahul1582/portfolio-rahulkp/0fd6d2ab73402e2e232a614c68ff63bdfffc4348/src/assets/icons/c++.png
--------------------------------------------------------------------------------
/src/assets/icons/css3.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/express.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/firebase.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rahul1582/portfolio-rahulkp/0fd6d2ab73402e2e232a614c68ff63bdfffc4348/src/assets/icons/firebase.png
--------------------------------------------------------------------------------
/src/assets/icons/git.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/gitlab.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/html.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/javascript.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/mongodb.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/nodejs.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/postgres.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rahul1582/portfolio-rahulkp/0fd6d2ab73402e2e232a614c68ff63bdfffc4348/src/assets/icons/postgres.png
--------------------------------------------------------------------------------
/src/assets/icons/react.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/redux.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rahul1582/portfolio-rahulkp/0fd6d2ab73402e2e232a614c68ff63bdfffc4348/src/assets/icons/redux.png
--------------------------------------------------------------------------------
/src/assets/icons/rxjs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rahul1582/portfolio-rahulkp/0fd6d2ab73402e2e232a614c68ff63bdfffc4348/src/assets/icons/rxjs.png
--------------------------------------------------------------------------------
/src/assets/icons/typescript.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/projects/bloggers.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rahul1582/portfolio-rahulkp/0fd6d2ab73402e2e232a614c68ff63bdfffc4348/src/assets/projects/bloggers.jpg
--------------------------------------------------------------------------------
/src/assets/projects/eeg_500x300.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rahul1582/portfolio-rahulkp/0fd6d2ab73402e2e232a614c68ff63bdfffc4348/src/assets/projects/eeg_500x300.jpg
--------------------------------------------------------------------------------
/src/assets/projects/lets_collab_img3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rahul1582/portfolio-rahulkp/0fd6d2ab73402e2e232a614c68ff63bdfffc4348/src/assets/projects/lets_collab_img3.jpg
--------------------------------------------------------------------------------
/src/assets/projects/medhub_500x300.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rahul1582/portfolio-rahulkp/0fd6d2ab73402e2e232a614c68ff63bdfffc4348/src/assets/projects/medhub_500x300.jpg
--------------------------------------------------------------------------------
/src/assets/projects/mt_500x300.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rahul1582/portfolio-rahulkp/0fd6d2ab73402e2e232a614c68ff63bdfffc4348/src/assets/projects/mt_500x300.jpg
--------------------------------------------------------------------------------
/src/assets/projects/nft_blockchain_500x300.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rahul1582/portfolio-rahulkp/0fd6d2ab73402e2e232a614c68ff63bdfffc4348/src/assets/projects/nft_blockchain_500x300.jpg
--------------------------------------------------------------------------------
/src/assets/projects/primeng.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rahul1582/portfolio-rahulkp/0fd6d2ab73402e2e232a614c68ff63bdfffc4348/src/assets/projects/primeng.png
--------------------------------------------------------------------------------
/src/assets/projects/steg_500x300.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rahul1582/portfolio-rahulkp/0fd6d2ab73402e2e232a614c68ff63bdfffc4348/src/assets/projects/steg_500x300.jpeg
--------------------------------------------------------------------------------
/src/assets/sidenav.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rahul1582/portfolio-rahulkp/0fd6d2ab73402e2e232a614c68ff63bdfffc4348/src/assets/sidenav.png
--------------------------------------------------------------------------------
/src/assets/sidenavDark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rahul1582/portfolio-rahulkp/0fd6d2ab73402e2e232a614c68ff63bdfffc4348/src/assets/sidenavDark.png
--------------------------------------------------------------------------------
/src/assets/sidenavLight.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rahul1582/portfolio-rahulkp/0fd6d2ab73402e2e232a614c68ff63bdfffc4348/src/assets/sidenavLight.png
--------------------------------------------------------------------------------
/src/components/Footer/Footer.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import {
3 | Flex,
4 | Link,
5 | List,
6 | ListItem,
7 | Text,
8 | useColorModeValue
9 | } from "@chakra-ui/react";
10 | import { AiFillGithub, AiFillHeart } from "react-icons/ai";
11 | import { BsInstagram } from "react-icons/bs";
12 | import { BiLogoLinkedin } from "react-icons/bi";
13 | import { SiLeetcode } from "react-icons/si";
14 |
15 | export default function Footer() {
16 | const textColor = useColorModeValue("lightblue.100", "lightpeach.100");
17 |
18 | return (
19 |
34 |
50 | {" "}
51 | © {1900 + new Date().getYear()}
52 | {">"} with by Rahul Kumar Patro • All Rights Reserved
53 |
54 |
55 |
63 |
64 |
65 |
66 |
67 |
75 |
76 |
77 |
78 |
79 |
87 |
88 |
89 |
90 |
91 |
99 |
100 |
101 |
102 |
103 |
104 |
105 | );
106 | }
107 |
--------------------------------------------------------------------------------
/src/components/Navbar/Navbar.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import {
3 | Flex,
4 | Box,
5 | useColorModeValue,
6 | Link,
7 | IconButton,
8 | useColorMode
9 | } from "@chakra-ui/react";
10 | import { MoonIcon, SunIcon } from "@chakra-ui/icons";
11 | import routes from "../../routes.js";
12 | import { SideNavResponsive } from "../Sidenav/Sidenav.js";
13 |
14 | export default function Navbar(props) {
15 | const { displayText } = props;
16 | const { colorMode, toggleColorMode } = useColorMode();
17 | let mainText = useColorModeValue("lightblue.100", "lightpeach.100");
18 | let navbarPosition = "fixed";
19 | let navbarFilter = "none";
20 | let navbarBackdrop = "blur(10px)";
21 | let navbarShadow = "none";
22 | let navbarBg = useColorModeValue("rgba(244, 247, 254, 0.2)", "");
23 | // let navbarBorderColor = useColorModeValue("navy.700", "white");
24 | let secondaryMargin = "0px";
25 | let paddingX = "15px";
26 | let gap = "0px";
27 |
28 | return (
29 |
63 |
74 |
75 |
95 | {displayText}
96 |
97 |
98 |
99 |
100 |
101 | : }
104 | onClick={toggleColorMode}
105 | />
106 |
107 |
108 |
109 |
110 | );
111 | }
112 |
--------------------------------------------------------------------------------
/src/components/ProjectCard/ProjectCard.js:
--------------------------------------------------------------------------------
1 | import { React, useState } from "react";
2 | import {
3 | Box,
4 | Flex,
5 | Button,
6 | Link,
7 | useColorModeValue,
8 | useStyleConfig,
9 | Text,
10 | Skeleton
11 | } from "@chakra-ui/react";
12 | import { LazyLoadImage } from "react-lazy-load-image-component";
13 | import "react-lazy-load-image-component/src/effects/blur.css";
14 |
15 | export default function ProjectCard(props) {
16 | const {
17 | projectImage,
18 | aboutProject,
19 | techStack,
20 | projectName,
21 | projectLiveLink,
22 | projectLink
23 | } = props;
24 | const [loadedprojectimg, setloadedprojectimg] = useState(false);
25 | const textColor = useColorModeValue("navy.700", "lightpeach.100");
26 | const styles = useStyleConfig("Card");
27 | return (
28 |
37 |
38 |
44 | setloadedprojectimg(true)}
52 | // border="2px solid"
53 | // borderColor={textColor}
54 | />
55 |
56 |
57 |
58 |
59 |
74 | {projectName}
75 |
76 |
77 |
78 |
87 | {aboutProject}
88 |
89 |
90 |
91 |
100 | {techStack}
101 |
102 |
103 |
118 | {projectLiveLink ? (
119 | <>
120 |
131 |
139 | View Website
140 |
141 |
142 | >
143 | ) : (
144 | <>>
145 | )}
146 |
157 |
165 | {techStack ? "View Project" : "View Blog"}
166 |
167 |
168 |
169 |
170 |
171 | );
172 | }
173 |
--------------------------------------------------------------------------------
/src/components/Sidenav/Content.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { Box, Flex, HStack, useColorModeValue } from "@chakra-ui/react";
3 | import { NavLink, useLocation } from "react-router-dom";
4 |
5 | export default function Content(props) {
6 | const { routes } = props;
7 | let currentlocation = useLocation();
8 | let activeColor = useColorModeValue("gray.700", "white");
9 |
10 | let activeIcon = useColorModeValue("gray.700", "white");
11 | let textColor = useColorModeValue("lightblue.100", "lightpeach.100");
12 |
13 | const activeRoute = (routeName) => {
14 | return currentlocation.pathname.includes(routeName);
15 | };
16 |
17 | return routes.map((route, index) => {
18 | return (
19 |
20 |
21 |
28 |
35 |
42 | {route.icon}
43 |
44 |
58 | {route.name}
59 |
60 |
61 | {/* */}
71 |
72 |
73 |
74 | );
75 | });
76 | }
77 |
--------------------------------------------------------------------------------
/src/components/Sidenav/Sidenav.js:
--------------------------------------------------------------------------------
1 | import {
2 | Box,
3 | Drawer,
4 | DrawerBody,
5 | DrawerCloseButton,
6 | DrawerContent,
7 | DrawerOverlay,
8 | Flex,
9 | Icon,
10 | Stack,
11 | useColorMode,
12 | useColorModeValue,
13 | useDisclosure,
14 | Skeleton
15 | } from "@chakra-ui/react";
16 | import { React, useState, useRef } from "react";
17 | import { IoMenuOutline } from "react-icons/io5";
18 | import GitHubButton from "react-github-btn";
19 | import Content from "./Content";
20 | import sidenavDark from "../../assets/sidenavDark.png";
21 | import sidenavLight from "../../assets/sidenavLight.png";
22 | import { LazyLoadImage } from "react-lazy-load-image-component";
23 | import "react-lazy-load-image-component/src/effects/blur.css";
24 |
25 | export default function Sidenav(props) {
26 | const [loadedSidenavimg, setloadedSidenavimg] = useState(false);
27 | const { colorMode } = useColorMode();
28 | const { routes } = props;
29 | let variantChange = "0.2s linear";
30 | let shadow = useColorModeValue(
31 | "14px 17px 40px 4px rgba(112, 144, 176, 0.08)",
32 | "14px 17px 40px 4px rgba(112, 144, 176, 0.08)"
33 | );
34 | // Chakra Color Mode
35 | // let sidenavBg = useColorModeValue("secondaryGray.400", "navyBlue.300");
36 | // let navbarBorderColor = useColorModeValue("lightblue.100", "lightpeach.100");
37 |
38 | return (
39 |
45 |
54 |
61 |
62 |
69 | setloadedSidenavimg(true)}
74 | >
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
91 |
98 | Star
99 |
100 |
101 |
108 | Fork
109 |
110 |
111 |
112 |
113 |
114 | );
115 | }
116 |
117 | export function SideNavResponsive(props) {
118 | const { colorMode } = useColorMode();
119 | let sidenavBg = useColorModeValue("white", "navyBlue.300");
120 | let navbarBorderColor = useColorModeValue("lightblue.100", "lightpeach.100");
121 | let variantChange = "0.2s linear";
122 | let shadow = useColorModeValue(
123 | "14px 17px 40px 4px rgba(112, 144, 176, 0.08)",
124 | "14px 17px 40px 4px rgba(112, 144, 176, 0.08)"
125 | );
126 | const [loadedSidenavimg, setloadedSidenavimg] = useState(false);
127 |
128 | const { isOpen, onOpen, onClose } = useDisclosure();
129 |
130 | const btnRef = useRef();
131 |
132 | const { routes } = props;
133 |
134 | return (
135 |
136 |
137 |
146 |
147 |
154 |
155 |
156 |
162 |
163 |
173 |
180 |
181 |
188 | setloadedSidenavimg(true)}
192 | >
193 |
194 |
195 |
196 |
197 |
201 |
202 |
203 |
204 |
212 |
219 | Star
220 |
221 |
222 |
229 | Fork
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 | );
239 | }
240 |
--------------------------------------------------------------------------------
/src/components/aboutMeInfo/aboutMeInfo.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { Box, useColorModeValue, useStyleConfig, Text } from "@chakra-ui/react";
3 |
4 | export default function AboutMeInfo(props) {
5 | const { title, value } = props;
6 | const textColorPrimary = useColorModeValue("lightblue.100", "lightpeach.100");
7 | const textColorSecondary = useColorModeValue("secondaryGray.900", "white");
8 | const bg = useColorModeValue("secondaryGray.400", "navyBlue.300");
9 | const styles = useStyleConfig("Card");
10 | return (
11 |
18 |
25 |
26 | {title}
27 |
28 |
29 | {value}
30 |
31 |
32 |
33 | );
34 | }
35 |
--------------------------------------------------------------------------------
/src/components/techStackCard/techStackCard.js:
--------------------------------------------------------------------------------
1 | import { React, useState } from "react";
2 | import { Box, useStyleConfig, Flex, Image, Skeleton } from "@chakra-ui/react";
3 |
4 | export default function TechStackCard(props) {
5 | const { imagepath, background } = { ...props };
6 | const styles = useStyleConfig("Card");
7 | const [loadedTechimg, setloadedTechimg] = useState(false);
8 |
9 | return (
10 |
19 |
25 |
31 | setloadedTechimg(true)}
36 | >
37 |
38 |
39 |
40 | );
41 | }
42 |
--------------------------------------------------------------------------------
/src/index.css:
--------------------------------------------------------------------------------
1 | ::-webkit-scrollbar {
2 | width: 5px;
3 | }
4 |
5 | ::-webkit-scrollbar-thumb {
6 | background: grey;
7 | }
8 |
9 | ::-webkit-scrollbar-track {
10 | background: transparent;
11 | }
12 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import ReactDOM from "react-dom/client";
3 | import "./index.css";
4 | import App from "./App";
5 | import reportWebVitals from "./reportWebVitals";
6 | import { ChakraProvider } from "@chakra-ui/react";
7 | import theme from "./theme/theme";
8 | import { ThemeEditorProvider } from "@hypertheme-editor/chakra-ui";
9 |
10 | const root = ReactDOM.createRoot(document.getElementById("root"));
11 | root.render(
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 | );
20 |
21 | // If you want to start measuring performance in your app, pass a function
22 | // to log results (for example: reportWebVitals(console.log))
23 | // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
24 | reportWebVitals();
25 |
--------------------------------------------------------------------------------
/src/reportWebVitals.js:
--------------------------------------------------------------------------------
1 | const reportWebVitals = onPerfEntry => {
2 | if (onPerfEntry && onPerfEntry instanceof Function) {
3 | import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
4 | getCLS(onPerfEntry);
5 | getFID(onPerfEntry);
6 | getFCP(onPerfEntry);
7 | getLCP(onPerfEntry);
8 | getTTFB(onPerfEntry);
9 | });
10 | }
11 | };
12 |
13 | export default reportWebVitals;
14 |
--------------------------------------------------------------------------------
/src/routes.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | import { Icon } from "@chakra-ui/react";
4 | import {
5 | MdDashboard,
6 | MdBarChart,
7 | MdPersonPin,
8 | MdCode,
9 | MdContacts
10 | } from "react-icons/md";
11 |
12 | import Dashboard from "./views/dashboard/dashboard";
13 | import About from "./views/about/about";
14 | import Resume from "./views/resume/resume";
15 | import Projects from "./views/projects/projects";
16 | import Contact from "./views/contact/contact";
17 |
18 | const routes = [
19 | {
20 | name: "Home",
21 | path: "/home",
22 | navbarDisplayName: " ",
23 | icon: ,
24 | component: Dashboard
25 | },
26 | {
27 | name: "About Me",
28 | path: "/about",
29 | navbarDisplayName: " ",
30 | icon: ,
31 | component: About
32 | },
33 | {
34 | name: "Projects And Blogs",
35 | path: "/projects",
36 | navbarDisplayName: " ",
37 | icon: ,
38 | component: Projects
39 | },
40 | {
41 | name: "Resume",
42 | path: "/resume",
43 | navbarDisplayName: " ",
44 | icon: ,
45 | component: Resume
46 | },
47 | {
48 | name: "Contact Me",
49 | path: "/contact",
50 | navbarDisplayName: " ",
51 | icon: ,
52 | component: Contact
53 | }
54 | ];
55 |
56 | export default routes;
57 |
--------------------------------------------------------------------------------
/src/theme/additions/card/card.js:
--------------------------------------------------------------------------------
1 | import { mode } from "@chakra-ui/theme-tools";
2 | const Card = {
3 | baseStyle: (props) => ({
4 | p: "20px",
5 | display: "flex",
6 | flexDirection: "column",
7 | width: "100%",
8 | position: "relative",
9 | borderRadius: "20px",
10 | minWidth: "0px",
11 | wordWrap: "break-word",
12 | bg: mode("secondaryGray.400", "navyBlue.300")(props),
13 | // border: "1.5px solid",
14 | // borderColor: mode("lightblue.100", "lightpeach.100")(props),
15 | backgroundClip: "border-box",
16 | boxShadow: "0px 4px 6px rgba(0, 0, 0, 0.1)"
17 | })
18 | };
19 |
20 | export const CardComponent = {
21 | components: {
22 | Card
23 | }
24 | };
25 |
--------------------------------------------------------------------------------
/src/theme/components/button.js:
--------------------------------------------------------------------------------
1 | import { mode } from "@chakra-ui/theme-tools";
2 | export const buttonStyles = {
3 | components: {
4 | Button: {
5 | baseStyle: {
6 | borderRadius: "16px",
7 | boxShadow: "45px 76px 113px 7px rgba(112, 144, 176, 0.08)",
8 | transition: ".25s all ease",
9 | boxSizing: "border-box",
10 | _focus: {
11 | boxShadow: "none"
12 | },
13 | _active: {
14 | boxShadow: "none"
15 | }
16 | },
17 | variants: {
18 | darkBrand: (props) => ({
19 | bg: mode("lightblue.100", "lightpeach.100")(props),
20 | color: mode("white", "black")(props),
21 | _active: {
22 | bg: mode("lightpeach.100", "lightblue.100")(props)
23 | },
24 | _hover: {
25 | bg: mode("lightpeach.100", "lightblue.100")(props)
26 | }
27 | })
28 | }
29 | }
30 | }
31 | };
32 |
--------------------------------------------------------------------------------
/src/theme/foundations/breakpoints.js:
--------------------------------------------------------------------------------
1 | import { createBreakpoints } from "@chakra-ui/theme-tools";
2 |
3 | export const breakpoints = createBreakpoints({
4 | xs: "200px",
5 | sm: "320px",
6 | "2sm": "380px",
7 | md: "768px",
8 | lg: "960px",
9 | xl: "1200px",
10 | "2xl": "1600px",
11 | "3xl": "1920px"
12 | });
13 |
--------------------------------------------------------------------------------
/src/theme/styles.js:
--------------------------------------------------------------------------------
1 | import { mode } from "@chakra-ui/theme-tools";
2 | export const globalStyles = {
3 | colors: {
4 | other: {
5 | 800: "#190793",
6 | 900: "#11047A"
7 | },
8 | secondaryGray: {
9 | 100: "#E0E5F2",
10 | 200: "#E1E9F8",
11 | 300: "#F4F7FE",
12 | 400: "#E9EDF7",
13 | 500: "#8F9BBA",
14 | 600: "#A3AED0",
15 | 700: "#707EAE",
16 | 800: "#707EAE",
17 | 900: "#1B2559"
18 | },
19 | navy: {
20 | 50: "#d0dcfb",
21 | 100: "#aac0fe",
22 | 200: "#a3b9f8",
23 | 300: "#728fea",
24 | 400: "#3652ba",
25 | 500: "#1b3bbb",
26 | 600: "#24388a",
27 | 700: "#1B254B",
28 | 800: "#111c44",
29 | 900: "#0b1437"
30 | },
31 | navyBlue: {
32 | 100: "#192734",
33 | 200: "#152f47",
34 | 300: "#272445",
35 | 400: "#1F1D36"
36 | },
37 | lightpeach: {
38 | 100: "#E9A6A6"
39 | },
40 | lightblue: {
41 | 100: "#0284c7"
42 | },
43 | gray: {
44 | 100: "#FAFCFE"
45 | }
46 | },
47 | styles: {
48 | global: (props) => ({
49 | body: {
50 | overflowX: "hidden",
51 | bg: mode("secondaryGray.300", "navyBlue.400")(props),
52 | fontFamily: "Lilita One",
53 | fontWeight: "200"
54 | },
55 | input: {
56 | color: "gray.700"
57 | },
58 | html: {
59 | fontFamily: "Lilita One"
60 | },
61 | ".chakra-text": {
62 | "&:hover": {
63 | cursor: "default"
64 | }
65 | }
66 | })
67 | }
68 | };
69 |
--------------------------------------------------------------------------------
/src/theme/theme.js:
--------------------------------------------------------------------------------
1 | import { extendTheme } from "@chakra-ui/react";
2 | import { CardComponent } from "./additions/card/card";
3 | import { buttonStyles } from "./components/button";
4 | import { breakpoints } from "./foundations/breakpoints";
5 | import { globalStyles } from "./styles";
6 |
7 | export default extendTheme(
8 | {
9 | config: {
10 | initialColorMode: "dark",
11 | useSystemColorMode: false
12 | }
13 | },
14 | { breakpoints },
15 | globalStyles,
16 | buttonStyles,
17 | CardComponent
18 | );
19 |
--------------------------------------------------------------------------------
/src/views/about/about.js:
--------------------------------------------------------------------------------
1 | import { React, useState, useEffect } from "react";
2 | import {
3 | Box,
4 | Flex,
5 | SimpleGrid,
6 | Grid,
7 | useStyleConfig,
8 | Text,
9 | useColorModeValue,
10 | useColorMode,
11 | Icon,
12 | Button,
13 | Link,
14 | Skeleton,
15 | } from "@chakra-ui/react";
16 | import { LazyLoadImage } from "react-lazy-load-image-component";
17 | import "react-lazy-load-image-component/src/effects/blur.css";
18 | import { MdFlightTakeoff } from "react-icons/md";
19 | import { LiaDrumSolid } from "react-icons/lia";
20 | import { GiCricketBat } from "react-icons/gi";
21 | import Navbar from "../../components/Navbar/Navbar";
22 | import routes from "../../routes";
23 | import TechStackCard from "../../components/techStackCard/techStackCard";
24 | import AboutMeInfo from "../../components/aboutMeInfo/aboutMeInfo";
25 | import angular from "../../assets/icons/angular.svg";
26 | import typescript from "../../assets/icons/typescript.svg";
27 | import node from "../../assets/icons/nodejs.svg";
28 | import mongo from "../../assets/icons/mongodb.svg";
29 | import js from "../../assets/icons/javascript.svg";
30 | import react from "../../assets/icons/react.svg";
31 | import html from "../../assets/icons/html.svg";
32 | import css from "../../assets/icons/css3.svg";
33 | import git from "../../assets/icons/git.svg";
34 | import gitlab from "../../assets/icons/gitlab.svg";
35 | import cpp from "../../assets/icons/c++.png";
36 | import express from "../../assets/icons/express.svg";
37 | import redux from "../../assets/icons/redux.png";
38 | import firebase from "../../assets/icons/firebase.png";
39 | import postgres from "../../assets/icons/postgres.png";
40 | import rxjs from "../../assets/icons/rxjs.png";
41 | import azure from "../../assets/icons/azure.png";
42 | import bootstrap from "../../assets/icons/bootstrap.png";
43 | import myphoto from "../../assets/aboutMePhoto.jpg";
44 | import GitHubCalendar from "react-github-calendar";
45 |
46 | export default function About() {
47 | const [loadedProfileimg, setloadedProfileimg] = useState(false);
48 | const [loadedgithubimg, setloadedgithubimg] = useState(false);
49 | const styles = useStyleConfig("Card");
50 | const { colorMode } = useColorMode();
51 | const textColorPrimary = useColorModeValue("lightblue.100", "lightpeach.100");
52 | const cardShadow = useColorModeValue(
53 | "0px 18px 40px rgba(112, 144, 176, 0.12)",
54 | "unset"
55 | );
56 |
57 | useEffect(() => {
58 | window.scrollTo({ top: 0, behavior: "smooth" });
59 | }, []);
60 |
61 | const getActiveRoute = (routes) => {
62 | for (let i = 0; i < routes.length; i++) {
63 | if (window.location.href.indexOf(routes[i].path) !== -1) {
64 | return routes[i].navbarDisplayName;
65 | }
66 | }
67 | };
68 |
69 | return (
70 |
71 |
72 |
73 |
79 | {/* */}
84 |
94 |
102 |
113 |
119 | setloadedProfileimg(true)}
127 | />
128 |
129 |
130 |
135 |
136 |
142 | {" "}
143 |
144 |
145 |
150 |
155 |
160 |
165 |
170 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
187 |
188 | {" "}
189 |
190 |
191 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
225 |
226 | {" "}
227 |
228 |
229 |
230 |
235 |
236 |
237 |
243 | setloadedgithubimg(true)}
252 | />
253 |
254 |
255 |
256 |
257 |
258 | Visit Github
259 |
260 |
261 |
262 |
269 |
270 | {" "}
271 |
272 |
273 |
280 |
281 |
282 |
288 |
289 | Travelling & Exploring
290 |
291 | I am passionate about traveling and exploring new places. Whether
292 | it's uncovering hidden gems in my own backyard or embarking on
293 | exciting adventures, I thrive on the thrill of discovering new
294 | cultures, cuisines, and landscapes. Traveling not only broadens my
295 | horizons but also provides me with valuable life experiences and a
296 | deep appreciation for the diversity of our world!!
297 |
298 |
299 |
300 |
301 |
307 |
308 | Playing Drums
309 |
310 | I have a deep passion for playing the drums, which has been a
311 | cherished hobby of mine for many years. The rhythmic beats and the
312 | feeling of being in sync with the music provide me with a sense of
313 | joy and creative expression that is truly unparalleled. Whether
314 | it's jamming with friends, exploring new techniques, or simply
315 | drumming to my favorite tunes, I find immense fulfillment and
316 | relaxation in this musical pursuit!!
317 |
318 |
319 |
320 |
321 |
327 |
328 | Playing Outdoor Games
329 |
330 | Whether it's a competitive game of soccer, a relaxing round of
331 | golf, or simply throwing a frisbee in the park, I find immense joy
332 | and fulfillment in the great outdoors. Playing sports not only
333 | keeps me physically active but also fosters teamwork, leadership,
334 | and a strong sense of camaraderie. It's a wonderful way for me to
335 | unwind, stay fit, and connect with friends and family while
336 | enjoying the beauty of nature!!
337 |
338 |
339 |
340 |
341 |
342 | );
343 | }
344 |
--------------------------------------------------------------------------------
/src/views/contact/contact.js:
--------------------------------------------------------------------------------
1 | import { React, useState, useEffect } from "react";
2 | import {
3 | Box,
4 | Flex,
5 | Icon,
6 | Image,
7 | SimpleGrid,
8 | Text,
9 | useColorModeValue,
10 | useStyleConfig,
11 | Skeleton
12 | } from "@chakra-ui/react";
13 | import routes from "../../routes";
14 | import Navbar from "../../components/Navbar/Navbar";
15 | import contactimg from "../../assets/contact.png";
16 | import contactimg1 from "../../assets/contact1.png";
17 | import { AiFillPhone, AiOutlineMail } from "react-icons/ai";
18 | import { FaLocationDot } from "react-icons/fa6";
19 | import { Link } from "react-router-dom";
20 |
21 | export default function Contact() {
22 | const [loadedimage1, setloadedimage1] = useState(false);
23 | const [loadedimage2, setloadedimage2] = useState(false);
24 | const styles = useStyleConfig("Card");
25 | const textColorPrimary = useColorModeValue("lightblue.100", "lightpeach.100");
26 |
27 | useEffect(() => {
28 | window.scrollTo({ top: 0, behavior: "smooth" });
29 | },[]);
30 |
31 | const getActiveRoute = (routes) => {
32 | for (let i = 0; i < routes.length; i++) {
33 | if (window.location.href.indexOf(routes[i].path) !== -1) {
34 | return routes[i].navbarDisplayName;
35 | }
36 | }
37 | };
38 | return (
39 |
40 |
41 |
42 |
43 |
44 |
50 | setloadedimage1(true)}
53 | >
54 |
55 |
56 |
57 |
64 | setloadedimage2(true)}
67 | >
68 |
69 |
70 |
71 |
72 |
80 |
86 |
87 |
88 |
94 |
95 | FIND ME @
96 |
97 | Truminds Software Systems
98 |
99 |
100 |
101 |
107 |
108 |
109 | {
112 | window.location.href = "mailto:rahulkpatro@example.com";
113 | e.preventDefault();
114 | }}
115 | >
116 |
123 |
124 |
125 |
126 | EMAIL ME @
127 |
128 |
129 | rahulkpatro@gmail.com
130 |
131 |
132 |
133 |
139 |
140 |
141 |
147 |
148 | CALL ME @
149 |
150 | (+91)-7667232335
151 |
152 |
153 |
154 |
155 |
156 |
157 | );
158 | }
159 |
--------------------------------------------------------------------------------
/src/views/dashboard/dashboard.js:
--------------------------------------------------------------------------------
1 | import { React, useState, useEffect } from "react";
2 | import {
3 | Flex,
4 | Box,
5 | Text,
6 | Grid,
7 | useColorModeValue,
8 | useStyleConfig,
9 | Skeleton,
10 | } from "@chakra-ui/react";
11 | import "react-lazy-load-image-component/src/effects/blur.css";
12 | import Navbar from "../../components/Navbar/Navbar";
13 | import routes from "../../routes";
14 | import dashboardimg from "../../assets/dashboard.gif";
15 | import Typewriter from "typewriter-effect";
16 | import { LazyLoadImage } from "react-lazy-load-image-component";
17 |
18 | export default function Dashboard() {
19 | const [loadedDashboardimg, setloadedDashboardimg] = useState(false);
20 | const styles = useStyleConfig("Card");
21 | let highlightTextColor = useColorModeValue("lightblue.100", "lightpeach.100");
22 | let textColor = useColorModeValue("gray.700", "white");
23 | let quotes = [
24 | {
25 | text: "Genius is one percent inspiration and ninety-nine percent perspiration.",
26 | author: "Thomas Edison, type.fit",
27 | },
28 | {
29 | text: "You can observe a lot just by watching.",
30 | author: "Yogi Berra, type.fit",
31 | },
32 | {
33 | text: "A house divided against itself cannot stand.",
34 | author: "Abraham Lincoln, type.fit",
35 | },
36 | {
37 | text: "Difficulties increase the nearer we get to the goal.",
38 | author: "Johann Wolfgang von Goethe, type.fit",
39 | },
40 | {
41 | text: "Fate is in your hands and no one elses",
42 | author: "Byron Pulsifer, type.fit",
43 | },
44 | {
45 | text: "Be the chief but never the lord.",
46 | author: "Lao Tzu, type.fit",
47 | },
48 | {
49 | text: "Nothing happens unless first we dream.",
50 | author: "Carl Sandburg, type.fit",
51 | },
52 | {
53 | text: "Well begun is half done.",
54 | author: "Aristotle, type.fit",
55 | },
56 | {
57 | text: "Life is a learning experience, only if you learn.",
58 | author: "Yogi Berra",
59 | },
60 | {
61 | text: "Self-complacency is fatal to progress.",
62 | author: "Margaret Sangster, type.fit",
63 | },
64 | {
65 | text: "Peace comes from within. Do not seek it without.",
66 | author: "Buddha, type.fit",
67 | },
68 | {
69 | text: "What you give is what you get.",
70 | author: "Byron Pulsifer, type.fit",
71 | },
72 | {
73 | text: "We can only learn to love by loving.",
74 | author: "Iris Murdoch, type.fit",
75 | },
76 | {
77 | text: "Life is change. Growth is optional. Choose wisely.",
78 | author: "Karen Clark, type.fit",
79 | },
80 | {
81 | text: "You'll see it when you believe it.",
82 | author: "Wayne Dyer, type.fit",
83 | },
84 | {
85 | text: "Today is the tomorrow we worried about yesterday.",
86 | author: "type.fit",
87 | },
88 | ];
89 |
90 | let randomNumber = Math.floor(Math.random() * quotes.length);
91 |
92 | useEffect(() => {
93 | window.scrollTo({ top: 0, behavior: "smooth" });
94 | },[]);
95 |
96 | const getActiveRoute = (routes) => {
97 | for (let i = 0; i < routes.length; i++) {
98 | if (window.location.href.indexOf(routes[i].path) !== -1) {
99 | return routes[i].navbarDisplayName;
100 | }
101 | }
102 | };
103 |
104 | return (
105 |
106 |
107 |
108 |
109 |
120 |
126 |
131 |
132 |
137 | Hello Everyone!! 🙋🏻♂️
138 |
139 |
140 |
146 | This is{" "}
147 |
148 | Rahul Kumar Patro
149 |
150 |
151 |
157 | I am a{" "}
158 |
159 | Software Developer
160 |
161 |
162 |
163 |
164 |
165 |
170 |
176 | setloadedDashboardimg(true)}
181 | />
182 |
183 |
184 |
185 |
186 |
187 |
188 |
195 | Random Quote
196 |
201 | {quotes[randomNumber]?.text ? (
202 | {
204 | typewriter.typeString(quotes[randomNumber]?.text).start();
205 | }}
206 | />
207 | ) : (
208 | |
209 | )}
210 |
211 |
212 |
213 |
214 |
215 | );
216 | }
217 |
--------------------------------------------------------------------------------
/src/views/projects/projects.js:
--------------------------------------------------------------------------------
1 | import { React, useEffect } from "react";
2 | import {
3 | Box,
4 | SimpleGrid,
5 | Flex,
6 | Text,
7 | useColorModeValue,
8 | } from "@chakra-ui/react";
9 | import routes from "../../routes";
10 | import Navbar from "../../components/Navbar/Navbar";
11 | import ProjectCard from "../../components/ProjectCard/ProjectCard";
12 | import nftproject from "../../assets/projects/nft_blockchain_500x300.jpg";
13 | import medhub from "../../assets/projects/medhub_500x300.jpg";
14 | import collab from "../../assets/projects/lets_collab_img3.jpg";
15 | import blog from "../../assets/projects/bloggers.jpg";
16 | import eeg from "../../assets/projects/eeg_500x300.jpg";
17 | import mtrans from "../../assets/projects/mt_500x300.jpg";
18 | import primeng from "../../assets/projects/primeng.png";
19 | import steg from "../../assets/projects/steg_500x300.jpeg";
20 |
21 | export default function Projects() {
22 | const textColorPrimary = useColorModeValue(
23 | "secondaryGray.900",
24 | "lightpeach.100"
25 | );
26 |
27 | useEffect(() => {
28 | window.scrollTo({ top: 0, behavior: "smooth" });
29 | },[]);
30 |
31 | const getActiveRoute = (routes) => {
32 | for (let i = 0; i < routes.length; i++) {
33 | if (window.location.href.indexOf(routes[i].path) !== -1) {
34 | return routes[i].navbarDisplayName;
35 | }
36 | }
37 | };
38 |
39 | return (
40 |
41 |
42 |
43 |
49 |
55 |
63 |
71 |
79 |
91 |
99 |
110 | {/* */}
119 |
120 |
127 |
128 | {" "}
129 |
130 |
131 |
137 |
143 |
149 |
150 |
151 |
152 | );
153 | }
154 |
--------------------------------------------------------------------------------
/src/views/resume/resume.js:
--------------------------------------------------------------------------------
1 | import { React, useEffect } from "react";
2 | import routes from "../../routes";
3 | import Navbar from "../../components/Navbar/Navbar";
4 | import { Box, useStyleConfig, Flex, Button } from "@chakra-ui/react";
5 |
6 | export default function Resume() {
7 | const styles = useStyleConfig("Card");
8 |
9 | useEffect(() => {
10 | window.scrollTo({ top: 0, behavior: "smooth" });
11 | },[]);
12 |
13 | const getActiveRoute = (routes) => {
14 | for (let i = 0; i < routes.length; i++) {
15 | if (window.location.href.indexOf(routes[i].path) !== -1) {
16 | return routes[i].navbarDisplayName;
17 | }
18 | }
19 | };
20 |
21 | const handleDownload = () => {
22 | window.location.href =
23 | "https://drive.google.com/uc?export=download&id=1vAJPgdS7Ka94EdaV3rcTqOk1Ky01_9jC";
24 | };
25 |
26 | return (
27 |
28 |
29 |
30 |
31 |
38 |
46 |
47 |
48 |
49 |
55 | Download Resume
56 |
57 |
58 |
59 |
60 | );
61 | }
62 |
--------------------------------------------------------------------------------