Daily is an open source browser extension which provides curated dev news to your new tab.
It gathers and ranks articles from tens of unique sources to help developers stay updated with the most relevant developer news. You can bookmark items, sync your data across devices, and read when you want. It works offline as well and has a progressive web app (PWA) for mobile.
🌟Well-maintained: We are working continuously to introduce new features, fix bugs, and improve user experience — 40+ releases on average in a year.
♾Constantly Updated: Daily's article feed is constantly updated. As soon as new articles get published, they start appearing in Daily.
🧵Open Source: Daily is completely open source. You can see the code to learn how it works, and contribute to help it improve.
Daily is currently available for Google Chrome, and Firefox. There's also a progressive web app (PWA) for mobile devices. Download for:
We, as developers, spend a lot of time looking for valuable articles and blog posts. It's hard to catch up with all the latest happenings — coz it's frustrating and consumes a ton of time.
That's why built Daily to help you:
📰Read articles at one click
Daily might look simple on the surface but actually it is powered by a complex and robust system of different applications. It contains several services, some are big, others are micro and easy to maintain. Below is the list of different projects that we maintain under Daily.
Community & Docs
- daily - This is the repository you are currently at. It serves as a central place for all the projects. It contains documentation, community ideas, suggestions, and whatnot.
daily-apps - Monorepo with all the frontend related projects since Daily 2.0 — Vue components library, API encapsulation library, Daily extension and everything related to frontend.
daily-go - Progressive web app (PWA) called Daily Go for mobile devices. It comes with a story like interface, called toilet mode. You can also manage your bookmarks on it.
- daily-api - A monolith API service, being slowly split apart to different services. It manages content related data such as posts, feeds, tags, etc.
- daily-redirector - Service for redirecting visitors from Daily custom links to the original link.
- daily-gateway - API gateway which receives all traffic and forward it to the relevant services after authenticating and authorizing the request.
- daily-monetization - Serving ads from different providers including CodeFund, BuySellAds and self-hosted campaigns.
- daily-functions - Monorepo with Cloud Functions which mostly take care of ingesting new content but also web push and others.
Below is a list of technologies we use at Daily.
🌳Services: Node.js & Golang
☁️Cloud: Google Cloud Platform Pub/Sub | SQL | Serverless
🎩Deployment: Kubernetes with Helm charts
🎛Data Feed: Superfeedr
📨Email Service: SendGrid
🚨Push Notifications: OneSignal
Running Daily Locally
Let's setup Daily locally. First you need to setup the services required to run the Daily applications, then you can run the application you want. Follow up the setups below to quickly get started.
Setting Up Daily Services
→ STEP #0
- Go through the projects description and the architecture to familiarize yourself with the system and its components.
- Make sure docker-compose is installed on your machine. Take a look at the official guide for installation. After installation, run the following command in your terminal for a double check.
docker-compose -v # docker-compose version 1.25.5, build 8a1c60f6 // Expected result
→ STEP #1
Clone the daily-apps repo
→ STEP #2
Daily services are fully dockerized and publicly available on a Google Cloud Registry (GCR) repository. We are going to use them!
The first step is to pull and run the docker images, thanks to docker-compose network and environment variables are preconfigured and ready to-go.
Run the following command to accomplish this task:
docker-compose pull && docker-compose up
→ STEP #3
Last step is to populate your database using the seed data. All you need to do is, run the following command in your terminal:
docker exec daily-apps_daily-api_1 node bin/import.js # importing Source // Expected result # importing SourceDisplay # importing Post # importing PostTag # importing TagCount # importing Notification # done
Now you have all the required services running. Each project's repo explains what services are needed and how to get started with them.
Note that currently not all services are ready (or needed) for local environment so Daily Redirector and Daily Monetization services are not available for you.
It means that if you click on an article you will get error 404 and that you will not see ads on your local environment.
Setting Up Daily Apps
Now, let's quickly setup Daily chrome extension to elaborate how you can setup each Daily application.
→ STEP #1
Run the following commands in your terminal to bootstrap.
Yes, we use
lerna for this purpose.
npx lerna bootstrap # npx: installed 698 in 89.279s // Expected result # ... # lerna success Bootstrapped 4 packages npx lerna run build # Done in 29.19s. // Expected result # lerna success run Ran npm script 'build' in 4 packages in 48.5s: # lerna success - @daily/components # lerna success - @daily/extension # lerna success - @daily/moderator # lerna success - @daily/services
→ STEP #2
packages/extension in the
daily-apps folder. Run the following command to start it in development mode. It will watch for all the file changes and generate the output in
yarn serve # ... # DONE Build complete. Watching for changes... // Expected result
→ STEP #3
By now, you will have unpacked Daily extension in your
dist folder. Follow the steps listed below to load the extension.
- Go to
chrome://extensionspath in your Chrome browser.
Developer modefrom the top right section.
- Click on
Load Unpackbutton and select your
That's it! Your extension has been loaded in your browser. Happy hacking!
For Firefox, you can follow this guide. Similarly, you can run all the other Daily apps. Each app has a readme file in its repo to help you get started.
Want to Contribute?
We are open to all kind of contributions. If you want to:
🤔Share an idea
🐛Report an issue
👨💻Contribute to the code
You are more than welcome. Before contributing, kindly check our guidelines.
We have compiled a list of FAQs. You can find it here.
Meet the core team of Daily.
Feel free to reach us out and say hi
What Do You Think of Daily?
Licensed under AGPL-3.0.