Giter Club home page Giter Club logo

shu8 / fellowhub Goto Github PK

View Code? Open in Web Editor NEW

This project forked from mlh-fellowship/0.2.1-fellowbook

5.0 5.0 1.0 15.23 MB

FellowHub is the love child of the MLH Fellowship and GitHubโ€”an all-encompassing platform with a profusion of features to fire up fellow engagement ๐Ÿ˜… and make fellows' lives easier ๐Ÿ˜€ and to get every fellow a job! ๐Ÿ˜ฎ

Home Page: https://fellowhub.tech

License: MIT License

HTML 0.41% CSS 2.35% JavaScript 97.24%
hackathon mlh mlh-fellowship

fellowhub's People

Contributors

ivov avatar kendevops avatar shu8 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Forkers

ogochukwu-ugo

fellowhub's Issues

Retrieve repos to be starred

We need a quick way to retrieve a user's repos and, from those, to select the first pinned repo or otherwise a random repo. The selected repo is the one we will invite the logged-in user to star from our platform.

There seems to be a pinnedItems property in the GitHub GraphQL API.

Jobs list page for webapp

We need a jobs list page in our webapp to display all the remote job search sites we've collected!

Create a Webapp

  • Overall structure with GitHub Primer design system
  • Overview page
  • Pod page
  • Fellow page
    • main data, contributions data, latest standups
    • standups streak?
  • Jobhunt list page
    • Site, hyperlink, logo/favicon
  • Jobhunt templates page
    • 7 templates
  • Jobhunt exchange page
    • Star fellow's GitHub repo
    • Post recommendation on fellow's LinkedIn profile
    • Invite logged-in user to add skills to own profile

Supplementing fellow skills

We need to supplement the fellow skills that @shu8 collected here, e.g. by looking at the language property in the repos we can retrieve from the GitHub API, and then combining both datasets.

Node + Postgres backend for voting event

We have to add a new backend to support the client-side functionality for the Discord bot's !votefor command.

The backend should preferably be Node.js on Heroku with a SQL database, e.g. Postgres, different from the usual AWS Amplify.

Roughly we need:

  • GET endpoint to check for voter eligibility
  • POST endpoint to update the voting records

More info at #24.

Fetch Discord IDs

We should add a snippet for the fellowbot to fetch and log out all the Discord IDs from our MLH Fellowship server.

Update login to allow in any GitHub user

Right now we're checking if the user is associated with the MLH Fellowship, but eventually we should update the login system to allow for any GitHub user to log in.

Get recent contributions for a Fellow

We need a way to get the recent pull requests and issues (maybe also comments/commits) for a Fellow to display in the new web-app. This would probably be best in the /fellow/:username endpoint.

Get Help page

It would be cool to have a page "Get Help" for people to go to to find people who know the tech stack that they're stuck with.

e.g. if I know JavaScript, and somebody is stuck with JavaScript related content, they could search for JavaScript to get the details of all the people who know JavaScript!

Disable "star this repo" button if user has already starred repo

Currently, we only disable the button if the user presses the star button 'in front of us'. But on a refresh, that disappears.

I think it should be fairly possible to add the user's starred repos to the dynamic data fetched on the /fellow endpoint, and if a repo has been starred, disable the button.

Add events page to webapp

We want to be able to show a list of events, and details of individual events on the web app, using our new /events endpoint.

Bonus: Submit a PR to the Session Bot to link to our events page!

Refactor state into nested components

From @shu8:

There's also a massive performance issue with the webapp in that most of the API fetches are done in App.js, which means if a page doesn't need that data, it still needs to wait (e.g. the portfolio waits for all the other requests to finish before it loads itself)

Exchange Network

An idea we had was to have an 'exchange network' in the Portfolio page, where users can find Fellow's github projects and star them, and also send LinkedIn endorsements in a few clicks.

Podmates tab

We need to make a tab to display the logged-in fellow's podmates!

Career-related templates

