Giter Site home page Giter Site logo

gobb's Introduction

GoBB

A simple forum platform written in Go.

Warning! Alpha quality software!

GoBB is currently in its early stages of development. While it is pretty usable at the moment (and actively being used in a trusted production environment), I'd recommend you hold off on using it for something big for the time being. There are still a lot of things that need to be patched up before it's ready for the big leagues. Having said that, if you're looking for a simple (and blazing fast) bulletin board for your friends who are willing to deal with some bugs, this might be the bb for you!

GoBB is getting better by the day, so hopefully it'll be ready to graduate from the alpha stage of development soon.

Screenshot

Installation

Get GoBB

$ go get github.com/stevenleeg/gobb/gobb

Create a config file

Create a directory where you'd like to house your GoBB installation's files. This can be anywhere on your filesystem. Then copy the contents of gobb.sample.conf into a file called gobb.conf.

The config should be self explanatory, so fill it with the appropriate information and save.

Set up the Postgres database:

We'll need to create a new database for GoBB's data to be stored:

$ psql
# CREATE DATABASE gobb;
CREATE DATABASE
# CREATE ROLE gobb WITH PASSWORD 'password';
CREATE ROLE
# GRANT ALL PRIVILEGES ON DATABASE gobb TO gobb;
GRANT
# ALTER ROLE gobb WITH LOGIN;
ALTER ROLE

Run it

Now that everything's ready to go we can start the server for the first time. You'll need to pass the --migrate flag on the initial start up. This will automatically create the database schema and make sure it's up to date.

$ gobb --config /path/to/gobb.conf --migrate

(Remember to add $GOPATH/bin to your $PATH! If you don't know what this means, start here)

The server should then be up and running on port 8080.

Your first account

Once the server is up, go ahead and browse to http://localhost:8080 and register. Once you've created the first account, it will be promoted to admin so you can create the first boards and begin moderating posts.

And that's it! You should have a functional copy of GoBB ready to use!

Deploy it!

If you understand what you're getting yourself into and willing to run GoBB in a prod environment, I reccommend setting up an nginx reverse-proxy to expose your installation to the public. Create a new nginx config that looks something like this:

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Contributing

If you see something that could be better with GoBB, feel free to fork it and create a pull request. Just be sure to run go fmt before you submit the pull request so everything stays tidy!

gobb's People

Contributors

chimeracoder avatar clehner avatar dingbat avatar jamesa avatar stevenleeg 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  avatar  avatar  avatar  avatar

gobb's Issues

Add webhook support

It would be nice if there was an interface for adding webhooks. This could be a list of URLs that get pinged when a post is created or edited. This would allow for services like an IRC bot that would post in a channel whenever a new post is made or topic is started on the board.

Ensure first user is admin

Ensure that the first user who registers (id: 1) is assigned to the admin role by default. This rids of the installation step that involves going into postgres and running that UPDATE query.

Make usernames case insensitive

It's possible to create usernames with the same name but different cases, which is a problem. Make usernames case insensitive when registering, checking, and logging in.

Empty signature boxes are shown

If you haven't set a signature and make a post no signature is shown.

If you set a signature, remove it (set the field to nothing in your user settings), and then post, a signature box is shown.

Possible solution would be to set user.Signature.Valid to false if the user's signature is set to an empty string.

Push for SSL

  • Get SSL running on the demo site (and currently running instances).
  • Add documentation for getting an SSL reverse proxy running and highly recommend using it.

Add breadcrumbs for boards

Currently can't see a way to traverse the board hierarchy. "Posts in general" could be "Board Index >> General" or something. Maybe it works and it's disabled? Don't know.

Add LICENSE

Best practice. Do this before you forget.

React and Graphql

Hi,
What is your opinion about, use React and Graphql for the client side?
image

Implement registration spambot protection

Something like recaptcha. Make sure it's optional (on the admin's end).

Not a requirement for the milestone, but it might be useful to optionally collect e-mail addresses and require e-mail validation.

Add banning system

Some way of banning users and IP addresses by moderators/administrators.

Investigate (non-fatal) error source

I'm periodically seeing things like this in the log:

[error] Could not get latest post: (sql: no rows in result set)
[error] Cannot select user (sql: no rows in result set)
Something weird is going on here: parent_id: 1171, page_id: 0[error] Something went wrong in posts ([error] Could not get parent (1171))
[error] Cannot select user (sql: no rows in result set)
Something weird is going on here: parent_id: 865, page_id: 0[error] Something went wrong in posts ([error] Could not get parent (865))
Something weird is going on here: parent_id: 865, page_id: 0[error] Something went wrong in posts ([error] Could not get parent (865))

Not exactly sure what could be causing them (I know where the errors are occurring, just not why).

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.