{"id":13554585,"url":"https://github.com/southlondonmakerspace/membership-system","last_synced_at":"2025-04-03T07:32:01.391Z","repository":{"id":96385733,"uuid":"46180089","full_name":"southlondonmakerspace/membership-system","owner":"southlondonmakerspace","description":"This is a membership management system, it's chiefly a database of member data for legal purposes, setting up subscription payments, managing access control permissions, logging events, and interfacing with Discourse permissions.","archived":false,"fork":false,"pushed_at":"2020-07-22T21:01:54.000Z","size":2261,"stargazers_count":48,"open_issues_count":65,"forks_count":22,"subscribers_count":11,"default_branch":"master","last_synced_at":"2024-11-04T03:31:35.238Z","etag":null,"topics":["hackspace","makerspace","membership","membership-management","payment","subscription"],"latest_commit_sha":null,"homepage":"http://southlondonmakerspace.org","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/southlondonmakerspace.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2015-11-14T15:34:20.000Z","updated_at":"2024-10-18T02:30:45.000Z","dependencies_parsed_at":"2023-06-15T06:15:50.288Z","dependency_job_id":null,"html_url":"https://github.com/southlondonmakerspace/membership-system","commit_stats":null,"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/southlondonmakerspace%2Fmembership-system","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/southlondonmakerspace%2Fmembership-system/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/southlondonmakerspace%2Fmembership-system/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/southlondonmakerspace%2Fmembership-system/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/southlondonmakerspace","download_url":"https://codeload.github.com/southlondonmakerspace/membership-system/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246956590,"owners_count":20860464,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hackspace","makerspace","membership","membership-management","payment","subscription"],"created_at":"2024-08-01T12:02:50.802Z","updated_at":"2025-04-03T07:32:00.950Z","avatar_url":"https://github.com/southlondonmakerspace.png","language":"JavaScript","funding_links":[],"categories":["JavaScript","others"],"sub_categories":[],"readme":"# Membership System\nThis is a membership management system, it's chiefly a database of member data for legal purposes, setting up subscription payments, managing access control permissions, logging events, and interfacing with Discourse permissions.\n\nThis system was created for [South London Makerspace](http://southlondonmakerspace.org).\n\n## Setup\nThere are two options for setup, either as a new install (Steps 1, 2, 3a, 4, 5), or importing dry test data from the [data drier](https://github.com/southlondonmakerspace/membership-dryer) (Steps 1, 2, 3b, 4, 5), which is currently not publicly available.\n\n## 1. Prerequisites\nBefore you can start the server you'll need to ensure:\n\n- Node.js is installed\n- MongoDB is installed\n\n### 2. Before install\n1. Clone the repo into a folder.\n1. Copy the example config in the `config` folder, naming it `config.json`. Complete the details.\n\n### 3a. New install\n1. Use `npm install` to install the numerous dependencies.\n1. Run `npm run first-time` to create the basic necessary database entries.\n\n### 3b. Import\n1. Ensure the `permissions` section is complete to match the server where data was exported from, especially the `admin` and `superadmin` details.\n1. Use `npm install` to install the numerous dependencies.\n1. Run `npm run import \u003cpath to dry data\u003e` to import the dry data.\n\n### 4. After install\n1. Run `npm run new-user` to create an activated super admin user.\n1. Start the main server using `npm run start`.\n1. Open a browser to `http://localhost:3001`.\n\n### 5. Further steps\nThe system is now up and running, however you'll need to review:\n- HTTPs via Nginx as a proxy, so requests to https://localhost are proxied by Nginx to http://localhost:3001.\n- A firewall setup only allowing SSH + HTTPs access, specifically preventing 3001.\n- Setting up GoCardless for subscriptions.\n- Configuring Discourse for forum management.\n- Testing the API integration with your access control system.\n\n## Creating Apps\nThe 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.\n\nAs an example, let's add a login page.\n\nStub out your app structure within `app/`, this will include:\n\n\tapps/\n\t\tlogin/\n\t\t\tviews/\n\t\t\t\tapp.js\n\t\t\t\tconfig.js\n\n\nCheck out these files to get an idea of how each of these should be structure.\n\n## Reverse proxy\nIf running behind a reverse proxy, you should configure your proxy to add the `X-Forwarded-*` headers (see [nginx documentation](https://www.nginx.com/resources/wiki/start/topics/examples/forwarded/)), and also set reverseProxyTrust variable in `config/config.json`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsouthlondonmakerspace%2Fmembership-system","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsouthlondonmakerspace%2Fmembership-system","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsouthlondonmakerspace%2Fmembership-system/lists"}