/ecf

Erlang Creative Forum

Primary LanguageErlangGNU Affero General Public License v3.0AGPL-3.0

Erlang Creative Forum

Simple BEAM-powered forum software

About

Erlang Creative Forum (ECF) is intended to be a very simple forum host, similar to SMF or vBulletin or the like, but very lightweight and fast. It's still very early in development so it's missing a lot of features, and I would (currently) recommend against using it. Feel free to take a look around the code though!

Just keep in mind that this is a big giant mess of testing random junk so everything is super inconsistent and weird :P

At the bare minimum, ECF still needs the following:

  • Documentation
  • Tests
  • Lots and lots of CSS/HTML/JS magic to make it look decent!
  • Terms of use and privacy policy?
  • Limit lengths on various things
  • Administration frontend
    • Editing permissions on forums, threads, and groups
  • Security
    • Logging stuff (most likely through lager)
    • Deny non-HTTPS traffic
  • Some kind of rich text formatting (markdown? could kludge it in with client side JS)

So that ECF is reasonably useable, I'd like to add the following as well:

  • Track read/unread posts (needs backend)
  • Listing all users, sorting by various fields (partially done, needs sorting)
  • Searching (needs backend)
    • List all posts by a user
  • Thread tags
  • Replying to posts
  • Email notifications for posts/replies/threads/forums/PMs

And these would be nice to get:

  • Events calendar
  • Announcements
  • Other "addons", perhaps as optional systems
    • e.g. threadmarks

Requirements

Erlang/OTP 20

Installation

Currently there is no real installation process. However, testing ECF is very simple since it uses erlang.mk. Simply make run and it will start it listening on port 8080 and drop you into an Erlang REPL. The first time you start it up, be sure to use ecf_db:install(). to create and setup the database. After that if you change the backing records you will need to either delete and recreate the Mnesia database, or call mnesia:transform_table/3.

Configuration

I'd recommend leaving sys.config alone and editing private.config with all of your needed configuration.

TODO: Describe all configuration options.

You will need to set the following app env variables:

  • captcha_key: reCAPTCHA site key
  • captcha_secret: reCAPTCHA site secret
  • host: The domain name that the forum is hosted on
    • <<"example.com">>
  • base_url: The "base" url of the forum, use a leading slash but no trailing
    • "/ecf", "/forum"
  • email_addr: The address to send email as
    • <<"ecf@example.com">>
  • email_relay: The host to use as a relay
  • email_login: {Username, Password} if your relay requires authentication, or false if it doesn't (e.g. if you're using a relay on localhost).
  • email_host: The host to EHLO as when sending email, set to false to use host
  • forum_name: The name of your forum.
  • http: false or a port number.
  • https: false or {Port, CertFile, KeyFile}.

So when setting up ECF behind an HTTPS-serving reverse proxy, you'll want to set http to the local port (such as 8080, the default), and https to false (also the default).

If you want ECF to server HTTPS traffic directly, set http to false and then https to the required things. Note that they must be strings and not binaries. The PEM file pointed at CertFile may also contain the private key. If that's the case, then KeyFile should be false.

Please note that ECF does not support using HTTP unless behind a reverse proxy that serves HTTPS. This will not change.

Also note that ECF does not currently support using a HTTPS-serving proxy that in turn connects to ECF using HTTPS. It should be supported in the future though.

License and Third Party Software

ECF is under the AGPL 3.0, you may find a copy of it in LICENSE.

ECF makes use of the following third-party software: