An open API service indexing awesome lists of open source software.

https://github.com/jebissey/myclub

Manage a club
https://github.com/jebissey/myclub

bootstrap cms flight latte php-di php8 sqlite tiny tracy

Last synced: 5 months ago
JSON representation

Manage a club

Awesome Lists containing this project

README

          

# MyClub – The ultra-light, fully customizable CMS for your association

![PHP](https://img.shields.io/badge/PHP-%3E%3D8.1-blue)
![SQLite](https://img.shields.io/badge/SQLite-Used-green)
![License](https://img.shields.io/badge/license-MIT-lightgrey)

**MyClub** is a lightweight CMS tailored for associations.
It helps clubs manage **articles, events, and members** with an intuitive interface, user preferences, and built-in access control.

πŸ‘ [Tutorials](https://www.youtube.com/channel/UC3EmmKasCGdM2_fP2ZNdAzg)πŸ‡«πŸ‡·

πŸ“– [Manuals](https://myclub.alwaysdata.net/)πŸ‡«πŸ‡·

---

## πŸ“‘ Table of Contents
- [MyClub – The ultra-light, fully customizable CMS for your association](#myclub--the-ultra-light-fully-customizable-cms-for-your-association)
- [πŸ“‘ Table of Contents](#-table-of-contents)
- [✨ Features](#-features)
- [πŸ” Security \& Authorizations](#-security--authorizations)
- [Available Authorizations](#available-authorizations)
- [πŸ§ͺ Automated Route Testing](#-automated-route-testing)
- [πŸ‘οΈ Examples](#️-examples)
- [�️ Manuals and tutorials (in French)](#️-manuals-and-tutorials-in-french)
- [WebApp Summary - Multi-Role Management System](#webapp-summary---multi-role-management-system)
- [Overview](#overview)
- [Administrator Roles](#administrator-roles)
- [πŸ—“οΈ Event Manager](#️-event-manager)
- [🎨 Designer](#-designer)
- [✍️ Redactor (Editor)](#️-redactor-editor)
- [πŸ§‘β€πŸ€β€πŸ§‘ Person Manager](#-person-manager)
- [πŸ” Visitor Insights (Observer)](#-visitor-insights-observer)
- [πŸ› οΈ Webmaster](#️-webmaster)
- [End User Interface](#end-user-interface)
- [Personal Space](#personal-space)
- [Community Features](#community-features)
- [Authentication System](#authentication-system)
- [πŸš€ Getting Started](#-getting-started)
- [1) Download the latest release](#1-download-the-latest-release)
- [2) Upload to your hosting](#2-upload-to-your-hosting)
- [3) Log in with the administrator account and change email/password](#3-log-in-with-the-administrator-account-and-change-emailpassword)
- [4) Create groups with authorizations](#4-create-groups-with-authorizations)
- [Initial account \& Webmaster group (fresh installs)](#initial-account--webmaster-group-fresh-installs)
- [5) Fill in the settings \[HomeDesigner\]](#5-fill-in-the-settings-homedesigner)
- [6) Create event types and requirements \[EventDesigner\]](#6-create-event-types-and-requirements-eventdesigner)
- [7) Create navigation bars \[NavbarDesigner\]](#7-create-navigation-bars-navbardesigner)
- [8) Create self-registration and authorizationless groups \[PersonManager\]](#8-create-self-registration-and-authorizationless-groups-personmanager)
- [9) Write articles \[Redactor\]](#9-write-articles-redactor)
- [10) Publish public articles \[Editor\]](#10-publish-public-articles-editor)
- [πŸ’Ύ Data \& Backup](#-data--backup)
- [❓ FAQ](#-faq)
- [If you encounter this error…](#if-you-encounter-this-error)
- [β€œError: could not find driver”](#error-could-not-find-driver)
- [Internal error: Class ”IntlDateFormatter" not found](#internal-error-class-intldateformatter-not-found)

---

## ✨ Features

1. **Articles** – Members can read and share articles written by other members.
2. **Activity Management** – Sign up for activities, export events to your calendar with iCal.
3. **User Preferences** – Save your favorite event types and weekly availability to filter events.
4. **Secure Identification** – Users log in via email; the first login requires using the "forgotten password" option to create a password.
5. **Mini CMS** – Includes articles, events, and customizable pages.
6. **Database** – All data is stored in an **SQLite** database.

---

## πŸ” Security & Authorizations

Security is based on **groups**. There are three types:
- Groups with authorization
- Groups without authorization
- Self-registration groups

### Available Authorizations

| Authorization | Description |
| ------------------- | ---------------------------------------------------------------------------- |
| **Webmaster** | Full administrative access. Manage groups with authorizations |
| **PersonManager** | Manage members and their groups without authorization (CRUD, import/export). |
| **EventManager** | Create, edit, and manage events (scheduling, location, participants). |
| **Editor** | Can publish public articles. |
| **Redactor** | Write content and publish for restricted audiences (not public). |
| **EventDesigner** | Define event types and their attributes, assign to groups. |
| **HomeDesigner** | Customize the homepage layout, and all other settings. |
| **KanbanDesigner** | Create/manage kanban projects. |
| **NavbarDesigner** | Define navigation bars. |
| **VisitorInsights** | Access visitor statistics and analytics. |

---

## πŸ§ͺ Automated Route Testing

- **180+ routes** are automatically discovered and tested.
- **1900+ routes** are simuled to test each route with each authorization.
- For routes with parameters (`@`), the **JsonGetParameters** column must exist in the test database.
- For **POST** routes, the **JsonPostParameters** column must be filled.
- **Authentication** can be simulated via the **JsonConnectedUser** column.
- Results can be validated with **Query** and **QueryExpectedResponse**.
- Each test row must define **ExpectedResponseCode**.

---

## πŸ‘οΈ Examples

πŸ‘‰ **MyClub web application**
[Presentation of the web app, with articles and videos](https://myclub.alwaysdata.net/)

πŸ‘‰ **Nordic Walking club website**
[BNW – Burgundy Nordic Walking](https://bnw-dijon.fr/)

πŸ‘‰ **Static website (artist portfolio)**
[Paintings by an artist πŸ˜‰](https://peinturesbribri.alwaysdata.net/navbar/show/article/3)

πŸ‘‰ **Static website**
[About the Sinclair ZX Spectrum](https://jeblog.alwaysdata.net/spectrum_FR.html)

πŸ‘‰ **Personal blog**
[Personal blog written and maintained by me](https://jeblog.alwaysdata.net/)

πŸ‘‰ **Test environment**
[Test MyClub instance](https://testmyclub.alwaysdata.net/)

---

## πŸ‘οΈ Manuals and tutorials (in French)

πŸ‘‰ [You are](https://myclub.alwaysdata.net/navbar/show/article/10)

πŸ‘‰ [MyClub Dictionary](https://myclub.alwaysdata.net/navbar/show/article/47)

πŸ‘‰ [Short videos](https://myclub.alwaysdata.net/navbar/show/article/28)

---

# WebApp Summary - Multi-Role Management System

## Overview
This web application is a comprehensive management system based on user roles, featuring specialized interfaces for different types of administrators and end users. The application follows a modular architecture with contextual navigation based on permissions.

## Administrator Roles

### πŸ—“οΈ Event Manager
- **Weekly Calendar**: Overview of the next 3 week's events
- **Upcoming Events**: Planning and tracking of future events
- **Invitation System**: Sending personalized invitations
- **Email Management**: Communication with participants
- **Pivot Table**: Statistical analysis of events

### 🎨 Designer
Interface divided into sub-specialties:
- **Event Designer**: Designing event types and managing requirements
- **Home Designer**: Configuring general settings and managing designs
- **Kanban Designer**: Creation Kanban projects
- **Navbar Designer**: Customizing the navigation bar

### ✍️ Redactor (Editor)
- **Article Management**: Creating, editing, and publishing content
- **Media Library**: Organizing and managing media files
- **Content Analytics**: Top 50 most viewed articles
- **Analytical Dashboard**: Cross-analysis of content

### πŸ§‘β€πŸ€β€πŸ§‘ Person Manager
- **Member Management**: Member administration
- **Group management**: User group administration
- **Registration management**: Managing users registrations
- **Import members**: From CSV files

### πŸ” Visitor Insights (Observer)
- **Traffic Analysis**: Referrer sites and visitor sources
- **Page Performance**: Page rankings by period
- **Advanced Analytics**: Pivot tables for data analysis
- **Visitor Monitoring**: Logs and traffic statistics
- **Real-time Tracking**: Latest visits and user behavior

### πŸ› οΈ Webmaster
- **Technical Administration**: Database browser
- **Group management**: User group administration
- **Registration management**: Managing users registrations
- **Maintenance**: Set/unset website under maintenance mode

## End User Interface

### Personal Space
- πŸ§‘β€πŸ’Ό **Account**: Personal profile management
- πŸ•’ **Availability**: Schedule and available time slots
- πŸ” **Groups**: Membership in various groups
- ⭐ **Preferences**: Customized settings
- πŸ“Š **Statistics**: Personal dashboard

### Community Features
- πŸ§‘β€πŸ€β€πŸ§‘ **Directory**: Member directory
- πŸ“° **News**: Personalized news feed
- πŸ—’οΈ **Notepad**: Personal note-taking space

## Authentication System
- **Custom Avatar**: Emoji display or Gravatar image
- **Conditional Admin Access**: Admin zone access button if authorized
- **Secure Logout**: Logout system
- **Contextual Help**: Integrated support

---

# πŸš€ Getting Started

> This quick guide will take you from a freshly downloaded archive to a running and secured instance.

## 1) Download the latest release
- Get the last relase [here](https://github.com/jebissey/MyClub/releases).

## 2) Upload to your hosting
- Unpack the archive **locally** and then **upload** *WebSite* files to your hosting.

## 3) Log in with the administrator account and change email/password
- Open your site’s URL and log πŸ«₯ in using the **initial administrator account** { admin account = webmaster οΌ  myclub β€€ foo ( admin1234 ) }.
- Go to **your avatar > Account** πŸ€”πŸ§‘β€πŸ’Ό:
- Immediately change your **name** and **email address**.
- **Sign out** and use **forgotten password** to create your password.

## 4) Create groups with authorizations
- Navigate to **Administration zone > Webmaster**:
1. **Create groups** with their **authorizations** πŸ§‘β€πŸ€β€πŸ§‘.
2. **Assign authorizations** to user(s) 🎟️.

### Initial account & Webmaster group (fresh installs)
On a fresh installation the application creates **one initial user account** and **one group** named **Webmaster**.
- The initial administrator account **cannot be deleted** and is the **only member** of the `Webmaster` group by default.
- The `Webmaster` group holds the highest level of access but not enable to do everything directly.

**Recommended first step:** create a new group (e.g., `Full`) that is granted **all available authorizations**, then add your regular admin user(s) to that group. This lets you use a daily admin account for routine tasks while keeping the original initial account reserved for emergency recovery and sensitive operations.

## 5) Fill in the settings [HomeDesigner]
- Go to **Administration zone > Designer** πŸŽ¨πŸ”§

- Configure the **general settings** of the application (title, description, logo, etc.).

## 6) Create event types and requirements [EventDesigner]
- Go to **Administration zone > Designer** πŸŽ¨πŸ—“οΈ/πŸ“‹
- **Create event types** (walks, meetings, trainings, etc.).
- Define **requirements and constraints** for each type (duration, participants, equipment, etc.).

## 7) Create navigation bars [NavbarDesigner]
- Go to **Administration zone > NavbarDesigner** πŸŽ¨πŸ“‘
- **Design and customize navigation bars** for different user roles.

## 8) Create self-registration and authorizationless groups [PersonManager]
- Go to **Administration zone > PersonManager** πŸ‘₯
- **Create groups without authorizations**, marked as self-registrable.
- Add users to these groups.

## 9) Write articles [Redactor]
- Go to **Administration zone > Redactor** ✍️
- **Write and manage articles** (drafts, editing, formatting).
- **Review and publish articles** to make them visible to groups or users but not the public.

## 10) Publish public articles [Editor]
- Go to **Articles list > Editor** πŸ“’
- **Review and publish articles** to make them visible to groups, users or the public.

---

# πŸ’Ύ Data & Backup

All the site content is stored in a **SQLite database**:
- Main data: `WebSite/data/MyClub.sqlite`
- Logs: `WebSite/data/LogMyClub.sqlite`

A **GFS backup** is created every time an article is saved, stored under:
`WebSite/backup////`

> As the IT saying goes: *β€œAny data stored on a single medium is doomed to disappear.”*
It is essential to **regularly copy `MyClub.sqlite` to another physical storage** to ensure data safety.

---

# ❓ FAQ

## If you encounter this error…

### β€œError: could not find driver”
- **Causes**:
- PDO driver not installed/activated.
- **Fix**:
- Add/Enable `extension=pdo_sqlite`.

### Internal error: Class ”IntlDateFormatter" not found
- **Causes**:
- intl extension not installed/activated.
- **Fix**:
- Add/Enable `extension=intl`.