Coder Social home page Coder Social logo

contrihub / contrihub-18 Goto Github PK

View Code? Open in Web Editor NEW
7.0 6.0 33.0 7.54 MB

http://contrihubs.herokuapp.com - :snowman: :cyclone: ContriHub is an event under Avishkar-18 where we are expecting to get more and more people involved in Opens Source activities.

Python 0.88% HTML 0.85% CSS 38.52% Shell 0.01% JavaScript 59.74%
avishkar-18 opensource github contrihub issues prs

contrihub-18's People

Contributors

akshay31057 avatar ashwini571 avatar dbads avatar dependabot[bot] avatar erangaheshan avatar gemul avatar jarvisdev avatar kks0101 avatar kunalmnnit avatar mariogmz avatar mkfeuhrer avatar mrtalley avatar rht6226 avatar xthewiz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

contrihub-18's Issues

separate js from html code

You have to simply make a new js file and put the js code on any one html page to this new js file and then include that js file in html file. e.g Projects/templates/Projects/home.html has some js at bottom. put it in a different js file and include it in bottom again.

You have to do this just for any one html page.
Mention the name of html page while making prs?

filter issues

Currently issues page have all the issues.
Add a feature to filter issues based on points, tittle_issue, title_project, mentor name etc.

user should be able to choose among project-names, mentor-names, points etc provided in a dropdown while submitting the filter requests. i.e it should be an option field

You can either do whole thing or just a part of it like either GUI or backend and achieve partial points.

It should be fun doing this ๐Ÿ˜„

Implement Pagination

Home page has all the issues sent from backend views.. This will become very inefficient when the issues are very large in number, so implement pagination, send a fix number of issue objects from backend.
same is to be done for prs coming on user profile page.

Show the contributions of a user

There is no way where you can see contributions of others.
So you have to show it on leaderboard page while rendering the leaderboard page send all the prs and filter the prs solved by a user and show related issues as links with their points.

Here you need to work on both frontend and backend. Still you can do it partially for partial points ๐Ÿ˜„

switch label status

provide an api to mentors for switching status of issues between close0/open1 via GUI.

Remove alert boxes

currently there are alert boxes on success/failure of various actions, but these alert boxes aren't good as they block the whole event loop i.e nothing can run asynchronously until alert box is there ๐Ÿ˜„

Try to replace it with snackbars which comes out from bottom or sides and disappears after few seconds.
see this for reference https://material.io/develop/web/components/snackbars/

remove following alert boxes during verification request of pr by student

one for unauthenticated users
one for blank pr_link
one pr submitted
already created pr etc

remove two alert boxes - 30 points ๐Ÿ˜„

fetch prs using ajax

On profile page there are different kind of prs. There are buttons to see different prs. Currently all the prs related to user are fetched in once which will become inefficient with growing number of prs related to a user. So
Implement update the Projects/templates/Projects/profile.html and def of profileon Projects/views.py

You will surely enjoy this. We will award you with huge number of points for successfully completing this ๐Ÿ˜„

Update README with OSX instructions

I've been trying to setup the project on my local machine and since I'm not a Python developer I'm not familiar with the ecosystem.

It would be nice to have instructions for what's needed on OSX.

Organise the code structure

Choose any page html,css or backend code. Organise the code structure like indentation etc. mention the page name while creating the pr.
Not more than one such pr will be accepted from anyone.

Add password verification field in sign up page.

Currently, the user enters only once his password while signup.

Add one more password field and check if the password provided in both of them is same or not. Only if they are same allow the user to signup otherwise show an error message stating that the passwords do not match.

Add label closed or open with issues on home page

add an attribute state(int 0/1) to issues model
where 0 is closed, 1 is open.
And accordingly add a label open/closed to issues on home page.

This requires you to modify Projects/models.py/Issues-class and Projects/templates/Projects/home.html

remove unnecessary reloads

There are many requests where page reload can be avoided.
Like

  1. when clicking on close/open label of issues changes and page is reloaded while this reload can be avoided by using javascript to change open to close etc on GUI ๐Ÿ˜„
  2. on deleting prs/issues there is a page reload which can be avoided by hiding that object using javascript.

every page reload removal gets ~30 points ๐Ÿ˜„
create different prs for each such solution

show expected, bonus, deducted points

add two attributes bonus_points, deducted_points with prs model and with each pr save these two.
show these two with every prs on users contribution page.

you need to save bonus/deducted points of every pr with pr model when pr is verified

api for mentors to delete prs of participants

Currently mentors can only either verify or reject prs. build an api which provides a delete method to mentors for deleting submitted prs by participants.

You can take help from already existing code for deleting participant pr by them.

Modify README.md for setup in Linux/Windows/Mac

Currently README.md is not very helpful for all kind of users, so update it so that all the users can understand and setup project locally.

  1. Instructions for Windows
  2. Instructions for Linux
  3. Instructions for Mac

You have to put following things for all the platforms -

  1. Installing Python.
  2. Creating virtual environment activating and deactivating it
  3. Installing all the requirements and mention if their are some exceptions while installations
  4. Any changes if required in ContriHub/settings.py for running project in local like tell how to setup some environment variables used in ContriHub/settings.py file.
  5. How to setup different databases like Postgresql, Mysql, sqlite.

You can add any details complete/partially like adding how to setup Python and virtual environment on Mac or How to setup Database on Windows. You will get 5 -10 points accordingly for each contribution ๐Ÿ˜„

add issues api