We need to write down all the career-related templates for fellows:

  • Blitz pitch template
  • Casual e-mail template
  • Challenge submission template
  • Cover letter template
  • CV section template
  • LinkedIn message template
  • Post-application followup template

Most Valuable Fellow

We should implement a feature whereby every Friday we count everyone's commits for the week, and then our Discord bot issues shoutout using @fellow congratulating that fellow for everyone to hear.

Implementation:

  • Collect everyone's commits for the past week, maybe using GitHub's new Commit Search API, and then return the fellow with the highest total_count. Allowances should be made for incomplete_results: true.
  • Space out requests because of GitHub Custom Search API rate limit.
  • Set up Lambda function to run every Friday at a fixed time, and send a post request to a webhook in our Discord channel.
  • Set up the webhook on Discord.
  • Request permission to use @fellow.

Create portfolio page

We want to be able to demonstrate a Fellow/Mentor's contributions and summary of them.

We could show:

  • pod
  • username
  • recent pull requests
  • recent issues
  • standups
  • link to linkedin
  • link to github

amongst possibly others

We'll probably include the whole exchange system into the portfolio

Voting contest page

We need a page with a full description of the voting contest rules, procedure and prizes! ๐Ÿš€

Allowing users to update data

As discussed, we should allow logged-in users to update their data, if they are logged in as the fellow who they are editing.

Templates page

We need a page where we fill in all our career-related templates with fellow variables, and LinkedIn recommendation templates to make it easier for a fellow to endorse another! ๐Ÿฅ‡

Relates to #14 and #19

Discord bot !votefor command

We have to add a !votefor command to the Discord bot, for the client-side functionality of our voting event.

Rules

  1. Each fellow has a single vote to cast. Once cast, their vote is final, i.e. no takebacks.
  2. Votes are weighted so a fellow's received votes are added to their own vote. For example, if a fellow has received five votes, their vote is worth six votes.
  3. Each fellow must cast their vote. If a fellow has not voted by the end of the voting period, they cannot be picked as a winner.
  4. Only fellows can vote and be voted for, that is, MLH staff, mentors, maintainers, sponsors are excluded. In fairness, we three should be excluded as well.
  5. Vote numbers remain secret until the results are announced. We give access to an MLH admin so they can monitor that vote numbers are legit.

Implementation

The Discord bot get a new command !votefor @Discord username and three possible answers.

// command

!votefor kendevops

// happy path

<bot> Your vote has been recorded. Thanks for voting!

// edge case 1

<bot> The records show you already voted!

// edge case 2

<bot> This person is not a fellow. Only fellows can receive votes! 

The DB gets two new columns votes_available (one or zero) and votes_received (zero and above) for each fellow.

When a fellow issues the command, the bot makes a GET request to the backend to check for votes available.

  • Happy path: If voter has a vote to cast, the bot makes a POST requests to update (1) the voter's votes_available to zero, and (2) the votee's votes_received to whatever votes the votee has plus the voter's votes_received + 1. The bot confirms successful vote to the voter.

  • Edge cases: If the voter has no vote to cast or if the votee is not in the fellows table or if the voter and the votee are the same, the bot reports why the vote cannot be cast.

When the contest ends, we look in the DB for three fellow with the highest number of votes, provided they have zero votes available.

Bot !mockme command

We should a command to the Discord bot allowing for a fellow to call another random fellow on Discord, so that the callee can help the caller with a mock job interview!

Make website multi-page

We're going to need multiple pages with the new web-app, something like react-router.

Initial pages I can think of are:

  • /fellows[/:username]
  • /events[:/id]

But there are probably more

Improve Discord webhook messages

Currently when a user stars another user, the discord message is a bland one-liner. We could make it a bit fancier and show:

  • user avatar/project image
  • repo description (so others can see what it is and it might draw them it)
  • link to the repo
  • add text inviting others to star the project

For the endorsing, at a minimum we could add a link to the endorsee's linkedin.

For the MVF, we could add their picture (and if we want, some fancy image manipulation to add like a medal overlay to the picture ๐Ÿ˜›)

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.