Skip to content

Commit 9b648d9

Browse files
Merge branch 'main' into new-resume
2 parents 161b209 + e150626 commit 9b648d9

23 files changed

+1100
-1253
lines changed

.github/workflows/check_duplicate_tools.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@ jobs:
1313

1414
- name: Check for duplicate entries in product.json
1515
run: |
16-
# Check for duplicate entries in product.json
17-
jq -r '.[].productName' product.json | sort | uniq -d > duplicates.txt
16+
# Check for duplicate entries based on the 'link' field in product.json
17+
jq -r '.[].link' product.json | sort | uniq -d > duplicates.txt
1818
if [ -s duplicates.txt ]; then
19-
echo "Duplicate entries found in product.json:"
19+
echo "Duplicate entries found in product.json based on 'link':"
2020
cat duplicates.txt
2121
exit 1
2222
else
23-
echo "No duplicate entries found."
23+
echo "No duplicate entries found based on 'link'."
2424
fi
2525
2626
close-issues:
@@ -46,4 +46,4 @@ jobs:
4646
-H "Accept: application/vnd.github.v3+json" \
4747
https://api.github.com/repos/${{ github.repository }}/issues/$ISSUE \
4848
-d '{"state":"closed"}'
49-
done
49+
done

README.md

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
<a id="top"></a>
12
<div align="center">
23
<h1><img src="https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Objects/Laptop.png" alt="Laptop" width="50" height="50" /> DevLabs</h1>
34
<p>Welcome to DevLabs, a website where you can search for free tools that are useful for your daily needs. This application is created by the incredible open-source community. On DevLabs, you can discover a collection of free tools that can assist you in various aspects of your life. Moreover, you have the opportunity to contribute to this project by adding more tools to the database.</p>
@@ -212,7 +213,9 @@ If you would like to contribute to the project then kindly go through [Contribut
212213
<h2>Let's Collaborate and Make DevLabs Even Better! 💻🌟</h2>
213214
</div>
214215

215-
### ✨ Features
216+
<details>
217+
<summary><h2>✨ Features</h2></summary>
218+
216219

217220
1. User Authentication:
218221
Secure user registration and login using JWT.
@@ -255,12 +258,30 @@ If you would like to contribute to the project then kindly go through [Contribut
255258
### 📚 Learn
256259
To know more about project, please go through [Learn](learn.md)
257260

261+
</details>
262+
258263
### 🌍 Community
259264

260-
### 🏆 Contributors
265+
<hr>
261266

262-
Recognize the individuals who have contributed to the project. You can use tools like All Contributors to automatically generate a list of contributors.
267+
<h2 align = "center">Our Contributors ❤️</h2>
268+
<div align = "center">
269+
<h3>Thank you for contributing to our repository</h3>
263270

264-
```bash
265-
npx all-contributors-cli add <username> <contribution>
266-
```
271+
<a href="https://github.com/HimanshuNarware/Devlabs/graphs/contributors">
272+
<img src="https://contrib.rocks/image?repo=HimanshuNarware/Devlabs" />
273+
</a>
274+
275+
</div>
276+
277+
<hr>
278+
<div>
279+
<h2><img src="https://fonts.gstatic.com/s/e/notoemoji/latest/1f64f_1f3fb/512.webp" width="35" height="35"> Support </h2>
280+
</div>
281+
282+
<div>
283+
Don't forget to leave a star<img src="https://fonts.gstatic.com/s/e/notoemoji/latest/1f31f/512.webp" width="35" height="30"> for this project!
284+
</div> <br>
285+
286+
<a href="#top" style="position: fixed; bottom: 20px; right: 20px; background-color: black ; color: white; padding: 10px 20px; text-align: center; text-decoration: none; display: inline-block; border-radius: 5px; font-family: Arial; font-size: 16px;">Go to Top</a>
287+
`

frontend/src/App.css

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,10 @@
1-
* {
2-
cursor: none;
3-
}
4-
51
.sidebar-content {
62
padding: 10px;
7-
cursor: none;
3+
cursor: pointer;
4+
85
transition: background-color 0.2s;
9-
}
10-
11-
.Toastify__toast-container {
12-
color: #000;
13-
}
14-
15-
.Toastify__toast {
16-
font-size: 18px;
17-
color: black;
18-
background-color: rgb(165, 57, 197);
19-
}
6+
}
7+
8+
cursor: pointer;
9+
transition: background-color 0.2s;
10+
}

frontend/src/App.js

Lines changed: 12 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
1-
import React, { useState, useEffect, Suspense, lazy } from "react";
2-
import { Route, Routes } from "react-router-dom"; // Correct import
1+
import React, { useState, useEffect, lazy, Suspense } from "react";
2+
import { Route, Routes } from "react-router-dom";
33
import "./App.css";
44
import AOS from "aos";
55
import "aos/dist/aos.css";
66
import { Toaster } from "react-hot-toast";
7-
import ScrollToTop from "./Component/ScrollToTop";
7+
8+
// Normal imports for components always needed
89
import Navbar from "./Component/Navbar/Navbar";
9-
import BackToTopButton from "./Component/BackToTopButton";
1010
import Footer from "./Component/Footer";
11-
import TrailingCursor from "./Component/TrailingCursor/TrailingCursor";
12-
import Login from "./Component/Login";
13-
import Register from "./Component/Register";
11+
import BackToTopButton from "./Component/BackToTopButton";
12+
import ScrollToTop from "./Component/ScrollToTop";
1413
import ChatAssistant from "./ChatAssistant/ChatAssistant";
15-
// Lazy load components
14+
15+
// Lazy load components for pages and rarely changed components
1616
const About = lazy(() => import("./Component/About"));
1717
const Rateus = lazy(() => import("./Component/Rateus"));
1818
const Home = lazy(() => import("./Component/Home"));
19-
// const NotFound = lazy(() => import("./Component/NotFound"));
19+
const NotFound = lazy(() => import("./Component/NotFound"));
2020
const OpenSource = lazy(() => import("./Component/OpenSource"));
2121
const Review = lazy(() => import("./Component/Review"));
2222
const BookMark = lazy(() => import("./Component/BookMark"));
@@ -31,66 +31,35 @@ const Extension = lazy(() => import("./pages/Extension"));
3131
const EthicalHacking = lazy(() => import("./pages/EthicalHacking"));
3232
const FrontendTools = lazy(() => import("./pages/FrontendTools"));
3333
const Faq = lazy(() => import("./Component/Faq"));
34-
const CodingPlatform = lazy(() => import("./pages/CodingPlatform")); // Corrected import
34+
const CodingPlatform = lazy(() => import("./pages/CodingPlatform"));
3535
const CoursesPlatform = lazy(() => import("./pages/CoursesPlatform"));
3636
const Collaboration = lazy(() => import("./pages/Collaboration"));
3737
const Productivity = lazy(() => import("./pages/Productivity"));
3838
const Extensions = lazy(() => import("./pages/Extensions"));
39-
4039
const Movies = lazy(() => import("./pages/Movies"));
41-
4240
const Ui = lazy(() => import("./pages/UserInterface"));
43-
4441
const RemoteJob = lazy(() => import("./pages/RemoteJob"));
4542

4643
function App() {
4744
const [searchQuery, setSearchQuery] = useState("");
45+
4846
useEffect(() => {
4947
AOS.init();
5048
}, []);
5149

5250
return (
5351
<>
5452
<ScrollToTop />
55-
<TrailingCursor />
5653
<Navbar setSearchQuery={setSearchQuery} />
57-
<Routes>
58-
<Route path="/" element={<Home searchQuery={searchQuery} />} />
59-
<Route path="/bookmark" element={<BookMark />} />
60-
<Route path="/about" element={<About />} />
61-
<Route path="/open-source" element={<OpenSource />} />
62-
<Route path="/review" element={<Review />} />
63-
<Route path="/faq" element={<Faq />} />
64-
<Route path="/rateus" element={<Rateus />} />
65-
<Route path="/contact" element={<Contact />} />
66-
<Route path="/remote-jobs" element={<RemoteJobs />} />
67-
<Route path="/ai" element={<AI />} />
68-
<Route path="/movies-series" element={<Movie />} />
69-
<Route path="/extension" element={<Extension />} />
70-
<Route path="/ui-design" element={<UI />} />
71-
<Route path="/front-end-tools" element={<FrontendTools />} />
72-
<Route path="/ethical-hacking" element={<EthicalHacking />} />
73-
<Route path="/coding-platform" element={<CodingPlatform />} />
74-
<Route path="/courses-platform" element={<CoursesPlatform />} />
75-
<Route path="/collaboration-tools" element={<Collaboration />} />
76-
<Route path="/login" element={<Login />} /> {/* New Route */}
77-
<Route path="/register" element={<Register />} /> {/* New Route */}
78-
{/* Define other routes as needed */}
79-
<Route path="*" element={<NotFound />} /> {/* 404 route */}
80-
</Routes>
81-
=======
8254
<Suspense fallback={<div>Loading...</div>}>
8355
<Routes>
8456
<Route path="/" element={<Home searchQuery={searchQuery} />} />
85-
<Route path="/signup" element={<Signup />} />
8657
<Route path="/bookmark" element={<BookMark />} />
8758
<Route path="/about" element={<About />} />
8859
<Route path="/open-source" element={<OpenSource />} />
8960
<Route path="/review" element={<Review />} />
9061
<Route path="/faq" element={<Faq />} />
9162
<Route path="/rateus" element={<Rateus />} />
92-
<Route path="/contact" element={<Contact />} />
93-
<Route path="/profile" element={<Profile />} />
9463
<Route path="/remote-jobs" element={<RemoteJobs />} />
9564
<Route path="/ai" element={<AI />} />
9665
<Route path="/movies-series" element={<Movie />} />
@@ -100,17 +69,7 @@ function App() {
10069
<Route path="/ethical-hacking" element={<EthicalHacking />} />
10170
<Route path="/coding-platform" element={<CodingPlatform />} />
10271
<Route path="/courses-platform" element={<CoursesPlatform />} />
103-
<Route path="/productivity-tools" element={<Productivity />} />
104-
<Route path="/collaboration-tools" element={<Collaboration />} />
105-
<Route path="/extensions" element={<Extensions />} />
106-
107-
<Route path="/movies&series" element={<Movies />} />
108-
109-
<Route path="/ui-designs" element={<Ui />} />
110-
<Route path="/remote-job" element={<RemoteJob />} />
111-
112-
{/* Define other routes as needed */}
113-
{/* <Route path="*" element={<NotFound />} /> 404 route */}
72+
<Route path="*" element={<NotFound />} /> {/* 404 route */}
11473
</Routes>
11574
</Suspense>
11675
<BackToTopButton />

frontend/src/Component/BookMark.js

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useState } from "react";
1+
import React, { useState, useEffect } from "react";
22
import { useSelector, useDispatch } from "react-redux";
33
import { deleteSource } from "../Slice/DataSlice";
44
import bookmarkAnimation from "../lottie/bookmark.json";
@@ -7,19 +7,18 @@ import Lottie from "lottie-react";
77
import toast from "react-hot-toast";
88

99
function BookMark() {
10-
const sourceData = useSelector((state) => state.SourceReducer.sourceData);
10+
const sourceData = useSelector((state) => state.SourceReducer.sourceData); // Adjust the selector to match your state structure
1111
const dispatch = useDispatch();
1212
const [currentPage, setCurrentPage] = useState(1);
1313
const [postPerPage] = useState(8); // Number of bookmarks per page
14+
15+
useEffect(() => {
16+
localStorage.setItem("bookmarks", JSON.stringify(sourceData));
17+
}, [sourceData]);
18+
1419
const handleDeleteBookmark = (name) => {
20+
console.log("remove", name);
1521
dispatch(deleteSource({ name }));
16-
17-
const bookmarksInStorage =
18-
JSON.parse(localStorage.getItem("bookmarks")) || [];
19-
const updatedBookmarks = bookmarksInStorage.filter(
20-
(bookmark) => bookmark.name !== name
21-
);
22-
localStorage.setItem("bookmarks", JSON.stringify(updatedBookmarks));
2322
toast.success("Bookmark removed successfully");
2423
};
2524

@@ -39,10 +38,17 @@ function BookMark() {
3938
{currentBookmarks?.length > 0 ? (
4039
currentBookmarks?.map((data, index) => (
4140
<div className="bookmark__box" key={index}>
42-
<img className="bookmark__logo" src={data.image} alt={data.name} />
41+
<img
42+
className="bookmark__logo"
43+
src={data.image}
44+
alt={data.name}
45+
/>
4346
<h2>{data.name}</h2>
4447
<p className="bookmark__box-text">{data.desc}</p>
45-
<button className="bookmark__button" onClick={() => window.open(data.link)}>
48+
<button
49+
className="bookmark__button"
50+
onClick={() => window.open(data.link)}
51+
>
4652
Link
4753
</button>
4854
<button
@@ -103,7 +109,9 @@ function BookMark() {
103109
style={{ height: "200px" }}
104110
/>
105111
<h1 className="text-2xl font-semibold">No bookmark Found</h1>
106-
<h3 className="mb-4">Explore Devlabs and add them to your bookmark</h3>
112+
<h3 className="mb-4">
113+
Explore Devlabs and add them to your bookmark
114+
</h3>
107115
</div>
108116
)}
109117
</div>

frontend/src/Component/Footer.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,5 +233,5 @@ function Footer() {
233233
</footer>
234234
);
235235
}
236-
237236
export default Footer;
237+

0 commit comments

Comments
 (0)