Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
1ceae40
Feature to share news/posts/articles (#162)
idebenone Nov 22, 2023
bc56604
Merge branch 'shareFeature' of github.com:idebenone/hackertab.dev
medyo Nov 22, 2023
ad070c0
fix yarn.lock
medyo Nov 22, 2023
91bf7de
Merge branch 'master' into develop
medyo Nov 22, 2023
aef95d5
persist fetched queries in localstorage
medyo Nov 22, 2023
d9e49c0
improve the share modal UI
medyo Nov 22, 2023
2818354
track copy and share events
medyo Nov 22, 2023
8b82688
tag hackertabdev twitter account
medyo Dec 9, 2023
4cd18f4
add missing api url
medyo Dec 9, 2023
b7036e2
Bump manifest version
medyo Dec 9, 2023
67e1df2
fix displaying long urls
medyo Dec 9, 2023
c29a452
Bump manifest version
medyo Dec 9, 2023
fce9e0a
fix chrome upload
medyo Dec 10, 2023
8cb8d3f
remove bookmark sidebar
medyo Dec 17, 2023
64a02ee
revamp the settings
medyo Dec 17, 2023
2b1af78
Merge branch 'master' into develop
medyo Dec 18, 2023
46ebdb1
update deps
medyo Dec 18, 2023
1f4cc40
replace GoPrimitiveDot
medyo Dec 18, 2023
9036ec2
improve the tag step
medyo Dec 18, 2023
dc6b71d
fix default route
medyo Dec 23, 2023
b8fb91e
check if env is defined
medyo Dec 23, 2023
8f597e0
use better router for extensions
medyo Dec 23, 2023
1e1618b
remove duplicat marketing banner
medyo Dec 23, 2023
bdf787d
remove unused deps
medyo Dec 23, 2023
ea0b2df
optimize the build
medyo Dec 23, 2023
b84849f
improve the chunks
medyo Dec 23, 2023
403486e
track add/remove source/language
medyo Dec 23, 2023
d235b4e
redirect to home after applying the dnd
medyo Dec 23, 2023
a06ca25
display search engine logo
medyo Dec 23, 2023
bf76f7e
adapt search engine color
medyo Dec 23, 2023
dc97aef
Squashed commit of the following:
medyo Dec 23, 2023
ec446a7
add ai card to default cards and js as default language
medyo Dec 23, 2023
0766710
fix adblock conflict
medyo Dec 23, 2023
ec57f4c
remove console log
medyo Dec 24, 2023
c7add1d
fix default values
medyo Dec 24, 2023
59283ea
add missing back button
medyo Dec 26, 2023
a7c98e9
increase limit to 50
medyo Dec 26, 2023
e71c580
fix cards display on compact mode
medyo Dec 26, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 8 additions & 7 deletions .github/workflows/distribute.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,16 +38,17 @@ jobs:

- name: Bump version and push tag
id: tag_version
uses: mathieudutour/github-tag-action@v6.1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
dry_run: ${{ github.event.inputs.autoTag == 'false' }}
custom_release_rules: |
"fix:patch:Bug Fixes,hotfix:patch:Bug Fixes,minor:minor:Fixes,patch:patch:Quick fixes,refactor:minor:Refactoring,implement:minor:Features,change:minor:Changes,breaking:major:Changes,major:major:Changes"
uses: anothrNick/github-tag-action@1.67.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
WITH_V: true
DRY_RUN: ${{ github.event.inputs.autoTag == 'false' }}

- name: Update manifest.json
if: github.event.inputs.autoTag == 'true'
run: jq --arg version "${{ steps.tag_version.outputs.new_version }}" '.version=$version' public/base.manifest.json > tmp.json && mv tmp.json public/base.manifest.json
run: |
new_version=$(echo "${{ steps.tag_version.outputs.new_tag }}" | sed 's/^v//')
jq --arg version "$new_version" '.version = $version' public/base.manifest.json > public/base.manifest.json.tmp && mv public/base.manifest.json.tmp public/base.manifest.json

- name: Commit changes
if: github.event.inputs.autoTag == 'true'
Expand Down
27 changes: 19 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,31 +5,38 @@
[![Chrome Web Store Rating](https://img.shields.io/chrome-web-store/stars/ocoipcahhaedjhnpoanfflhbdcpmalmp.svg?colorB=%234FC828&label=rating&style=flat)](https://chrome.google.com/webstore/detail/hackertabdev/ocoipcahhaedjhnpoanfflhbdcpmalmp/reviews)

# Hackertab.dev — All Developer news in one tab!

**Hackertab makes it easy for you to stay up-to-date with the latest developer news, tools, jobs and events.**

<img src="/demo/demo_hackertab.dev.jpeg" width="100%" alt="Hackertab.dev"/>

As a developer, it can be difficult to stay on top of everything happening in the field. Hackertab makes it easy by allowing you to customize your default tab page to include news, tools and events from top sources such as GitHub Trendings, Hacker News, DevTo, Medium, and Product Hunt. No matter what type of developer you are, you'll find valuable and relevant information with Hackertab. Don't miss out - give it a try today!

#### Demo

👉 [now.hackertab.dev](https://now.hackertab.dev)

## 👩‍💻 How to use it

- Install the extension from the [Chrome store](https://bit.ly/hackertab-ch), or [Mozilla add-ons](https://bit.ly/hackertab-ff)
- Open a new tab
- The extension should now be running and visible
- Select your preferred programming languages and sources.
- Enjoy

## 🔥 Features
- 🆕 Hourly updated content
- 💻 Customizable by language or topic
- 👍 Curated content from the best sources
- 🔖 Bookmark and read it later
- 🌙 Dark mode for when it gets late

- 🆕 Daily updated content
- 💻 Customizable by programming language, framework and topic.
- 👍 Curated content from the best sources.
- 🔖 Bookmark and read it later.
- 🌙 Dark mode for when it gets late.
- ✨ AI-powered recommendations exclusively tailored to your preferences.

Even more features are going to come in the future!

## Data sources

- Github Trendings
- Hackernews
- DevTo
Expand All @@ -44,10 +51,13 @@ Even more features are going to come in the future!
- **or create an issue to ask for a new data source**

## Support

Please do not hesitate to ask a question, report a bug or add a suggestion. or send an email to hello@hackertab.dev

## Development
Please use the develop branch

Please use the develop branch. Create an .env file with the necessary

```bash
$ git clone --branch develop git@github.com:medyo/hackertab.dev.git
$ cd hackertab.dev
Expand All @@ -57,9 +67,10 @@ $ # Then visit http://localhost:3000
```

## Maintainers

- [medyo](https://github.com/medyo)
- [chouikane](https://github.com/Chouikane)

## Licencing
Hackertab is licensed under the Apache License, Version 2.0.

Hackertab is licensed under the Apache License, Version 2.0.
See [LICENSE](/LICENSE) for the full license text.
11 changes: 4 additions & 7 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
"dompurify": "^2.2.7",
"htmlparser2": "^8.0.1",
"jsonpath": "^1.1.1",
"localforage": "^1.9.0",
"normalize.css": "^8.0.1",
"prop-types": "^15.0.0-0",
"react": "^17.0.1",
Expand All @@ -24,19 +23,17 @@
"react-dom": "^17.0.1",
"react-easy-sort": "^1.5.1",
"react-error-boundary": "^3.1.4",
"react-icons": "^4.4.0",
"react-icons": "^4.12.0",
"react-markdown": "^7.0.1",
"react-modal": "^3.12.1",
"react-pro-sidebar": "^0.6.0",
"react-router-dom": "^6.21.0",
"react-select": "^5.0.1",
"react-share": "^4.4.1",
"react-simple-toasts": "^5.10.0",
"react-spinners": "^0.10.4",
"react-spring-bottom-sheet": "^3.4.1",
"react-toggle": "^4.1.1",
"react-tooltip": "^4.2.21",
"rss-to-json": "^2.1.1",
"styled-components": "2",
"timeago.js": "^4.0.2",
"type-fest": "^1.2.0",
"vite-plugin-ejs": "^1.6.4",
Expand All @@ -47,8 +44,8 @@
"start": "vite",
"build:web": "VITE_BUILD_TARGET=web ./script/build.sh",
"build:ext": "VITE_BUILD_TARGET=extension ./script/build.sh",
"build:firefox": "./script/build-firefox.sh",
"build:chrome": "./script/build-chrome.sh"
"build:firefox": "VITE_BUILD_PLATFORM=firefox ./script/build-firefox.sh",
"build:chrome": "VITE_BUILD_PLATFORM=chrome ./script/build-chrome.sh"
},
"eslintConfig": {
"extends": [
Expand Down
31 changes: 7 additions & 24 deletions src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
import { useEffect, useLayoutEffect, useState } from 'react'
import 'react-contexify/dist/ReactContexify.css'
import 'src/assets/App.css'
import { DNDLayout, Header } from 'src/components/Layout'
import { MarketingBanner } from 'src/features/MarketingBanner'
import { BookmarksSidebar } from 'src/features/bookmarks'
import { DNDLayout } from 'src/components/Layout'
import { setupAnalytics, setupIdentification, trackPageView } from 'src/lib/analytics'
import { useUserPreferences } from 'src/stores/preferences'
import { AppContentLayout } from './components/Layout'
Expand All @@ -22,8 +18,6 @@ const intersectionCallback = (entries: IntersectionObserverEntry[]) => {
}

export const App = () => {
const [showSideBar, setShowSideBar] = useState(false)
const [showSettings, setShowSettings] = useState(false)
const [showOnboarding, setShowOnboarding] = useState(true)
const { onboardingCompleted, maxVisibleCards, isDNDModeActive, DNDDuration, setDNDDuration } =
useUserPreferences()
Expand Down Expand Up @@ -64,24 +58,13 @@ export const App = () => {

return (
<>
<MarketingBanner />
{!onboardingCompleted && isWebOrExtensionVersion() === 'extension' && (
<OnboardingModal showOnboarding={showOnboarding} setShowOnboarding={setShowOnboarding} />
)}

<div className="App">
{!onboardingCompleted && isWebOrExtensionVersion() === 'extension' && (
<OnboardingModal showOnboarding={showOnboarding} setShowOnboarding={setShowOnboarding} />
)}
<Header
setShowSideBar={setShowSideBar}
showSideBar={showSideBar}
showSettings={showSettings}
setShowSettings={setShowSettings}
/>

<div className="layoutLayers hideScrollBar">
{isDNDModeActive() && <DNDLayout />}
<AppContentLayout setShowSettings={setShowSettings} />
</div>
<BookmarksSidebar showSidebar={showSideBar} onClose={() => setShowSideBar(false)} />
<div className="layoutLayers hideScrollBar">
{isDNDModeActive() && <DNDLayout />}
<AppContentLayout />
</div>
</>
)
Expand Down
71 changes: 68 additions & 3 deletions src/assets/App.css
Original file line number Diff line number Diff line change
Expand Up @@ -329,7 +329,20 @@ a {
height: 16px;
width: 16px;
}

.blockHeaderBadge {
width: auto;
font-size: 12px;
height: 20px;
background-color: var(--tooltip-accent-color);
border-radius: 20px;
justify-content: center;
align-items: center;
text-align: center;
display: inline-flex;
padding: 0 6px;
text-transform: lowercase;
color: white;
}
.blockHeaderIcon img {
display: block;
}
Expand All @@ -348,7 +361,7 @@ a {
position: absolute;
right: 0;
top: 0;
width: 26%;
width: 30%;
}

.blockActions.active {
Expand Down Expand Up @@ -408,6 +421,16 @@ a {
.blockRow:not(:last-child) {
border-bottom: 1px solid var(--card-content-divider);
}
.rowCover {
border-radius: 4px;
display: block;
width: 100%;
min-height: auto;
object-fit: cover;
aspect-ratio: 16/9;
background-color: var(--placeholder-background-color);
margin-bottom: 12px;
}

.rowTitle {
color: var(--primary-text-color);
Expand All @@ -418,11 +441,22 @@ a {
display: flex;
flex-direction: row;
}
.rowLink {
color: var(--primary-text-color);
margin: 0;
padding: 0;
font-size: 16px;
text-decoration: none;
display: flex;
flex-direction: row;
}

.rowTitle:hover {
color: var(--primary-hover-text-color);
}

.titleWithCover {
display: block;
}
.dark .blockHeaderWhite {
color: white;
}
Expand Down Expand Up @@ -509,6 +543,25 @@ a {
color: #99a2ac;
}

.backToHome {
display: flex;
order: 4;
width: 100%;
}

.backToHome a {
display: inline-flex;
align-items: center;
gap: 8px;
font-size: 16px;
vertical-align: middle;
text-decoration: none;
}

.backToHome a:hover {
opacity: 0.7;
}

.tags {
display: flex;
flex-wrap: wrap;
Expand Down Expand Up @@ -834,10 +887,15 @@ Producthunt item
width: 100%;
}

.dark .themeAdaptiveFillColor {
fill: white;
}

.searchBarIcon {
position: absolute;
height: 40px;
margin: 0 16px;
width: 24px;
}

.searchBarInput {
Expand Down Expand Up @@ -976,6 +1034,10 @@ Producthunt item
.blockHeader {
display: none;
}

.tags {
display: none;
}
}

@keyframes cardPlaceholderPulse {
Expand Down Expand Up @@ -1270,3 +1332,6 @@ Producthunt item
color: var(--primary-text-color);
border-radius: 10px;
}
.capitalize {
text-transform: capitalize;
}
2 changes: 1 addition & 1 deletion src/assets/baidu_logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion src/assets/bing_logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading