/resumix

Source code for the Resumix app

Primary LanguageJavaScriptMIT LicenseMIT

Read Less

License

Web Client CI Mobile Client CI API CI Scheduler CI Worker CI

JIRA DigitalOcean

https://dev.readless.ai https://readless.ai https://apps.apple.com/us/app/read-less-news/id6447275859 https://play.google.com/store/apps/details?id=ai.readless.ReadLess

Read Less is the model for a fully automated news aggregation pipeline that is powered by generative AI!

Table of Contents

Roadmap

MVP and POC

  • Automated summarization of news articles in various consumption lengths
  • Basic MVP of web and mobile UI that can fetch results and view different length summaries
  • Add newsletter on web app for users to receive email progress updates
  • User account registration
  • Third-party login support
  • Access token based login
  • Role-Based Access Control (RBAC)
  • Remove dependency on redis
  • Refactor to static web pages with Next.js for SEO
  • Improve pipelines/webscraping backend article generation (not noticeable other than fewer garbage articles that say "Okay, I'll try to be better" or something)
  • Add support for interactions (v1) such as upvotes and downvotes (backend)
  • upvote/downvote interactions front ent support
  • Record views and reading format
  • Add support for users to provide feedback about articles
  • Add support for users to flag articles as false, low-quality, etc.
  • (I already record the metrics to implement this eventually) Bounty/training/feedback program will play an important role in the loyalty and beta test programs (eventually moderation)

v1.0 - Mobile App

  • MVP Project and POC

v1.1 - Watch Support and Sorting

  • Advanced search/filters
    • By category
    • By outlet
    • By relevance of wildcards
    • By tags
  • Onboarding guide for mobile app
  • Basic settings/preferences
  • Interactions
  • Modify Account Page
  • User login/signup
  • Activity history
  • Minor UI touch ups
  • Offline bookmarking
  • Categories
  • Following of categories on (My Stuff Screen)
  • Metrics gathering
  • Bookmarking and Favorites
  • Sharing of articles
  • Display mobile app banner on web app
  • Update web app manifests to have graphics
  • Adding of comments and messaging support (hopefully will not be a heavy lift as moderation could be outsourced to ChatGPT)
  • Adding of following users/friends (see the news articles your friends interact with in realtime)

v1.2 - Text-to-Speech

  • Basic text-to-speech

v1.3 - AI Generated Images + Sentiment Analysis

  • AI generated images
  • Autoload more articles on scroll
  • Compact mode + short summaries
  • Sloppy AF OpenAI based sentiment analysis scoring

v1.4/v1.5 - iPad Support + Smart Search

  • Topic detection in past 24 hours
  • iPad support
  • Smart search preparations + highlighting

v1.6 - Smart Seach + AFINN/VADER Sentiment Analysis

  • Smart search
  • AFINN/VADER Sentiment Analysis
  • Channels
  • Sentiment analysis with every query

v1.7 - Localization

  • Localization for 30+ languages
  • On-demand translation of articles
  • UI touch ups
  • Apple Watch loads pictures
  • Performance improvments

v1.8/v1.9/v1.10 - Duplicate Article Detection

  • Improve applinks to show OG images
  • Improve share dialog
  • AI Duplicate Article Detection
  • Onboarding less invasive card stacks

v1.11 - UI Updates to Match Artifact

  • Major performance updates
  • Press and hold to share
  • Suck it meta! Come at me bro!

v1.12 - Recaps

  • Introduces daily recaps to the mobile app
  • Minor UI improvements and bug fixes

v1.13 - Recap Localization

  • Localizes daily recaps on the mobile app
  • Major UI performance updates
  • Adds context menus in intuitive places
  • Moves sentiments to always be shown
  • Short hold shows summary previews (iOS only for now)
  • Implement ContextMenu native for Android?
  • Improve localization to happen on-demand seamlessly, to appear already translated (will need to revisit for streaming performance)
  • Update publishers to fetch original images assigned to @mkdirsteve
  • Improve top stories algorithm to prioritize topics covered in past 24 hours over sibling count

v1.14 - Notifications/Newletters

  • App Store artwork makeover
  • Add a dislike system for the future "smart" algorithm?
  • Backend subscription plumbing to emails/sms/push notifications (50% done)
  • Add subscription flow to mobile UI
  • Daily (eventually customizable) newsletters with headlines
  • Subscription to topics, threads, and/or keywords
  • Push notifications with Firebase
  • Replace trigger words with actual negative filters

