The Bristol Cable's membership system
Clone or download
Pull request Compare This branch is 491 commits ahead of southlondonmakerspace:master.
Latest commit a4d3a57 Jan 23, 2019

readme.md

Membership System

This system was originally created for South London Makerspace and repurposed by The Bristol Cable.

Browser testing with

Integrations

  • GoCardless for direct debits
  • MailChimp for newsletters
  • Mandrill for transactional emails
  • Discourse for forums (not sure what the state of this is)

Development

Setup

1. Prerequisites

Before you can start the server you'll need to ensure:

  • Node.js is installed
  • MongoDB is installed

2. Before install

  1. Clone the repo into a folder.
  2. Copy the example config in the config folder, naming it config.json. Complete the details.

3. New install

  1. Use npm install to install the numerous dependencies.
  2. Run npm run first-time to create the basic necessary database entries.
  3. [Temporary step] In the config file update permission.memberId to match the ID returned by:
    tools/database/shell.sh
    db.permissions.findOne({"slug": "member"})._id
    
  4. Optionally import data using node tools/database/import.json if you have access to an anonymised export.

4. After install

  1. Run npm run new-user to create an activated super admin user.
  2. Start the main server using npm start.
  3. Open a browser to http://localhost:3001.

Creating apps

The system is built around modular apps. If you're looking to add functionality to the site the best way to do this would by adding an app to the site rather than modifying it's base. This means you're unlikely to mess anything up.

As an example, let's add a login page.

Stub out your app structure within app/, this will include:

apps/
	login/
		views/
			app.js
			config.js

Check out these files to get an idea of how each of these should be structure.

Deployment

Setup

Currently setting up a production environment involves following the guide in tools/install.sh

Updating

git pull
pm2 restart config/ecosystem.prod.js