Giter VIP home page Giter VIP logo

rivaltree's People

Contributors

mockenoff avatar

Watchers

 avatar

rivaltree's Issues

S3 for user uploads

Right now we're just using stock ImageField for Django models.

Seems like django-storages could be useful. Maybe django-s3direct.

Also this blog post regarding migrating static and media files to S3 and this one that is a bit more recent.

Might be nice to set up a production and a development bucket or only use S3 for production and development goes to a local upload directory.

Embed WebSocket server must fetch bracket on PUB

Instead of rerouting information directly from whatever source sends the PUB signal (it'll be the dashboard), the WebSocket embed server should ACK the PUB and then retrieve the bracket model.

This is to avoid packet manipulation if someone manages to decipher the message structure.

Ideally, the Ember dashboard would save via the API, the API would cache, and the embed server would retrieve from the cache.

Allow multiple widgets on a single page

Web sockets don't allow multiple connections to the same port because, well, duh. Using the facility option with django-websocket-redis makes it a lot easier to silo off messages, but it can't support multiple bracket updates on a single connection.

The solution will most likely involve doing independent group tracking per client within Redis on the JunctionView request methods.

View counts

Track view counts on each bracket.

Implement through direct update on bracket models with incremented counts. Could be problematic down the road with regards to write throughput.

Might be better to cache quick view increments in Redis (already using that for API retrieval caching) and then have a job running to aggregate visitor logs or push Redis counts to the database for long term.

Tie breaking

How to handle tie breaking?

  • Wins vs. tied participants
  • Game/set wins
  • Points scored
  • Match wins
  • Game/set win percentage
  • Points difference
  • Media-Buchholz system

Allow manager to adjust how ties are broken?

Hosted view

Probably just use the embedded widget inside a static Django view

Email templates

Need email templates for the various things that need emails.

  • Welcome
  • Confirmation
  • Lost password
  • Trending/featured bracket
  • App updates

Static pages

Static pages need to attract new users.

  • main page (only need to get images)
  • about page
  • contact page
  • featured brackets
  • sign-up (with upsell?)
  • login
  • password reset
  • solo generator
  • legal

Cannot create brackets of less than three teams

If has_round_robin=True, then winners ends up empty.

if has_round_robin=False, then you get an IndexError after make_games().

Internal Server Error: /api/brackets/
Traceback (most recent call last):
  File "/mockenoff/rivaltree/env/lib/python3.4/site-packages/django/core/handlers/base.py", line 149, in get_response
    response = self.process_exception_by_middleware(e, request)
  File "/mockenoff/rivaltree/env/lib/python3.4/site-packages/django/core/handlers/base.py", line 147, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/mockenoff/rivaltree/env/lib/python3.4/site-packages/django/views/decorators/csrf.py", line 58, in wrapped_view
    return view_func(*args, **kwargs)
  File "/mockenoff/rivaltree/apps/bracketr/views.py", line 120, in brackets
    bracket.make_games()
  File "/mockenoff/rivaltree/apps/bracketr/models.py", line 148, in make_games
    games['losers'], saves = self.make_losers_bracket(games['winners'], save=True)
  File "/mockenoff/rivaltree/apps/bracketr/models.py", line 262, in make_losers_bracket
    last_seed = winners[-1][0]['team2']['seed']
IndexError: list index out of range

Validation for header_path

Need to validate header_path (or any image path, really) attributes before save or throw ValidationError.

Break new brackets into separate route

New brackets should go into a /brackets/new/ nested route. This view will walk the user through creating a bracket and then forward to /brackets/id/ upon save.

This means that you can only reach brackets.view if the phase is above 1.

Embedded widget

Live updating widget for single bracket views

Use web sockets? Either djwebsockets or django-websocket-redis.

django-websocket-redis seems more resilient against increased traffic from how it handles threads but djwebsockets is much easier to get set up since it doesn't need Redis.

However, django-websocket-redis is fairly simple after that. The example code only requires publishing messages.

Tags for brackets

Allow users to tag their brackets with the sport or game being played, etc.

Interface in brackets/teams to add and remove teams

  • Probably add option in instant-input component for deletion
  • Button to add new team? Maybe bonus empty team is always there
  • Need to notify user that changes to teams will cause complete reset of ongoing bracket
  • Requires API changes. Doesn't handle POST requests yet

Comprehensive bracket view

The winner_loser bracket should display attached to the winner bracket in double elimination tournaments.

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.