Git Product home page Git Product logo

coding-resource-finder's Introduction

Hi there ๐Ÿ‘‹

Stats

Ngoako's GitHub stats

coding-resource-finder's People

Contributors

abdulahad-07 avatar anuragh2002 avatar bng-app avatar chetanchandel31 avatar deepsourcebot avatar dun-sin avatar ekiira avatar harsh0620 avatar jahtomini avatar jrberendt avatar lugenx avatar matthewbub avatar ngoakor12 avatar parth1125 avatar pranavgoel29 avatar ryan-maddock-96 avatar saifurrahmantanvir avatar shaheer-2000 avatar shahzaibjutt avatar shelby-codes avatar shivashish-rwt avatar shyamtawli avatar sudeepmahato16 avatar uzairurk avatar vinitvh avatar yajanarao avatar yash-yadav-git avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

coding-resource-finder's Issues

Docs: Add a frontend style guide

Go over the frontend code checking for patterns in the project or borrow some from other projects' style guides(e.g. airbnb style guide)

  • create a STYLEGUIDE.md file in the ./frontend folder
  • take the info you've gathered from the research and add it to that file. It doesn't have to be a whole blog post, contribute with whatever you can and we can discuss it

Feat: Lightmode

  • Finalise colours and create lightmode counterparts
  • #119
  • Design mock up of the light mode
  • Implement lightmode

Remove resource type pages

This specific component is buggy and doesn't fit the site, I'm removing this and opting for a filtering system like the on for topics below the search bar.
Tasks:

  • On the UI, remove this part:
    image
  • In App.js, remove the related routes
  • reset the resources route to just be /resources and not /resources/all
  • update Context.js to make sure all types of resources are fetched
  • update the /resources route page title from Resources - All | Coding Resource Finder to just Resources | Coding Resource Finder

Feat: Add functional/unit tests

Functions to test:

In ./backend/src/format-resources.js

  • getPages()
  • getPageData()

In ./backend/src/utils.js

  • getCurrentCollectionName()

In ./backend/src/scrape-resources.js

  • getHTML()
  • getTopicsFromACN()
  • getProjectsFromACN()
  • getAllResources()

Feat: Add a resources filter

Is your feature request related to a problem? Please describe.
Yes, looking for just topics and or just projects can be a pain sometimes.

Describe the solution you'd like
Add resources filters chips just below the search form where I can filter by resource type (projects, topics and all)

Describe alternatives you've considered
Adding pages for each reasource type but it was too messy

Additional context

feat: add tabs for all, projects, and topics resources

Is your feature request related to a problem? Please describe.
When I search for a resource I sometimes just want to browse topics and other times projects.

Describe the solution you'd like
Tabs in resource page, above or below the search input and filter shortcuts named: all, topics, and projects

Describe alternatives you've considered
An alternative solution would be to extend the search feature to search by resource type.
Another was to add a shortcut like the topics shortcuts.

Additional context
Mockup below. Figma file can be found here
image

Feat: Add storybook for component building

Is your feature request related to a problem? Please describe.
Yes, I need to have designs ready before I can let people work on features

Describe the solution you'd like
Use Storybook to help with visualizing components without worrying about data and functionality. That way others can sort of work on the designs aswell and implement them as components

Describe alternatives you've considered
I keep making designs for things to be implemented and then allow others to work on things when the designs are finalized which is not very sustainable

Additional context
At least one component should be added to the storybook to show that everything works as expected. You can ask me if you want a component to implement.

Style: Add prettier & eslint configs

Is your feature request related to a problem? Please describe.
Not necessarily, this is aimed at providing consistency and enforcing patterns in the codebase regarding code style.

Describe the solution you'd like
Add a .prettierrc file, possibly a .prettierignore file and and an .eslintrc file

Describe alternatives you've considered
NIL

Additional context
NIL

I'll like to work on this.

Refactor: api calls for resources should be fetched when needed

