Skip to content

Features / TODO #5

@cherylli

Description

@cherylli
  • unclaimed task
  • claimed task
    done

Figma: https://www.figma.com/file/SP0iLbONWkjZ0cTlpBwSPR/Shorti-Copy?node-id=0%3A1
Frontend: https://shorti.onrender.com/
Backend: https://shorti-server.onrender.com/

Must Have

  • (database) setup mongo (mongoose) - basic setup will be done before 1 Oct
  • url shortening
    • (backend) schema (mongo)
    • (backend) setup express
    • (backend) endpoint - create (long url to code)
    • (backend) endpoint - read (code to long url)
    • (database) add "timesClicked, urlTitle" to the Link Schema to match frontend (urlTitle should be optional, in frontend, user will be able to add a title if it was not set, timesClicked will be defaulted to 0)
    • (database/backend) link user and link objects - user would be optional as people are allowed to create links without logging in
    • (backend) endpoint - delete Create Endpoint - Delete #13 adds delete link endpoint #51
    • (frontend) component to enter url - still needs styling
    • (f) api call to create code from long url (Create Shortened URL - Frontend  #83)
    • (f) routing - if user goes to localhost:5173/short, the user should be redirected to the original url
      (backend /api/links/{short} will redirect)
    • (f) component to show previous shortened urls
  • A design
  • Style "Not Found" page
  • Github documentation (on going)

Should Have

  • frontend tests (cypress) - new tests should be added for each new feature added
  • backend tests (jest) - new tests should be added for each new endpoint
    • links
    • auth
  • API documentation (Swagger or alternative)
  • (frontend) authentication - state (contextAPI)
  • (frontend) states for list of links (add, delete, edit etc) contextAPI
  • landing page (desktop/tablet/mobile)
    • logo
    • nav bar/header bar - needs styling
    • signup/login buttons (normal, hover)
    • Feature Cards
    • Main area
    • hero component
    • footer - needs styling
    • social media icons (Social media icons  #11)
  • user accounts - dashboard (so they can access/manage their old links)
    • (b) user schema
    • (b) probably use passport with jwt/google account/other account login strategies
    • (b) login endpoint
    • (b) register endpoint
    • (b) logout endpoint
    • (f) login api call
    • (f) register api call
    • (f) logout api call
    • (f) handle login state with maybe local storage
    • (f) Link Component (Previous Shortened URLs Component #12 )
    • (f) sort link list to show latest links first
    • (f) Groups Component (Create Link / Group Drop Menu Component #47)
    • (f) Search
    • (f) filter
    • (b) implement groups
    • (b) implement search / filter
    • (b) update link schema to include number of times clicked

Components

Feature Cards:
image
Main area
image
Link Component
image
Groups
image

Good to Have / Additional Features

  • custom short link
    • check reserved strings not to be used for custom short links (server/utils/reservedString.js)
  • link should expire after a certain period of time (links have expiry dates, but they don't actually expire)
  • track number times shortened url is clicked
  • track referrer
  • Error Boundary
  • 404 page
  • optional title on shortened link / link when displayed in account
  • groupings of shortened links to create campaigns or themes
  • share links / groups with other users by email (if doing any stats)
  • permissions, view, edit, admin
  • QR codes

TODO/ Code Improvements

  • login, logout and signup buttons should be consistent (Styles, markup)
  • TODO task in server/links.controller
  • post response data should probably be consistent with get response (original_url -> url, short_url -> short)
    (links.controller, swagger, and tests need to be changed)
  • improve error handling with a middleware or express-async-errors

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions