Coder Social home page Coder Social logo

digitaldeacon / memberhive Goto Github PK

View Code? Open in Web Editor NEW
13.0 8.0 5.0 30.79 MB

Relationship Management System for churches and organisations

Home Page: http://memberhive.com

PHP 35.80% Batchfile 0.10% JavaScript 1.11% HTML 15.44% CSS 5.65% TypeScript 41.86% Shell 0.04%
church-management relationship-management angular material2 hybrid-apps churches nx ionic typescript yii2

memberhive's Introduction

Memberhive

Logo Memberhive

travis Dependency Status devDependency Status Join the chat at https://gitter.im/memberhive2/Lobby

Note

Memberhive is now in Beta status. Many dependencies, like material design for angular, are still under heavy development. Things may change/ break rather quickly because of it. So be patient :)

We stay in step with the dependencies of angular/material, angular/angular-cli and nrwl/nx.

Introduction

The current Memberhive is the redevelopment of Memberhive1. Memberhive is a church relationship management system (CRMS). Our focus is facilitating pastoral relationships within small and mid-sized churches.

Check out our Roadmap (no dates, see ceveat below).

DEMO Environment

A demo environment is currently unavailable (check the High-Level Items list below).

High-Level Items for February & March

In order of importance

  • RBAC (#139) (in progress...)
  • Translation (#9)
  • GDPDR readiness (#165)
  • New DEMO Environment
  • Some rework (#156, #159, #163)

Install

Prerequisites

In order to set your dev environment you need to have the following things in order

PHP

You need PHP 7.1, or higher, with the 'mbstring' and 'simplexml' extensions. Also Composer is required.

On Ubuntu you can install all of those with: sudo apt install php7.1 php7.1-xml php7.1-mbstring composer

On OSX you can get PHP7 via homebrew and composer like this sudo curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

Apache/Nginx

If you want to use/ test the compressions you need to have mod_rewrite, mod_mime and mod_negotiation enabled (Apache, see nginx for related req). In case you want to have the server use brotli you also need to have https working.

Environment installation

If you are on a *nix based system (including OS X) you should use nvm to install NPM versions. Checkout the github repo for detailed installation instructions concerning your environment.

We encourage you to use the latest NPM version (currently 9.x branch), until further notice.

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
nvm install 9.5.0
nvm use 9.5
nvm alias default 9.5
yarn global add angular-cli@latest @nrwl/schematics 
git clone [email protected]:digitaldeacon/memberhive.git
cd memberhive
yarn && cd api && composer install

DEMO Data

You can load some sample demo data by running the following command: php api/yii demo/create-people.

This will load 50 random profiles into the app. You can play with this data during development.

Update/ Upgrade

In case you are updating from a version previsou to the changes from #166 then you should ideally remove everything and clone a fresh copy. Additionally you should clean your dev env as well:

  • first uninstall the cli globally
  • clean your npm/ yarn cache
  • add the latest version of angular-cli back in (globally, via yarn)
  • make sure that you have your global TypeScript up to 2.6.2 (or whatever is the latest version we use now)
  • remove your old (or any!) node_modules folder
  • in case you used yarn before, make sure you do not have a .yarnclean file
  • reinstall

Developing

Code scaffolding

Run ng generate component component-name --app=web to generate a new component. You can also use ng generate directive|pipe|service|class|guard|interface|enum|module.

Build

Run yarn build:web to build the project. The build artifacts will be stored in the dist/ directory. This uses the -prod flag for a production build.

Debugging API Requests

In dev mode the debug window is available under: http://localhost/memberhive/api/web/debug/default/view. You can view all the latest requests there, as well as the runtime/logs folder.

Developing with NgRX (Redux pattern)

Checkout this tutorial for a good overview: https://gist.github.com/btroncone/a6e4347326749f938510. Install the devTools for Chrome.

Serve App

  • yarn start
  • serving with a specific language yarn start:de

Running unit tests

Run ng test to execute the unit tests via Karma.

Running end-to-end tests

Run ng e2e to execute the end-to-end tests via Protractor. Before running the tests make sure you are serving the app via ng serve.

Linting your code

Everything (TS and PHP): yarn lint:all

Typescript only: yarn lint

PHP only: yarn lint:php

Changes to DB

  • Undo all migrations : php api/yii migrate/down all --interactive=0
  • Then redo all migrations again: php api/yii migrate

License

All files are made available under the terms of the GNU Affero General Public License (AGPL). See LICENSE. I.e. you may fork but not resell.

memberhive's People

Contributors

axtho avatar gitter-badger avatar metaxy avatar smehrbrodt avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

memberhive's Issues

(feat) Calendar

Own calendar items
Google Calendar sync (2-way)
Template items (drag and drop)
Repeated events
Outward facing ical link for non-google cal

(feat) system settings

to be stored there:
user specific filters, etc.
note types
personalized labels (later)
dashboard dashlets and their position
etc.

Sermon API

Things to consider:

  • read and write ID3 tags from and to mp3 files (e.g. we already tag our recordings with basics)
    -- Do not assume an upload through Angular, but also let the user choose (local folder or remote folder). Many would want their previous archive to be index as well
  • manage your sermons via s simple interface
  • add theme (e.g. repentance), bible book, series name, preacher and passage (e.g. Titus 1,1-3)
  • some of it (or all) could be tags?
  • where to store the files? In the docker containers? Outside service? Let a church choose where?
  • what to do when storage location gets updated (e.g. want to move it to AWS, etc.)?
  • list sermons (taking in filter params for the "tags" above, + additional)
  • hook up preachers with people (but not required)
  • automatic podcasting (if enabled) - later

(chore) vendor bundle.js seems way too large

this is even after AOT compilation (then still about 3.5mb!!). Also one of the chunks.js files is also just a touch under 1mb. When you read on these issues, e.g. here the file sizes talked about there are in another universe altogether.

We should investigate why our bundles are that much larger. All just because of Material?

(feat) set environment variables in options table for assets

currently we assume that avatar images will got into the web/assets/images/avatar ... folders. That would work, but, in development webpack reloads the app for a file change, when you add a new image. That is not desirable.

I would like to set a variable that tells BOTH Angular AND Yii2 where the files need to be put.

(feat) TinyMCE for Note editor

reasoning: Meeting Notes need more ability to do lists, etc. This could also better email reports for specific notes (those that may send to email)

Also, the mentions plugin supports tinymce

Deployment

How shall we deploy. Like memberhive1?

I don't want to use again hives (self coded deployment stuff) but to replicate the functionality in another system would be quite complicated, because of all the stuff we need

  • lets encrypt
  • plesk (subdomain etc)
  • docker

Docker and letsencrypt could be easy, but having to be nice to plesk is hard.

RDB Version for dynamic content

In der Tabellenstruktur könnten wir einiges beibehalten (JSON Objekte), wenn wir auf MySQL 5.7 gehen würden (z.B. https://www.sitepoint.com/use-json-data-fields-mysql-databases/).

Ansonsten brechen wir all diese Teile in einzelne Tabellen auf (z.B. Tags, Contact, etc.)
z.B.

Auch interessant: https://github.com/tom--/yii2-dynamic-ar

Sermon WP Plugin

Create a WP Plugin that needs an API auth key to poll sermons from MH to WP

Drop Covalent

Ich würde nochmal nachdenken ob wir covalent nutzen.

Chips

https://teradata.github.io/covalent/#/components/chips

Siehe dort die Autocomplete Demo. Es funktioniert ist aber sehr schlecht gemacht von Design und Usabilty.

Flex

Ich würde die Flex Implementieren von Angular nutzen: https://github.com/angular/flex-layout
und nicht die von angular1 portierte von covalent. Siehe auch Teradata/covalent#239 Sie wollen es in Zukunft auch so machen, aber das wird dauern.

Ansonsten sollten wir einfach auf die Features in material2 selbst warten

Suche

Das ist cool aber hat kein Autocomplete: https://teradata.github.io/covalent/#/components/search

Bugs

Den Bug mit der Pipe und ng serve konnte ich nicht fixen

Zusammenfassung:

Das waren jetzt nur ein paar kleine Sachen. Ich habe jetzt covalent schon rausgeschmissen. Wenn wir es wirklich brauchen, dann können wir es reinbringen. Bisdahin würde ich es mit vanilla material2 probieren.

Was würden wir bei Covalent wirklich brauchen?

(feat) Interactions for groups

e.g. rehearsal for music ministry, send a message to the group, each individual gets an interaction to which he can confirm or reject

Version locks of packages

We should lock which versions of which dependency we want to work with. Maybe make this version dependent? (tags) The issue is this: I have a newer version of angualr-cli nstalled globally, which breaks some things.

For development we should all the on the same setup.

Project structure for Yii

Momentan haben wir eine einfache Struktur, mit der API als einfach Wiedergabe (api/persons, z.B.)

Hier stellen sich zwei Fragen:

  1. Wollen API Versionen verwenden? (im Hinblick auf eventuelle APP Entwicklung durch Kinderknecht)
  2. Ein Backend für Admins zulassen? (wie z.B. im Yii2 Rest template angedacht)

Diese Dinge müssen wir jetzt entscheiden, damit wir das routing gestalten können und REST Responses bekommen :)

Can't install composer dependencies

Ever seen something like this?

Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Installation request for squizlabs/php_codesniffer 2.x-dev -> satisfiable by squizlabs/php_codesniffer[2.x-dev].
    - squizlabs/php_codesniffer 2.x-dev requires ext-simplexml * -> the requested PHP extension simplexml is missing from your system.
  Problem 2
    - Installation request for squizlabs/php_codesniffer dev-master -> satisfiable by squizlabs/php_codesniffer[dev-master].
    - squizlabs/php_codesniffer dev-master requires ext-simplexml * -> the requested PHP extension simplexml is missing from your system.
  Problem 3
    - Installation request for yiisoft/yii2 2.0.x-dev -> satisfiable by yiisoft/yii2[2.0.x-dev].
    - yiisoft/yii2 2.0.x-dev requires ext-mbstring * -> the requested PHP extension mbstring is missing from your system.
  Problem 4
    - Installation request for yiisoft/yii2 dev-master -> satisfiable by yiisoft/yii2[dev-master].
    - yiisoft/yii2 dev-master requires ext-mbstring * -> the requested PHP extension mbstring is missing from your system.
  Problem 5
    - yiisoft/yii2 2.0.x-dev requires ext-mbstring * -> the requested PHP extension mbstring is missing from your system.
    - yiisoft/yii2-gii dev-master requires yiisoft/yii2 ~2.0.4 -> satisfiable by yiisoft/yii2[2.0.x-dev].
    - Installation request for yiisoft/yii2-gii dev-master -> satisfiable by yiisoft/yii2-gii[dev-master].

  To enable extensions, verify that they are enabled in those .ini files:
    - /etc/php/7.0/cli/php.ini
    - /etc/php/7.0/cli/conf.d/10-opcache.ini
    - /etc/php/7.0/cli/conf.d/10-pdo.ini
    - /etc/php/7.0/cli/conf.d/20-calendar.ini
    - /etc/php/7.0/cli/conf.d/20-ctype.ini
    - /etc/php/7.0/cli/conf.d/20-exif.ini
    - /etc/php/7.0/cli/conf.d/20-fileinfo.ini
    - /etc/php/7.0/cli/conf.d/20-ftp.ini
    - /etc/php/7.0/cli/conf.d/20-gettext.ini
    - /etc/php/7.0/cli/conf.d/20-iconv.ini
    - /etc/php/7.0/cli/conf.d/20-json.ini
    - /etc/php/7.0/cli/conf.d/20-phar.ini
    - /etc/php/7.0/cli/conf.d/20-posix.ini
    - /etc/php/7.0/cli/conf.d/20-readline.ini
    - /etc/php/7.0/cli/conf.d/20-shmop.ini
    - /etc/php/7.0/cli/conf.d/20-sockets.ini
    - /etc/php/7.0/cli/conf.d/20-sysvmsg.ini
    - /etc/php/7.0/cli/conf.d/20-sysvsem.ini
    - /etc/php/7.0/cli/conf.d/20-sysvshm.ini
    - /etc/php/7.0/cli/conf.d/20-tokenizer.ini
  You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.

person-edit(bug): date format

dom_renderer.js:320 The specified value "Wed Apr 06 1988 02:00:00 GMT+0200 (CEST)" does not conform to the required format, "yyyy-MM-dd".

Initialize Person Table

Bei Personen müssen wir uns noch einmal darüber unterhalten, wie wir gewisse Dinge für eine relationellen DB abzubilden. Z.B. Tags, PrimaryContact und Customfelder

(feat) create a robust tag system

Many things will be in tags with MH, the system needs to be robust enough to enable that

  • status tags for persons
  • free tags for persons and groups
  • free tags for sermons (and possible more?)
  • etc.

The main search and the reports need to be able to query for these

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.