Ownware
Home›Membora›Quickstart
Membora · Quickstart

Membora Quickstart, as shipped in the download

The QUICKSTART.txt in the download — the same steps your delivery email carries.

MEMBORA — QUICKSTART
===================

REQUIREMENTS
------------
  - PHP 8.0+ with extensions: pdo, pdo_sqlite (or pdo_mysql)
  - MySQL 5.7+ OR SQLite 3 (SQLite requires no extra setup)
  - A web server (Apache with mod_rewrite, or Nginx with try_files)


SHARED HOSTING / CPANEL (RECOMMENDED FOR MOST BUYERS)
------------------------------------------------------
1. Upload the CONTENTS of the `app/` folder to your web root (e.g. public_html/)
   or a subdirectory (e.g. public_html/membora/).

2. Make sure this directory is writable by PHP:
     data/

   Via cPanel File Manager: right-click -> Permissions -> set to 755 or 775.

3. Visit https://yourdomain.com/install/ in your browser.

4. Fill in the installer:
     - Database: choose MySQL (fill in host/name/user/pass) or SQLite (no setup)
     - Club or association name, currency and timezone
     - Admin name, email + password

5. The installer writes config.php and redirects you to the login page.

6. Sign in. On the dashboard or Settings, click "Load demo data" to explore a
   sample club -- including an AGM that was quorate and carried a motion, and a
   committee meeting that was NOT, whose motion is still open. That second one is
   deliberate: it is the state the product exists to make visible.


TYPICAL FIRST-RUN WORKFLOW
--------------------------
  1. Settings      -> confirm the club name, currency and timezone.
  2. Rates         -> create the subscription rates your constitution names
                      (e.g. "Full member", "Concession", "Life member",
                      "Honorary member"). Life and honorary never lapse.
  3. Members       -> add a member, or import a roster from CSV.
  4. Member page   -> put them on a rate; a subscription term starts and
                      (optionally) a charge is raised.
  5. Meetings      -> schedule a meeting and set its QUORUM. This is the number
                      everything else hangs off: a motion cannot be carried at a
                      meeting that did not reach it.
  6. Roll call     -> pick the meeting, type a name, mark present or apologies.
                      The quorum count moves as you go. Members in arrears are
                      still marked present -- attendance is a record of fact.
  7. Motions       -> record what was proposed, then who voted which way. A member
                      whose subscription has lapsed cannot have a vote recorded;
                      Membora says so, with the date it lapsed.
  8. Payments      -> record subscriptions paid; watch the Arrears list, because
                      everyone on it loses their vote at the next meeting.


VPS / SELF-HOSTED
-----------------
Apache example:

  <VirtualHost *:80>
    DocumentRoot /var/www/membora/app
    <Directory /var/www/membora/app>
      AllowOverride All
      Require all granted
    </Directory>
  </VirtualHost>

Run the web installer as above, or use the CLI seeder to load demo data:

  php bin/demo.php    # loads demo data (login: admin@membora.app / admin123)


DOCKER (QUICK TEST)
-------------------
  docker run --rm -p 8080:8080 \
    -v "$(pwd)/app:/var/www/html" \
    -w /var/www/html \
    php:8.3-cli \
    php -S 0.0.0.0:8080 router.php

  Then visit http://localhost:8080/install/


RUNNING THE TESTS
-----------------
  docker run --rm -v "$(pwd)/app:/app" -w /app php:8.3-cli php tests/run.php

  Expect: ALL 90 TESTS PASSED (0 failed)


POST-INSTALL SECURITY CHECKLIST
--------------------------------
  [ ] config.php is protected (the .htaccess does this automatically)
  [ ] data/ is not web-accessible (.htaccess blocks it automatically)
  [ ] Use HTTPS in production
  [ ] Keep PHP updated
  [ ] Use a strong admin password


NOTES
-----
  * Membora is the SECRETARY-side register, not a public club website.
  * "Today", lapse dates and subscriptions-this-month are all computed in the
    timezone you set in Settings.
  * Money is stored as integer cents; enter subscriptions as plain decimals (35.00).
  * Quorum 0 on a meeting means "none required", not "a requirement of zero".
    Capacity 0 likewise means no limit, which is what most club meetings are.
  * The demo's "Reset all data" removes members, subscriptions, payments, meetings,
    motions and votes, but keeps your login and settings.

← Back to Membora · Manual · API · Test run

Affiliate program
Recommend tools people own — earn 35% on every sale. 90-day tracking, instant delivery, payouts by Lemon Squeezy.
Become an affiliate →