Me too, thanks
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Build Status

Join the chat at

Install / Setup

  1. Clone repo:

    git clone
    cd groot-meme-service
  2. Install dependencies:

    pip install -r requirements.txt
  3. Copy settings template:

    cd groot_meme_service
  4. Add your DB credentials to

Run Application

python groot_meme_service/

Do export MEME_DEBUG=True to run Flask in debug mode, if desired.


For the purposes of groot-meme-service 'admin access' is granted to members of the ACM admin, corporate, and top4 committees, as given by groot-group-service.

Meme Routes

NOTE: All routes require a HTTP Header called Meme-Token which must be set to a valid user session token.

Meme Actions

GET /memes

Returns paginated memes in given order.


  • author - Optional. Filter by user who submitted meme.
  • order - Optional.
    • Options:
      • 'latest' - freshest memes first
      • 'random' - random order
      • 'top' - memes sorted by number of votes descending
      • 'hottest' - memes sorted by number of votes ranked by recency
      • 'unapproved' - Requires admin access. Returns unapproved memes in ascending order by upload time.
    • Default: 'latest'

POST /memes

Registers a new meme.


  • url - Required. Imgur url of the meme image. Must reference a valid imgur image (not a imgur gallery or album). Duplicate images are not allowed.
  • title - Optional. Title of your meme.

GET /memes/:meme_id

Returns the requested meme.

Admin Actions

DELETE /memes/:meme_id

Requires admin access. Deletes a meme.

PUT /memes/:meme_id/approve

Requires admin access. Approves a meme to be publicly viewable.


PUT /memes/:meme_id/vote

Register a vote for the given meme. Vote type can be any of the following:

  • like
  • laugh
  • sad
  • angry
  • wow Request
	"vote_type": "like"

DELETE /memes/:meme_id/vote

Retract a vote for the given meme.


Contributions to groot-meme-service are welcomed!

  1. Fork the repo.
  2. Create a new feature branch.
  3. Add your feature / make your changes.
  4. Install pep8 and run pep8 *.py in the root project directory to lint your changes. Fix any linting errors.
  5. Create a PR.
  6. ???
  7. Profit.