Giter VIP home page Giter VIP logo

hot-flag-deals's Introduction

Hello! ๐Ÿ˜„

Intro

I like tech (surprise!).

I'm curious and resourceful.

Ask me anything, I'm friendly!

Reach me at

Metrics GitHub Metrics
WakaTime

๐Ÿ“Š This Week I Spent My Time On

๐Ÿ’ฌ Programming Languages: 
TypeScript               14 mins             โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘   73.10 % 
Java                     5 mins              โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘   26.90 % 

๐Ÿ”ฅ Editors: 
Intellijidea             20 mins             โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ   100.00 % 

Last Updated on 22/05/2024 10:20:18 UTC

hot-flag-deals's People

Watchers

 avatar  avatar

hot-flag-deals's Issues

Email confirmation feature

As a user, I want to confirm my subscription to the newsletter, so that I don't receive random unwanted subscriptions.

Acceptance criteria

  • The link in the email would look like something like https://deals.gordon-pn.com/confirm/aebafcacecf7fa16a68f6b26b0abfcee (or use parameters)
  • When the link is clicked, search the database for a matching hash and set confirmed column to true
  • Show a page to the user to say that their email has been confirmed successfully
  • Adjust newsletter service to only email those with confirmed emails
  • If a user subscribes again, then simply send a new confirmation email but do not add a row

Depends on

  • Unsubscribe and subscribe feature

References

Email service

As a user, I want daily email newsletters, so that I can stay up-to-date with deals without needing to check the forums.

Acceptance criteria:

  • Read from a DB table to get list of subscribers
  • Queries unseen deals from DB
  • Automated daily emails to subscribers
  • Does not send an email if there are no current deals
  • Marks deals as seen after the email has been sent

References

Could use SendGrid this time around to send emails
https://github.com/sendgrid/sendgrid-go

RESTful API

As a developer, I want API endpoints, so that I can feed information to a future front-end.

Acceptance criteria

  • Subscribe endpoint
  • Unsubscribe endpoint
  • Confirmation endpoint
  • Endpoint to get deals from the last 24 or 48 hours

Tasks

  • #11 email confirmation feature
  • #12 unsubscribe feature
  • #13 subscribe feature

References

Web frontend improvements

As a user, I want more filtering options on the web frontend, so that I can see more relevant deals.

References

Do not limit to top 50 deals in the last 48 hours:

  • Allow users to select the time range (e.g. last month, last N weeks, last N days)
  • Endless scrolling, but do not return deals with negative scores
  • Do the same for the Trending forum category

Search and display timeline

As a user, I want to around what time of the year does a certain keyword come up more, so that can analyze when a certain deal might happen.

References

When searching for a keyword, display on a timeline when the keyword appears the most. We can see when a certain recurs more.

Unsubscribe feature

As a user, I want a link to unsubscribe, so that I can unsubscribe if ever I am not interested anymore.

Acceptance criteria

  • Every newsletter should include a link to unsubscribe in the footer
  • The link would look something like https://deals.gordon-pn.com/unsubscribe/aebafcacecf7fa16a68f6b26b0abfcee (or use parameters)
  • When clicked, search the database for the same hash and remove the row (1 click unsubscribe)
  • Show a page with success then return to main page after timeout
  • If not found, just return success to the user (prevent unethical users)

References

Subscribe feature

As a user, I want a subscription form, so that I can subscribe to the newsletter.

Acceptance criteria

  • When a user subscribes through the site, an email should be dispatched to that email
  • Captcha to submit
  • The page changes to tell the user that an email has been sent and that they need to confirm
  • The form only takes a name and an email (do proper sanitizing and validation!)
  • A row is added to the database with confirmed set to false and an email md5 hash (need to add these columns)

References

Adjust filtering algorithm

As a user, I want a better filtering algorithm, so that I receive the pertinent notifications.

References

Currently, the algorithm is using an arbitrary factor to multiply by to determine if it is a hot deal.

Might be better to use an nth percentile to filter by.

Docker container for Scraper

As a developer, I want a Docker configuration, so that the service can easily be deployed.

Acceptance criteria:

  • Docker-compose, and Dockerfile

Scraper service

As a developer, I want a scraper service, so that the data is always up-to-date.

Acceptance criteria:

  • Must be an automated service, where it requires no user interaction to run
  • Health checks, for monitoring.
  • Inserts and updates to a PostgreSQL DB
  • Deployable as a Docker container
  • Proper logging for observability

Tasks

  • #3 Docker container
  • #4 PostgreSQL

Quicker emails for users

As a user, I want to be able to select a lower or higher threshold, in order to receive more or less emails.

Redis caching

Acceptance criteria

  • Cache api requests to deals endpoint up to an hour

References

PostgreSQL connection with Scraper

As a developer, I want a PostgreSQL instance, so that I can persist data.

Acceptance criteria:

  • Include init script to create the tables
  • Separate superuser and non-superuser accounts
  • Insert item if doesn't exist, and update if exists, without changing "seen" status

Notes

Use a date format for the struct that will be compatible with the DB without much modification.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.