dwyl / dwyl/app

EPIC: Link Shortening

Open
#284 2 comments 0 reactions 1 assignee Claimed by @nelsonic View on GitHub
discuss enhancement epic needs-criteria needs-ui priority-2 technical
Dominant language
Dart
Stars
152
Forks
22
PR merge metrics
No merged PRs in 30d

Description

As a person wanting to share links to `items` of content and shorten links to _external_ resources,
I want to have an automatic link shortening service
that keeps link length to a minimum and has advanced tracking features.

Related to dwyl/app#279

# Todo

+ [ ] Collect the required/desired features into this **`EPIC` `#HelpWanted`** 🙏
+ [ ] Read any examples of Open Source Link shorteners for inspiration 👀
+ [ ] Build an MVP link shortener App (Tutorial) 👩‍💻
+ [ ] Integrated it back into the App as we think it will be a "core" feature. 🔙

# Required Features

+ [ ] Store `url` as `Fields.UrlEncrypted` to maintain privacy
+ [ ] Shorten the link to either a `numeric` (e.g: `dwyl.co/123`) or a [`base58`](https://github.com/dwyl/base58) [`cid`](https://github.com/dwyl/cid) (e.g: `dwyl.co/gVS`)

# Desirable Features

+ [ ] Crawl the `url` and get the `page.title` and check for any images.
+ [ ] If the `url` is to a GitHub page, attempt to "interpret" it using https://github.com/nelsonic/github-scraper to extract any relevant data. e.g: an `issue` will have a `title`, `description`, `assignee`, `state` and `labels` https://github.com/nelsonic/github-scraper/issues/103
+ [ ] Allow people to _specify_ their desired short url e.g: `dwyl.co/welcome`
+ [ ] Or to pick their `Twitter/GitHub` username as the base of the link and then a numeric or alphanumeric sub
e.g: `dwyl.co/nelsonic/1` would be a directly link to my _first_ `item`. This would `301` redirect to `dwyl.com/items/1` (yes, in this case the _actual_ URL is shorter than the "short" one ... but it's just for illustration)

What `else`? 💭

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.