{"id":23907439,"url":"https://github.com/jebissey/myclub","last_synced_at":"2026-02-14T11:26:51.371Z","repository":{"id":269713311,"uuid":"907763398","full_name":"jebissey/MyClub","owner":"jebissey","description":"Manage a club","archived":false,"fork":false,"pushed_at":"2025-02-17T15:03:02.000Z","size":10324,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-17T15:33:13.479Z","etag":null,"topics":["bootstrap","cms","flight","latte","php-di","php8","sqlite","tiny","tracy"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jebissey.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-24T10:27:54.000Z","updated_at":"2025-02-17T15:03:06.000Z","dependencies_parsed_at":null,"dependency_job_id":"8046adf2-3348-4301-aa6e-4250ec5ba957","html_url":"https://github.com/jebissey/MyClub","commit_stats":null,"previous_names":["jebissey/myclub"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jebissey%2FMyClub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jebissey%2FMyClub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jebissey%2FMyClub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jebissey%2FMyClub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jebissey","download_url":"https://codeload.github.com/jebissey/MyClub/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240331315,"owners_count":19784643,"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":["bootstrap","cms","flight","latte","php-di","php8","sqlite","tiny","tracy"],"created_at":"2025-01-05T03:11:55.739Z","updated_at":"2026-02-14T11:26:51.366Z","avatar_url":"https://github.com/jebissey.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MyClub – The ultra-light, fully customizable CMS for your association\n\n![PHP](https://img.shields.io/badge/PHP-%3E%3D8.1-blue)  \n![SQLite](https://img.shields.io/badge/SQLite-Used-green)  \n![License](https://img.shields.io/badge/license-MIT-lightgrey)  \n\n**MyClub** is a lightweight CMS tailored for associations.  \nIt helps clubs manage **articles, events, and members** with an intuitive interface, user preferences, and built-in access control.\n\n👍 [Tutorials](https://www.youtube.com/channel/UC3EmmKasCGdM2_fP2ZNdAzg)🇫🇷\n\n📖 [Manuals](https://myclub.alwaysdata.net/)🇫🇷\n\n---\n\n## 📑 Table of Contents\n- [MyClub – The ultra-light, fully customizable CMS for your association](#myclub--the-ultra-light-fully-customizable-cms-for-your-association)\n  - [📑 Table of Contents](#-table-of-contents)\n  - [✨ Features](#-features)\n  - [🔐 Security \\\u0026 Authorizations](#-security--authorizations)\n    - [Available Authorizations](#available-authorizations)\n  - [🧪 Automated Route Testing](#-automated-route-testing)\n  - [👁️ Examples](#️-examples)\n  - [�️ Manuals and tutorials (in French)](#️-manuals-and-tutorials-in-french)\n- [WebApp Summary - Multi-Role Management System](#webapp-summary---multi-role-management-system)\n  - [Overview](#overview)\n  - [Administrator Roles](#administrator-roles)\n    - [🗓️ Event Manager](#️-event-manager)\n    - [🎨 Designer](#-designer)\n    - [✍️ Redactor (Editor)](#️-redactor-editor)\n    - [🧑‍🤝‍🧑 Person Manager](#-person-manager)\n    - [🔍 Visitor Insights (Observer)](#-visitor-insights-observer)\n    - [🛠️ Webmaster](#️-webmaster)\n  - [End User Interface](#end-user-interface)\n    - [Personal Space](#personal-space)\n    - [Community Features](#community-features)\n  - [Authentication System](#authentication-system)\n- [🚀 Getting Started](#-getting-started)\n  - [1) Download the latest release](#1-download-the-latest-release)\n  - [2) Upload to your hosting](#2-upload-to-your-hosting)\n  - [3) Log in with the administrator account and change email/password](#3-log-in-with-the-administrator-account-and-change-emailpassword)\n  - [4) Create groups with authorizations](#4-create-groups-with-authorizations)\n    - [Initial account \\\u0026 Webmaster group (fresh installs)](#initial-account--webmaster-group-fresh-installs)\n  - [5) Fill in the settings \\[HomeDesigner\\]](#5-fill-in-the-settings-homedesigner)\n  - [6) Create event types and requirements \\[EventDesigner\\]](#6-create-event-types-and-requirements-eventdesigner)\n  - [7) Create navigation bars \\[NavbarDesigner\\]](#7-create-navigation-bars-navbardesigner)\n  - [8) Create self-registration and authorizationless groups \\[PersonManager\\]](#8-create-self-registration-and-authorizationless-groups-personmanager)\n  - [9) Write articles \\[Redactor\\]](#9-write-articles-redactor)\n  - [10) Publish public articles \\[Editor\\]](#10-publish-public-articles-editor)\n- [💾 Data \\\u0026 Backup](#-data--backup)\n- [❓ FAQ](#-faq)\n  - [If you encounter this error…](#if-you-encounter-this-error)\n    - [“Error: could not find driver”](#error-could-not-find-driver)\n    - [Internal error: Class ”IntlDateFormatter\" not found](#internal-error-class-intldateformatter-not-found)\n\n---\n\n## ✨ Features\n\n1. **Articles** – Members can read and share articles written by other members.  \n2. **Activity Management** – Sign up for activities, export events to your calendar with iCal.  \n3. **User Preferences** – Save your favorite event types and weekly availability to filter events.  \n4. **Secure Identification** – Users log in via email; the first login requires using the \"forgotten password\" option to create a password.  \n5. **Mini CMS** – Includes articles, events, and customizable pages.  \n6. **Database** – All data is stored in an **SQLite** database.  \n\n---\n\n## 🔐 Security \u0026 Authorizations  \n\nSecurity is based on **groups**. There are three types:  \n- Groups with authorization  \n- Groups without authorization  \n- Self-registration groups  \n\n### Available Authorizations  \n\n| Authorization       | Description                                                                  |\n| ------------------- | ---------------------------------------------------------------------------- |\n| **Webmaster**       | Full administrative access. Manage groups with authorizations                |\n| **PersonManager**   | Manage members and their groups without authorization (CRUD, import/export). |\n| **EventManager**    | Create, edit, and manage events (scheduling, location, participants).        |\n| **Editor**          | Can publish public articles.                                                 |\n| **Redactor**        | Write content and publish for restricted audiences (not public).             |\n| **EventDesigner**   | Define event types and their attributes, assign to groups.                   |\n| **HomeDesigner**    | Customize the homepage layout, and all other settings.                       |\n| **KanbanDesigner**  | Create/manage kanban projects.                                               |\n| **NavbarDesigner**  | Define navigation bars.                                                      |\n| **VisitorInsights** | Access visitor statistics and analytics.                                     |\n\n---\n\n## 🧪 Automated Route Testing  \n\n- **180+ routes** are automatically discovered and tested.\n- **1900+ routes** are simuled to test each route with each authorization.\n- For routes with parameters (`@`), the **JsonGetParameters** column must exist in the test database.  \n- For **POST** routes, the **JsonPostParameters** column must be filled.  \n- **Authentication** can be simulated via the **JsonConnectedUser** column.  \n- Results can be validated with **Query** and **QueryExpectedResponse**.  \n- Each test row must define **ExpectedResponseCode**.  \n\n---\n\n## 👁️ Examples\n\n👉 **MyClub web application**  \n[Presentation of the web app, with articles and videos](https://myclub.alwaysdata.net/)  \n\n👉 **Nordic Walking club website**  \n[BNW – Burgundy Nordic Walking](https://bnw-dijon.fr/)\n\n👉 **Static website (artist portfolio)**  \n[Paintings by an artist 😉](https://peinturesbribri.alwaysdata.net/navbar/show/article/3)\n\n👉 **Static website**  \n[About the Sinclair ZX Spectrum](https://jeblog.alwaysdata.net/spectrum_FR.html)\n\n👉 **Personal blog**  \n[Personal blog written and maintained by me](https://jeblog.alwaysdata.net/)\n\n👉 **Test environment**  \n[Test MyClub instance](https://testmyclub.alwaysdata.net/)\n\n---\n\n## 👁️ Manuals and tutorials (in French)\n\n👉 [You are](https://myclub.alwaysdata.net/navbar/show/article/10)\n\n👉 [MyClub Dictionary](https://myclub.alwaysdata.net/navbar/show/article/47)\n\n👉 [Short videos](https://myclub.alwaysdata.net/navbar/show/article/28)\n\n---\n\n# WebApp Summary - Multi-Role Management System\n\n## Overview\nThis 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.\n\n## Administrator Roles\n\n### 🗓️ Event Manager\n- **Weekly Calendar**: Overview of the next 3 week's events\n- **Upcoming Events**: Planning and tracking of future events  \n- **Invitation System**: Sending personalized invitations\n- **Email Management**: Communication with participants\n- **Pivot Table**: Statistical analysis of events\n\n### 🎨 Designer\nInterface divided into sub-specialties:\n- **Event Designer**: Designing event types and managing requirements\n- **Home Designer**: Configuring general settings and managing designs\n- **Kanban Designer**: Creation Kanban projects\n- **Navbar Designer**: Customizing the navigation bar\n\n### ✍️ Redactor (Editor)\n- **Article Management**: Creating, editing, and publishing content\n- **Media Library**: Organizing and managing media files\n- **Content Analytics**: Top 50 most viewed articles\n- **Analytical Dashboard**: Cross-analysis of content\n\n### 🧑‍🤝‍🧑 Person Manager\n- **Member Management**: Member administration\n- **Group management**: User group administration\n- **Registration management**: Managing users registrations\n- **Import members**: From CSV files\n\n### 🔍 Visitor Insights (Observer)\n- **Traffic Analysis**: Referrer sites and visitor sources\n- **Page Performance**: Page rankings by period\n- **Advanced Analytics**: Pivot tables for data analysis\n- **Visitor Monitoring**: Logs and traffic statistics\n- **Real-time Tracking**: Latest visits and user behavior\n\n### 🛠️ Webmaster\n- **Technical Administration**: Database browser\n- **Group management**: User group administration\n- **Registration management**: Managing users registrations\n- **Maintenance**: Set/unset website under maintenance mode\n\n## End User Interface\n\n### Personal Space\n- 🧑‍💼 **Account**: Personal profile management\n- 🕒 **Availability**: Schedule and available time slots\n- 🔐 **Groups**: Membership in various groups\n- ⭐ **Preferences**: Customized settings\n- 📊 **Statistics**: Personal dashboard\n\n### Community Features\n- 🧑‍🤝‍🧑 **Directory**: Member directory\n- 📰 **News**: Personalized news feed\n- 🗒️ **Notepad**: Personal note-taking space\n\n## Authentication System\n- **Custom Avatar**: Emoji display or Gravatar image\n- **Conditional Admin Access**: Admin zone access button if authorized\n- **Secure Logout**: Logout system\n- **Contextual Help**: Integrated support\n\n---\n\n# 🚀 Getting Started\n\n\u003e This quick guide will take you from a freshly downloaded archive to a running and secured instance.\n\n## 1) Download the latest release\n- Get the last relase [here](https://github.com/jebissey/MyClub/releases).  \n\n## 2) Upload to your hosting\n- Unpack the archive **locally** and then **upload** *WebSite* files to your hosting.\n\n## 3) Log in with the administrator account and change email/password\n- Open your site’s URL and log 🫥 in using the **initial administrator account** { admin account = webmaster ＠ myclub ․ foo ( admin1234 ) }.\n- Go to **your avatar \u003e Account** 🤔🧑‍💼:\n  - Immediately change your **name** and **email address**.\n  - **Sign out** and use **forgotten password** to create your password.\n\n## 4) Create groups with authorizations\n- Navigate to **Administration zone \u003e Webmaster**:\n  1. **Create groups** with their **authorizations** 🧑‍🤝‍🧑.\n  2. **Assign authorizations** to user(s) 🎟️.\n\n### Initial account \u0026 Webmaster group (fresh installs)\nOn a fresh installation the application creates **one initial user account** and **one group** named **Webmaster**.  \n- The initial administrator account **cannot be deleted** and is the **only member** of the `Webmaster` group by default.  \n- The `Webmaster` group holds the highest level of access but not enable to do everything directly.\n\n**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.\n\n## 5) Fill in the settings [HomeDesigner]\n- Go to **Administration zone \u003e Designer** 🎨🔧\n\n- Configure the **general settings** of the application (title, description, logo, etc.).\n\n## 6) Create event types and requirements [EventDesigner]\n- Go to **Administration zone \u003e Designer** 🎨🗓️/📋\n- **Create event types** (walks, meetings, trainings, etc.).\n- Define **requirements and constraints** for each type (duration, participants, equipment, etc.).\n\n## 7) Create navigation bars [NavbarDesigner]\n- Go to **Administration zone \u003e NavbarDesigner** 🎨📑\n- **Design and customize navigation bars** for different user roles.\n\n## 8) Create self-registration and authorizationless groups [PersonManager]\n- Go to **Administration zone \u003e PersonManager** 👥\n- **Create groups without authorizations**, marked as self-registrable.\n- Add users to these groups.\n\n## 9) Write articles [Redactor]\n- Go to **Administration zone \u003e Redactor** ✍️\n- **Write and manage articles** (drafts, editing, formatting).\n- **Review and publish articles** to make them visible to groups or users but not the public.\n\n## 10) Publish public articles [Editor]\n- Go to **Articles list \u003e Editor** 📢\n- **Review and publish articles** to make them visible to groups, users or the public.\n\n---\n\n# 💾 Data \u0026 Backup  \n\nAll the site content is stored in a **SQLite database**:  \n- Main data: `WebSite/data/MyClub.sqlite`  \n- Logs: `WebSite/data/LogMyClub.sqlite`  \n\nA **GFS backup** is created every time an article is saved, stored under:  \n`WebSite/backup/\u003cyears\u003e/\u003cmonths\u003e/\u003cweekdays\u003e/`  \n\n\u003e As the IT saying goes: *“Any data stored on a single medium is doomed to disappear.”*  \nIt is essential to **regularly copy `MyClub.sqlite` to another physical storage** to ensure data safety.\n\n---\n\n# ❓ FAQ\n\n## If you encounter this error…\n\n### “Error: could not find driver”\n- **Causes**:\n  - PDO driver not installed/activated.\n- **Fix**:\n  - Add/Enable `extension=pdo_sqlite`.\n\n### Internal error: Class ”IntlDateFormatter\" not found\n- **Causes**:\n  - intl extension not installed/activated.\n- **Fix**:\n  - Add/Enable `extension=intl`.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjebissey%2Fmyclub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjebissey%2Fmyclub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjebissey%2Fmyclub/lists"}