Here's what happens at the moment:

  1. On load/ first render
  • first page of visited resources are fetched and all resources are fetched concurrently.
  1. clicking "Load 20 more resources" button
  • another api call for a page of requested resources is fetched.

Heres what should happen instead:

  1. On load/ first render for each of all, topics, and projects:
  • first page should be fetched
  • all resources matching that page(either all, topics, or projects) should also be fetched concurrently(to make it easier to search all not just first page)
    NOTE: use promise.all syntax(unless you have a reason not to)
  1. clicking the "Load 20 more resources" button should be removed

Bug: Dev url is displayed instead of prod url on the root endpoint

Describe the bug
Dev url is displayed instead of prod url on the root endpoint

To Reproduce
Steps to reproduce the behavior:

  1. Go to https://coding-resource-finder-api.herokuapp.com/
  2. Look at the available endpoints

Expected behavior
The root endpoint is not supposed to show any localhost base url for the endpoints. The base url should be https://coding-resource-finder-api.herokuapp.com/

Additional context
There's nothing wrong with the actual endpoints, they're working fine but they should not display localhost base url in prod.

Docs: Update feature request template

The current feature request template has a few sections shown by bolded text and a small description of what that section expects.

Problem:
The description of what a section expects stays there and doesn't go away if you choose not to edit or delete it.

Proposed fix/solution:
Change the descriptions to be markdown comments instead, that way every section is still explained but disappears after you submit the issue

Feat: Add resources from your own/external sites

Is your feature request related to a problem? Please describe.
No, but sometimes you want to work with resources from other places on the internet but in the coding resources finder ecosystem

Describe the solution you'd like
Have the ability to add external resources and manage them on the site

Describe alternatives you've considered
Use other sites for and their resources but it's not the same as this site

Additional context
Have an add resource icon which opens a modal with a resource title and resource type.
Design mockup is still to be added.

Feat: Add resources sort order

Is your feature request related to a problem? Please describe.
No

Describe the solution you'd like
Add a select element just below the search bar to choose what order the resources appear in (ascending or descending)

Describe alternatives you've considered
N/A

Additional context

Bug: Direct access via this url `BASE_URL/resources/projects` renders all resources instead of just projects

Describe the bug
Direct access via this url BASE_URL/resources/projects renders all resources instead of just projects
To Reproduce
Steps to reproduce the behavior:

  1. Type: BASE_URL/resources/projects in the address/search bar
  2. Observe the resources rendered, they're are mixed with topics

Expected behavior
When you visit the url: BASE_URL/resources/projects, the resources rendered should only be projects

Additional context

Refactor: Replace JSDOM with Cheerio for web scraping

JSDOM is a whopping 2.4m (gzipped: 588.6 k) in size. It's only used for web scraping in this project, so it's a bit of an overkill and not worth it imo. Cheerio seems like the best lightweight alternative with the only drawback being the syntax from what I've seen so far.

Task:

  • Replace jsdom with cheerio web scraping
  • Uninstall jsdom

Feat: Create an "Error 404 - not found" page

Is your feature request related to a problem? Please describe.
Yes, accessing an unavailable page on the website sort of just breaks/show a blank main section.

Describe the solution you'd like
Create a 404 placeholder page for when a certain page doesn't exist. It should link to the home page.

Describe alternatives you've considered
One alternative I've considered is having a redirect to the homepage for pages that don't exist, but I think it's not user friendly since the user wants to go some place and you just keep redirecting them without a reason.

Additional context
Mockup design still to come

Tasks

  • Design the look of the page
    image
    You can find colours, font sizes & styles and dimensions on this figma file
  • Implementation

Store resources in a database

Store links in a database. This is will mean less reliance on the original website.

The current resources.js file contains a lot of resources related function but they need to be put in separate files so that the github actions script can run the database update script.

Docs: Add a docs folder for documentation

Tasks

  • create screenshots.md in ./docs and add as many screenshots as possible
  • create codebase.md in ./docs and add a clear description of the codebase for newcomers

Docs: Update bug report template