v1.15/v1.16 - Home Screen Widget

  • Home screen widget for iOS
  • Home screen widget for Android
  • Add variations to summaries

v1.17 - Bringing Back Accounts

  • Improve backend plumbing to offload much of the client data onto the backend such as followed preferences?
  • 2-factor authentication with text and/or authenticator applications
  • Pros of accounts?
    • Account recovery
    • Offload preferences on backend
    • Backend can employ workers to better provide service
    • Syncing of preferences across devices
    • Do accounts really need emails? Only for recovery?
    • Could provide user with a private key instead for recovery?
  • Anonynmous accounts
  • Streaks
  • Sharing of streaks
  • Notification of lost streaks

v1.18 - Word Games and Achievements

  • Word games
  • Achievements
  • Leaderboards
  • Sharing of achievements
  • Server side syncing of user data?

v1.19 - Local News and On Demand Jobs

  • Provide local news (needs some kind of optimization for scaling)
  • Expose pipeline for users to upload text/documents to be processed
  • Allow users to re-request AI images?
  • Text notifications

v27.0 - Enhanced Discover Page

  • Conversion of Discover page to match the trending style of "Following" and "For You" in the example of social media apps like Instagram and TikTok
  • Use a "smarter" algorithm to better serve users, or nah?

v27.1 - Cross-Comparative Article Generation

  • Cross-comparative comprehensive article generation that accounts for multiple sources writing about the same topic
  • Launch of Tier 1 premium membership program
  • Adding of In-App subscriptions for premium members and content
  • Launching of loyalty and referral program

v69.69 - Shit is getting realllllll

  • On-demand cross comparative summaries of articles by registered users (up to a free credit limit per month)
  • Audio options for listening to sources and articles using text-to-speech

v6724.21 - Who the f**k knew we would make it this far?!

  • Launch of Tier 2 premium membership program
  • News coverage search and metrics for Tier 2 membership

Development - Getting Started

First run the interactive setup script written by chatgpt!

readless $ ./setup.sh

Web Client

See the README

readless $ rless web --local

Server API

See the README

readless $ rless api --local

Server Scheduler

See the README

readless $ rless scheduler --local

Server Worker

See the README

readless $ rless worker --local

Contribution

To make a contribution, simply make a new PR onto the dev branch. I will automatically be tagged for review and once I approve you're free to merge it!

CLI Cheatsheet

Make a new PR

It is usually good practice (but not always required) to rebase your branch before you push (line 23 below). Anytime you rebase you will need to use the --force glag when pushing. I don't use it below, because it should not be a regularly used flag; only when overwriting rebased code.

 1 | # cd into server directory
 2 | cd ~/git/noodleofdeath/readless/src/server
 3 |
 4 | # clear any unstaged changes
 5 | git reset --hard
 6 |
 7 | # checkout the dev branch
 8 | git checkout dev
 9 |
10 | # pull latest changes from dev
11 | git pull --rebase
12 |
13 | # create your new branch with changes
14 | git checkout -b feat/pub-updates
15 |
16 | # stage your file changes
17 | git add .
18 |
19 | # commit your staged changes
20 | git commit -m "feat(sitemaps): adds titties to readless"
21 |
22 | # push your changes to your branch
23 | git push -u origin feat/pub-updates
24 |
25 | # on mac this should open chrome for you to create your PR
26 | open https://github.com/NoodleOfDeath/readless/pulls
27 |
28 | # im curious now. ive never made a PR from CLI
29 | # researching... (6%)... (80%)... (100%)
30 | # oh sickkkk
31 |
32 | # install the hub command
33 | brew install hub
34 |
35 | # show the hub usage
36 | hub --help
37 |
38 | # make pull request after you push (line 23)
39 | hub pull-request

Rebase your Branch

To rebase your branch you simply do the following, where origin/dev is the branch you want to pull updated code from and merge into your branch.

git fetch && git rebase origin/dev

When your branch is behind the origin branch, rebasing will usually fix the below error. You will never experience this error ever in this project because you will never commit directly to dev or main.

thom@mac mobile % git push
To github.com:noodleofdeath/readless.git
 ! [rejected]          dev -> dev (fetch first)
error: failed to push some refs to 'github.com:noodleofdeat
h/readless.git'
hint: Updates were rejected because the remote contains wor
k that you do
hint: not have locally. This is usually caused by another r
epository pushing
hint: to the same ref. You may want to first integrate the 
remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --hel
p' for details.