Giter Site home page Giter Site logo

svenstaro / flamejam Goto Github PK

View Code? Open in Web Editor NEW
140.0 8.0 28.0 1.72 MB

A generic game jam application with ratings and comments using Flask

Home Page: http://bacongamejam.org

License: Other

Python 31.78% CSS 20.16% JavaScript 11.03% Makefile 0.06% Mako 0.12% HTML 36.56% Dockerfile 0.28%
flask

flamejam's Introduction

flamejam - a game jam application using Flask

Docker Cloud Build Status license Stars

Description

flamejam is a generic game jam application implemented in Python and using the Flask microframework. It was initially created as a voting platforms for the BaconGameJam. However, it is generic and as such it is usable for any other game jam event.

This application is designed to make sure that participants vote on other entries fairly and evenly.

How to run for development

You are currently expected to run some kind of POSIX system such as Linux. This software has not been tested on Windows and it would be quite a wonder indeed if it worked there.

  1. Copy the default config from doc/flamejam.cfg.default to flamejam.cfg and configure it to your needs.

  2. Initialize the database using either test data or an admin account.

    Example for an empty database with just an admin account called peter and password hunter2:

    poetry run flask init-db peter hunter2 [email protected]
    

    Example to seed a database with test data:

    poetry run flask seed-db
    
  3. Then, running the application should be as simple as calling

    make run_debug
    

How to run in production

Docker is the primary supported way to run this software in production. It can easily be run without Docker but it's very hard for me to universally support that so if you don't want to use Docker, you should adopt the following instructions to your own systems. Follow step 1. and 2. from above. Then, run

docker run -v $PWD/flamejam.cfg:/etc/flamejam/flamejam.cfg -p 8080:8080 svenstaro/flamejam:latest

Support and contact

In order to receive help in getting this application to run, it would be best to ask here on GitHub via the issues system.

Pull requests are welcome.

License

This application, all of its sources and resources are licensed under the zlib license with the following exceptions:

  • jquery
  • lightbox
  • bootstrap

These exceptions are subject to their own copyrights and licenses. This project only makes use of them.

For the full license text, please see the included LICENSE file.

flamejam's People

Contributors

aldermeer avatar brucejillis avatar dependabot[bot] avatar erik avatar laurim avatar opatut avatar samedifference avatar sigvef avatar svenstaro avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

flamejam's Issues

Adding and editing games

Additional features:

  • Supported Platforms
  • Code license
  • Usage / Controls / How to play / Help description
  • Screenshot order / editing
  • Package upload
  • Thumbnail selection / cropping

Add one-way email contact

Allow users to contact other users without the need to expose their email address publicly. Add a simple message form in the user profile so people can start a conversation. The recipient also receives the sender's private email address for replies.

Map view

See where people come from (filter by jam / game / all)

Add theme before jam

The theme can be hidden before the jam started, so it automatically shows up on time.

UI Tweaks

I have a bunch of small suggestions to improve the design/usability of the site:

jams/jamname/rate:

  • Make "<< back to the jam" more visible or make "loljam" in "loljam >> rating" clickable.

jams/jamname:

  • Change entry name color for each entry that I've already voted on. (or do the "rated"/"pending" thing)

jams/jamname/somegame:

  • Show the voting details for my own vote, even if ratings are hidden.

The announcement header:

  • Give it a bit of background color, border or different alignment, so it feels more announcement-ish.
  • "Game jam started" could be "Game jam loljam1 started" or "loljam1 started"

The front page could also use some pictures.

  • Each jam could have its own little logo/icon/picture - they could be based on the jam theme.
  • Maybe have a row of randomly selected games in the bottom

Create an admin panel

... and remove admin functionality from frontend.

  • Jam editing
  • User editing / deletion
  • Merge users (for those who created multiple accounts in the past because no password reset was available) [WONTFIX]
  • Making announcements (Newsletter)

Fix timespan display

From time to time it just displays "timedelta(...)" for the "humantime" filter formatting.

Cache certain pages

We currently don't cache database intense stuff like stats that could be easily cached.

Team finder

Filter the people list by gamedev abilities. Add self status to "looking for team" on a per-jam basis.

Security issue

I think that there is a security issue on the login page.

When login fails, the error message tells you whether you had a valid username or not. If the username is not in the system, the error message is (something like): "Invalid username".

When the password is wrong but the username is valid, it also tells you that the "Password was incorrect".

As far as I know, the standard procedure is to just say that "Either the username and / or the password was incorrect".

Screenshots should be in reverse order

For jams, screenshots should be shown in the reverse order. (Mainly, when on the jam page the newest screenshot should come up first.) It's a pain to remove and reupload the files to get the order nice.

Missing "Back" button

