Giter Site home page Giter Site logo

1407arjun / linkhub Goto Github PK

View Code? Open in Web Editor NEW
11.0 0.0 1.0 2.58 MB

A portal to help you find the right resources to boost your learning from all those available on the World Wide Web. Links are ranked based on the feedback by others who have tried it out, so as to provide you only the best of the best.

Home Page: https://linkhub.imarjun.me

License: MIT License

JavaScript 83.40% CSS 1.30% TypeScript 15.30%
web-development vercel continuous-deployment continuous-integration nextjs nodejs reactjs mongodb-atlas tailwindcss

linkhub's Introduction

LinkHub

· Report a bug · Request a feature ·

Build Lint Deploy Release

Table of Contents

  1. About The Project
  2. Getting Started
  3. Contributing
  4. License
  5. Acknowledgements

About the project

LinkHub is a portal to help learners to find the best resources from those available on the World Wide Web. It builds a network of resources wherein all users can post links of resources which they have used and allowing everybody to rate them. With this, the resources are ranked based on the feedback by others who have tried and tested those, thus to provide the learner only the best of the best.

Features

  • No signup required to access the resource data.
  • User-friendly and informative UI for desktops.
  • Markdown editor to create posts.
  • Search using tags, titles or authors.
  • Ranking of posts (resources) based on upvotes to downvotes ratio.
  • Moderation of posts using flags.

Tech Stack

  •  React.js (Next.js)
  •  Tailwind CSS
  •  Node.js
  •  Express.js
  •  MongoDB
  •  TypeScript

Getting Started

To get a local copy up and running follow these simple steps.

Prerequisites

In order to get a copy of the project you will require you to have Node.js (v14+) and the NPM package manager installed. If you don't have it, you can download the latest version of Node.js from the official website which also installs the NPM package manager by default.

Installation

Open the terminal in the folder in which you wish to clone the repository and enter the following command:

git clone https://github.com/1407arjun/linkhub.git
cd linkhub

Install all the NPM packages:

npm i

In order to run the project in development mode use:

npm run dev

In order to build the project and run, use:

npm run build
npm start

Note that you will have to add your own .env file at the root directory and add your own environment variables for the project to build. Following are the environment variables used:

  • MONGODB_CLIENT_URI - The MongoDB connection string
  • AUTH_SECRET - The secret used when creating a session
  • NEXTAUTH_URL - The domain name (usually http://localhost:300)
  • GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET - The Google OAuth Client ID and Client secret obtained from the Google Cloud Console

Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project. (Refer the get started instructions)
  2. Create your Feature Branch. (git checkout -b feature/AmazingFeature)
  3. Commit your Changes. (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch. (git push origin feature/AmazingFeature)
  5. Open a Pull Request.

License

Distributed under the MIT License. See LICENSE for more information.

Acknowledgements

  1. Freepik - For the background images.
  2. Bootstrap Icons - For all the icons used throughout the website.

linkhub's People

Contributors

1407arjun avatar dependabot[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

prathamagrawal

linkhub's Issues

Utils

  • Homepage for non-logged in users
  • Universal search bar
  • Define tags

Optimizations

  • Optimise getServerSideProps() with API calls
  • Upgrade to Redux

Search upgrade

  • Improve search algorithm
  • Add Text summarizer model
  • Implement search slugs (:)
  • Add autocomplete
  • Add search keyboard shortcut

Moderation

  • User roles
  • Update existing user schema in database
  • Delete flags

Database setup

  • User details
  • Authentication
  • Schema for posts
  • Manage upvotes and downvotes

Upvotes and Downvotes

On upvotes tab of the profile page, when a post is downvoted, it moves to the downvoted tab when switched but the upvote is still shown as the option on the post in the downvoted tab. It is resolved on refresh. Vice-versa in the downvoted to upvoted tab also.

Authentication 2

  • GitHub Authentication
  • Facebook Authentication
  • Email Authentication (Optional)
  • Upgrade auth provider
  • Use client side auth

Profile Tabs

Even though the tab is changed through Link or router, the content gets updated but the upvotes and downvotes remain in the same places as the previous tab.

Main Timline

  • Timeline/Index page
  • Navigation
  • Explore panel
  • Functionality

Calendar picker icon

Calendar picker icon in the Settings page does not change to white on enabling dark mode

Error Handling

  • Setup universal error handlers
  • Replace alerts with UI elements
  • Improve UI of errors
  • Improve/Increase exception handling cases
  • Sorting also using flags

Extras

  • Pinned topics/posts
  • Settings page
  • Dark mode

Trending tags

Trending tags become zero after many tags are followed. Returns empty array from the database.

User Profile

  • Profile page
  • Layout for posts
  • New post page (Markdown)

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.