[x] (database) setup mongo (mongoose) - basic setup will be done before 1 Oct
[x] url shortening
[x] (backend) schema (mongo)
[x] (backend) setup express
[x] (backend) endpoint - create (long url to code)
[x] (backend) endpoint - read (code to long url)
[x] (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
[x] (backend) endpoint - delete #13 #51
[x] (frontend) component to enter url - still needs styling
[x] (f) api call to create code from long url (#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)
[x] (f) component to show previous shortened urls
[x] A design
[ ] Style "Not Found" page
[ ] Github documentation (on going)
[ ] readme (#21)
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
[x] links
[ ] auth
[x] 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
[x] nav bar/header bar - needs styling
[x] signup/login buttons (normal, hover)
[ ] Feature Cards
[ ] Main area
[ ] hero component
[x] footer - needs styling
[x] social media icons (#11)
[ ] user accounts - dashboard (so they can access/manage their old links)
[x] (b) user schema
[x] (b) probably use passport with jwt/google account/other account login strategies
[x] (b) login endpoint
[x] (b) register endpoint
[x] (b) logout endpoint
[ ] (f) login api call
[ ] (f) register api call
[ ] (f) logout api call
[ ] (f) handle login state with maybe local storage
[x] (f) Link Component (#12 )
[ ] (f) sort link list to show latest links first
[x] (f) Groups 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:
Main area
Link Component
Groups
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
doneFigma: 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(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)(backend) endpoint - delete#13 #51A designreadme (#21)Should Have
linksauthAPI documentation (Swagger or alternative)logonav bar/header bar - needs stylingsignup/login buttons (normal, hover)user schemaprobably use passport with jwt/google account/other account login strategieslogin endpointregister endpointlogin api callregister api callhandle login state with maybe local storageComponents
Feature Cards: Main area Link Component Groups
Good to Have / Additional Features
custom short link404 pageTODO/ Code Improvements