Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hackathon functionality #88

Open
gautamrege opened this issue Aug 20, 2016 · 0 comments
Open

Hackathon functionality #88

gautamrege opened this issue Aug 20, 2016 · 0 comments
Labels

Comments

@gautamrege
Copy link
Member

gautamrege commented Aug 20, 2016

When there is a hackathon, the widget should be able to fetch data, score them and update the widget for only the contestants in the group.

  • The data needs to be fetched every 5 minutes ( or configurable interval)
  • CommitJob, ActivityJob should be fired for each member with :hackathon type, so that we can fetch for the interval, in this case 5 minutes.
  • ScoreJob should be updated for the data
  • Widget should be updated to show the leaders!

Feature Approach

The idea is to ensure the the Hackathon feature sits on top of the standard CodeCuriosity subscription model without interfering with starting operations!

Hackathon is a Subscription that belongs to a Group, whose members participate in a Round that contributes to multiple Repositories

class Hackathon < Subscription 

   # Update interval in minutes.
   field :update_interval, type: Integer, default: 15

  # This is the group that is participating in the Hackathon
  belongs_to :group

  # Hackathon may specify repositories that the Group is working on. 
  # If blank, it means all contributions are accepted.
  # inverse_of: nil ensures we don't mess up the Repository model.
  has_and_belongs_to_many :repositories, inverse_of: nil
end

UI Approach

  • User clicks on "Create Hackathon" in the side menu bar.
  • Page (similar to create Group) opens with following details:
    • Name (maps to Group#name and Round#name)
    • Start Date Time (maps to Round#from_date)
    • End Date Time (maps to Round#end_date)
    • Update Interval (maps to Hackathon#update_interval)
    • Repositories can be added (optionally). Help text should clearly mention that if no repositories are added, the Hackathon will track all commits and activities of the members of the Hackathon.
    • Create button
  • On create, we create a Group with this name, Round with same name and a Hackathon object for that user and round and group.
  • User can then "Add Members".
    • For every member that is added, we create a Hackathon object that maps to the Group and Round in the Hackathon Object of the Group Owner.
  • The Widget will show the points only for the Round#hackathons
gautamrege added a commit that referenced this issue Aug 23, 2016
WIP - added basic functionality test-cases.
BandanaPandey pushed a commit to BandanaPandey/code-curiosity that referenced this issue Aug 24, 2016
WIP - added basic functionality test-cases.
BandanaPandey pushed a commit to BandanaPandey/code-curiosity that referenced this issue Sep 6, 2016
gautamrege added a commit that referenced this issue Sep 15, 2016
Added all controller test cases.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant