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
- Host: GitHub
- URL: https://github.com/jebissey/myclub
- Owner: jebissey
- License: gpl-3.0
- Created: 2024-12-24T10:27:54.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-02-17T15:03:02.000Z (over 1 year ago)
- Last Synced: 2025-02-17T15:33:13.479Z (over 1 year ago)
- Topics: bootstrap, cms, flight, latte, php-di, php8, sqlite, tiny, tracy
- Language: PHP
- Homepage:
- Size: 9.85 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# MyClub β The ultra-light, fully customizable CMS for your association



**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`.