Giter Site home page Giter Site logo

bitboard's Introduction

bitBoard

Well, here goes.. I'm finally committing my shame to a public git repository for all the world to view.

This is my first non-trivial attempt at writing a web app in something that isn't PHP. (I don't count my failed attempts using Django, Rails and Pyramid.. seeing as I never got anywhere with those :p) I'm not all too happy with the state of the code and if you're a better programmer than me you'll probably think it sucks, but I'm learning as I go along. Okay, enough self-depreciation for now.

bitBoard is a forum/message board system partly inspired by the (fairly niche) AcmlmBoard software, but with a more modern look and feel, and with some extra features. I'm concentrating on the forum as the core, but I've also got a simple wiki module, and I plan to add a file database which will eventually power the downloads section on RVLution.net.

Current features:

  • Database agnostic (in theory.. I only test it on PostgreSQL right now)
  • User accounts system that allows users to be placed into a Group for different privileges
  • JavaScript/AJAX progressive enhancement: the user experience is nicer if you have JS enabled, but you can still use every feature without it
  • Forum:
    • Individual forums sorted into categories
    • Fine-grained permissions system that allows different permissions per group and forum
    • Quick reply and inline post editing
    • Threads can be stickied and locked
    • Old versions of posts are stored, for moderators' referencee
    • Basic BBCode (soon to be Markdown?) and fully sanitised HTML in posts
    • Customisable post layouts/styles a la AcmlmBoard
  • Wiki:
    • Create and edit pages, view their history
    • Yes, it's really barebones at the moment. It'll get better!
  • Nice URLs everywhere
  • Security features:
    • All POST requests are protected against CSRF using Flask_SeaSurf, and GET requests are not used for anything which can have an effect on the site
    • Passwords are securely encoded using BCrypt
    • SQL injection is entirely impossible

I've still got lots left to do. See todo.md in the repo root if you want to see the ridiculously long list of things I have planned...

Dependencies I'm currently using:

  • alembic 0.5.0 (which I still need to learn properly... :x)
  • Flask 0.9
  • Flask_Assets 0.8
  • Flask_Bcrypt 0.5.2
  • Flask_DebugToolbar 0.7.1
  • Flask_SeaSurf 0.1.16
  • Flask_SQLAlchemy 0.16
  • Flask_WTF 0.8
  • html5lib 0.95
  • Jinja2 2.6
  • SQLAlchemy 0.8.0
  • webassets 0.8
  • WTForms 1.0.2

Also, PIL is necessary for validating the dimensions of uploaded avatars.

If you want to modify the CSS, you'll need to install some version of Sass/Compass to compile it, and change HAVE_COMPASS to True in config.py.

If you're not doing that, the pre-compiled version included in the repo should be fine.

I hope I didn't forget anything.

Quick (Kinda) Install:

  • Clone the repo.
  • Use pip to install the latest versions of everything listed above.. except for PIL, which is a special snowflake, so download the Windows installer from the site or install it from your distro's repos if you're on Linux.
  • Copy bitBoard/config.py.default to bitBoard/config.py.
  • Edit your new config.py to include the appropriate settings.
  • Create the database with some initial settings: python2 init_db.py
  • Run using python2 runserver.py.
  • Be sad because the software isn't complete yet.

Some Notes:

You can pass the debug argument to runserver.py to enable the debugger. This will force the server to listen only for local connections, because the Werkzeug debugger enables anyone to run arbitrary Python code and you probably don't want that.

Don't use the testing server in production. Seriously.

Speaking of which... I need to figure out how to make this thing easy to deploy with a production-ready web server. I figure it shouldn't be too hard, but... just noting this here so you know bitBoard isn't prepared for it yet :p

bitboard's People

Contributors

treeki avatar arisotura avatar

Stargazers

Rolls avatar

Watchers

James Cloos avatar  avatar

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.