I just noticed, when you are on the "Add Package" screen, there is no button (apart from the browser's Back button, which may??? cause form re-submissions) to get back to the main page for the entry.

There should be a "Cancel" or "Back to entry" button on this screen (and probably some other ones as well) to provide an easy way to get back to the entry's page without any forms being resubmitted, etc.

Error handling is busted

I get this for basically every other request:

[Tue Nov 08 23:04:32 2011] [error] [client 31.18.56.157] mod_wsgi (pid=12773): Exception occurred processing WSGI script '/var/flask-sites/flamejam/flamejam.wsgi'.
[Tue Nov 08 23:04:32 2011] [error] [client 31.18.56.157] Traceback (most recent call last):
[Tue Nov 08 23:04:32 2011] [error] [client 31.18.56.157]   File "/var/flask-sites/flamejam/env/lib/python2.7/site-packages/flask/app.py", line 1518, in __call__
[Tue Nov 08 23:04:32 2011] [error] [client 31.18.56.157]     return self.wsgi_app(environ, start_response)
[Tue Nov 08 23:04:32 2011] [error] [client 31.18.56.157]   File "/var/flask-sites/flamejam/env/lib/python2.7/site-packages/flask/app.py", line 1506, in wsgi_app
[Tue Nov 08 23:04:32 2011] [error] [client 31.18.56.157]     response = self.make_response(self.handle_exception(e))
[Tue Nov 08 23:04:32 2011] [error] [client 31.18.56.157]   File "/var/flask-sites/flamejam/env/lib/python2.7/site-packages/flask/app.py", line 1197, in handle_exception
[Tue Nov 08 23:04:32 2011] [error] [client 31.18.56.157]     return handler(e)
[Tue Nov 08 23:04:32 2011] [error] [client 31.18.56.157]   File "/var/flask-sites/flamejam/flamejam/views.py", line 712, in error
[Tue Nov 08 23:04:32 2011] [error] [client 31.18.56.157]     return render_template("error.html", error = error), error.code
[Tue Nov 08 23:04:32 2011] [error] [client 31.18.56.157] AttributeError: 'exceptions.TypeError' object has no attribute 'code'

Sucks. We should handle this way more properly. See http://flask.pocoo.org/docs/errorhandling/#application-errors and http://flask.pocoo.org/docs/patterns/errorpages/

Markup semantics

Someone should go over the markup and replace some of the elements with more semantic ones. I've only had a brief look, but some of the things I've seen so far are replacing some divs with header and footer elements, the countdown could be a time element, the fuzzy dates on the individual jam pages could be using microformats, each jam entry (on the jam page) could be a figure and figcaption, as could the avatar+username. The entry details table could be a definition list, but I don't think a table is wrong.

Proper login system

Implement a login system that performs more checks and provides the currently logged in user as instance of Participant to all views and the template context... So we don't rely on session.logged_in, session.username etc. directly anymore.

Invalid rating progress if you have submitted a game

Rating progress is invalid if you have submitted own game. It doesn't remove your game from the total number of games you have to still review.

Rating progress: 2 / 4 rated

I have rated 2 games while I only have one left. One game is mine.

Email notifcations

Implement email notifications for new jams, jams about to start, jam events, etc.

Jam registration

Add oneself to the list of jammers. Only these will get more that the pre-jam announcement emails. No need to be registered to use the team finder.

By registering, each user gets a "team". This can consist of only the user himself, but may also contain other users.

One can create a team by inviting other people to the own team. They will be asked by email / notification. The invited user's team will be deleted when they accept the invitation (only if it was their auto-created team with only them as user), and re-created if they leave the team.

All users in a team can edit the game entry of the team.

Team joining is only possible until limit is reached.

Ability to amend jam ratings.

Currently once one rated an entry, there is no (obvious) way to amend the voting, meaning there is no way to correct errors.

Add disclaimer

There should be a disclaimer for people downloading games that the site operators are not responsible for the content of the links.

More skipping reasons

  • No package available (should be automatic)
  • Cannot build / run
  • Unfinished
  • Custom reason (textfield)

UI Makeover

I am not happy with the UI right now. It is not very clear how to use the app. Make important things more outstanding, etc. Maybe a design makeover as well? ;)

More "social" features / profile data

  • gamedev abilities (checkboxes)
    • programming
    • design
    • graphics
    • 3D artist
    • music
    • sound
  • gamedev abilities (textfield for keywords, e.g. "Java, Löve, Pixel-Graphics, Rigging, Ambient music")
  • location (where do people come from?)
  • "About myself"
  • website / blog

Implement all email notifications

so people get notified...

  • when a jam is announced
  • when a jam starts / finishes
  • when voting starts / finishes
  • when something important has changed (manual announcements for admins)

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.