The current bug report template has a few sections shown by bolded text and a small description of what that section expects.

Problem:
The description of what a section expects stays there and doesn't go away if you choose not to edit or delete it.

Proposed fix/solution:
Change the descriptions to be markdown comments instead, that way every section is still explained but disappears after you submit the issue

Refactor: Improve error handling

What to do:

  • throw errors when you can handle them
  • use try catch for code that's likely to fail sometimes
  • try and catch errors on the upper layer where you'll more likely know what to do with them

What to not do:

  • chucking multiple lines of code in try catch statements
  • re-throwing all caught errors everytime

Clean up the CSS

Need to do some research on css styling in a react app first

Task:

  • choose a css styling approach to go with
  • make use of css variables
  • use the right units(font-size and media queries)

Refactor: Migrate away from firebase firestore.

Current reasons to move away from firestore:

  • cannot update db via github actions
  • cannot impose a limit and turn off db when a certain budget is reached. Unlimited writes means you will owe unlimited money.
  • not free

Where to?

  • Mongodb
  • SanityCMS
  • Railway's PosgresSQL

Feat: Create an "error page" for when something goes wrong while fetching resources

Is your feature request related to a problem? Please describe.
Yes, loading even though something went wrong on the server can be frustrating.

Describe the solution you'd like
Create a page to redirect to when there's an error while fetching resources from the server. This page will work like the chrome error connecting page.

Describe alternatives you've considered

Additional context
Design mockup still to be added

Tasks

  • Design the look of the page
    image
    You can find colours, font sizes & styles and dimensions on this figma file
  • Implementation

Deploy swagger api documentation

Tasks:

  • Learn about how to build and deploy swagger api documentation
  • Decide on a free way to host the interactive swagger api documentation(e.g. github pages)
  • Update the current swagger documentation to add the new hosted api docs url

Bug: Pull request template not showing up

Whenever a PR is made, a pull request template should prefill the title and description fields, but it does not show up. Poke around and see if you can find the problem with the template and a fix for it.

Navigating to different pages via clicking links does not change the page's title

Describe the bug
Navigating to different pages via clicking links does not change the page's title, while navigating to a page by typing the specific url in the address bar works.

To Reproduce
Steps to reproduce the behavior:

  1. Go to https://coding-resource-finder.ngoako.dev/resources/all
  2. Click on either "topics" or "projects" navigation buttons/links
  3. Observe the title of the page: it will still say "Resources - all | Coding Resource Finder"

Expected behavior
Clicking any nav link should also change the website title accordingly

Move svg icons to a separate folder

Move to ./backend/src/svgs.js

Icons to move;

  • bookmark and remove bookmark icons found in ./frontend/src/components/ResourceList.js
  • remove bookmark icon found in ./frontend/src/components/BookmarkList.js
  • clear search icon found in ./frontend/src/components/SearchForm.js

Docs: Add api routes documentation

Have a look at the routes in ./backend folder. Edit the readme.md file with some info about the routes exposed by the server.

Add a table with the following column headings; method, endpoint, params, description, return type. You can play around with the order of the columns, not sure at the moment.

Docs: Update `contributing.md` to add a section on the process to follow when you want to open PRs/Issues

Currently the file only contains info on how to run the project locally. Some ideas on sections to include and what info I think should be mentioned:

  • Running the project locally
    • Cloning the repo
    • Running the backend
    • Running the frontend
  • Opening an issue
    • Search through the open issues and add one if you don't find it anything related.
    • Search through the closed/merged issues and if an issue you want to open has a merged PR, then reopen that issue with details on why you think the issue was not addressed.
    • Add labels related to your issue
  • Opening a PR
    • Ask to work on an issue if you want to open a PR related to an issue, that way you can be assigned and others know you're working on it
    • Avoid opening a PR without an accompanying issue, so maybe open an issue to discuss if what you want to add to the project will be welcomed before you write complex features that may or may not be merged
    • Link issues related to your PR via the PR template or the development section on the right sidebar

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.