provide a way to mentors for adding issues without using admin interface,
anyone can ass issues but they should appear on app only after approval of mentors or some staff user.

like you can use some modal form etc for adding issues.

approval part will require adding some additional attribute to issues model.

separate css from html code

You have to simply make a new css file and put the css code on any one html page to this new css file and then include that css file in html file. e.g Projects/templates/Projects/home.html has some css at head section. put it in a different css file and include it in head again.

You have to do this just for any one html page. ๐Ÿ˜„
Mention the name of html page while making prs?

No need to ask for permissions just Mention the page name which isn't already mentioned and start working on it. ๐Ÿ˜„

Open Issue

Find any bug in the website either backend or GUI. Fix it and create a PR.
The points for the PR will be provided as per the quality of bug and the solution you come up with. Also even if you find a bug and don't know how to solve, just create an issue for that ๐Ÿ˜„

Creating a good issue may also fetch you some points ๐Ÿ˜„

Make profile page responsive

profile page contains different kind of pull requests

  1. All prs
  2. prs pending for verification
  3. verified prs

Make this page responsive for different devices.

show activities

create a new page and show following activities.

when a new user login/logout - xyz logged just in or logged out types
when a user request for verification - xyz user requested to verify abc pr
when a user deletes an object - xyz user deleted his/her issue/pr etc
when a mentor verifies a pr - abcmentor verified zbc pr of xyz user
on changing a label of issue - label of xyz issues changed from open to close etc
and so on ...

create a Activity model with required attributes as -
from_user - who performs some action
to_user - in case of verification user to mentor or mentor to user
activity_description - what is the action performed
time - time when action performed

create a activity view for rendering all the activities and then use ajax etc to append all the new activities in real-time without page refresh

This is a big task so every part of this task will have partial points distribution. there are no limitations on what part is done by whom i.e. even a single user can add complete feature or just a part of it ๐Ÿ˜„

implement pagination on leaderboard page

You need to modify both Projects/templated/Projects/leaderboard.html and definition of Projects/views.py/leaderboard

You can seek help from pagination on issues page. ๐Ÿ˜„

hit counter

build a hit counter which gives the total unique hits to contrihub app ๐Ÿ˜„

infinite scroll

implement Infinite scroll on issues page.
Currently we have pagination where one need to click on next/prev link to see more issues. Now you have to implement infinite scroll.

Like in case of Twitter/Facebook there is no next or prev link to see more posts you just keep scrolling to see new posts/feed. you have to implement same thing here on issues page of contriHub-18 app.

Hint -
first render some fixed(10-12) issues. Use some Javascript library to detect the page end while scrolling and then using ajax fetch next issues and append them to the div which issues are inside.

This is fun ๐Ÿ˜„

notify user when their PR is verified

Currently there is a notification via email to mentors when any user requests for verification for any of their(mentor's) Issue. see Projects/views.py>request_pr function.

You have to implement same kind of notification Email for users when their PR's are verified by mentors.
modify Projects/views.py>response_pr function to send email to users when their PR is verified or rejected.

You are going to enjoy this one ๐Ÿ˜„

Modify Filter Issues #63

#63 says to just filter on the basis of different attributes. Now you have to modify it such that one can filter on the basis of more than one attribute simultaneously. Like filtering issues by dbads mentor which are difficult.

Add forgot password functionality

Currently, the user can't recover his password once he/she forgets it. Add the functionality by which a user can recover his password.

As the username in our case is same as GitHub username you can use GitHub API's to fetch user email address and send a password recovery mail to that user.

You are free to explore other mechanisms for password recovery.

points transparency

add two attributes bonus_points and deducted_points in profile model to store bonus/deducted_points in user profile for transparency of all points ๐Ÿ˜„

Also modify the response_pr view to store bonus and deducted points in user profile at the time of verification.

Functionality to delete submitted PR

Currently, the user can only submit Pull Requests for verification. Although in UI user is provided with an option to delete submitted Pull Request but the functionality is not supported by the backend.

Add the logic in the backend so that the user can also delete submitted Pull Requests.

custom verification

currently there is only a verify button..
You are expected to have to have two input fields along with this verify button where mentor can put bonus/deducted_points if any and then verify the pr. which will award users accordingly less, more or actual expected points.

here you need to register as a mentor to see this verification process. Also this mentor should be a staff user. for that create a superuser and provide staff status to your mentor user.

It's cool ๐Ÿ˜„

Fetching different types of PR's using ajax

Profile page of student/mentor has different types of prs. Currently all the prs are being fetched in once and only the relevant prs are being shown using show and hide javascript functions. It's not a problem now but with increasing number of prs for a user, this will become very in efficient. So fetch corresponding prs only when user request for them and then these can be further updated using ajax.

Fix index at home page on scrolling

Issues are indexed as 1 2 3 4 ...
While scrolling on home page when 2nd page arrives the indexing restarts from 1 2 3 ...
Fix this so that the issues on next pages get index number after previous issues.

api for editing issues

build an api which allows mentors to edit issues without using admin interface on website itself.
only mentors can edit issues.

Issues are being rendered even if it is last page.

There is a problem with the infinite scroll. When it renders the last page after that if I try to scroll down more then it renders that page again. It is not appended but replaced with the last page. Instead of that, we can show some instruction like there are no more issues.

similar issues

Filter issues on the basis of their label open1/closed0

upvote and downvote feature for issues

Add a button to upvote or downvote issues.
on clicking upvote button upvote count should increase by 1 if not already upvoted else it should decrease. Same for downvote.

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.