PHPackages                             ogan/skeleton - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. ogan/skeleton

ActiveProject[Framework](/categories/framework)

ogan/skeleton
=============

Ogan Skeleton - Projet de démarrage pour Ogan Framework

v2.2.0(6mo ago)34MITPHPPHP &gt;=8.1

Since Dec 20Pushed 4mo agoCompare

[ Source](https://github.com/sylvain-schmitt/ogan-framework)[ Packagist](https://packagist.org/packages/ogan/skeleton)[ RSS](/packages/ogan-skeleton/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (2)Versions (14)Used By (0)

🐕 Ogan Framework
================

[](#-ogan-framework)

> *En mémoire d'Ogan 🐕💙 - Un framework PHP moderne créé avec passion pour apprendre et comprendre*

[![PHP Version](https://camo.githubusercontent.com/187240af044d09d5b14a1d9d9ebdf3f7a993e4c7bc09bdb46b4ba661a891bf5b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e322532422d626c7565)](https://www.php.net/)[![License](https://camo.githubusercontent.com/784362b26e4b3546254f1893e778ba64616e362bd6ac791991d2c9e880a3a64e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d677265656e2e737667)](LICENSE)

🎯 Qu'est-ce que Ogan Framework ?
--------------------------------

[](#-quest-ce-que-ogan-framework-)

Ogan est un **framework PHP pédagogique** moderne qui démontre les meilleures pratiques de développement web. Inspiré par Symfony et Laravel, il offre une architecture MVC complète avec des fonctionnalités avancées tout en restant simple à comprendre.

### ✨ Points Forts

[](#-points-forts)

- 🏗️ **Architecture MVC** propre et moderne
- 🛣️ **Router avancé** avec attributs PHP 8+ et contraintes automatiques
- 📝 **Moteur de templates** avec compilation (`.ogan`)
- 🎨 **Tailwind CSS v4** intégré avec CLI standalone
- 📦 **Système de formulaires** complet avec 11 types de champs
- 🔐 **Sécurité** : CSRF, sessions, password hashing
- 🗄️ **ORM maison** avec QueryBuilder, relations et **Soft Delete**
- 🔄 **Migrations** de base de données
- 🎯 **Dependency Injection** avec autowiring
- 🔧 **Console CLI** avec générateurs de code
- 🔌 **API REST** : ApiController, sérialisation, `make:api`
- 📢 **Event Dispatcher** : événements kernel personnalisables
- 📝 **Logging** : PSR-3, channels, rotation automatique
- 🌱 **Seeders** : peuplement de base de données

📁 Structure du Projet
---------------------

[](#-structure-du-projet)

```
ogan-framework/
├── ogan/              # 🔧 Code du framework (réutilisable)
│   ├── Config/
│   ├── Console/
│   ├── Controller/
│   ├── Database/
│   ├── DependencyInjection/
│   ├── Form/
│   ├── Http/
│   ├── Router/
│   ├── Security/
│   ├── Session/
│   ├── View/
│   └── ...
├── src/               # 🎨 Code de l'application (exemple)
│   ├── Controller/
│   ├── Form/
│   └── Model/
├── templates/         # 📄 Vues (.ogan)
│   ├── layouts/
│   ├── components/
│   └── ...
├── public/            # 🌐 Point d'entrée web
│   └── index.php
├── config/            # ⚙️ Configuration
│   ├── parameters.yaml
│   └── middlewares.yaml
├── bin/               # 🔧 Console CLI
│   └── console
└── docs/              # 📚 Documentation complète

```

🚀 Installation
--------------

[](#-installation)

### Prérequis

[](#prérequis)

- PHP 8.2 ou supérieur
- Composer
- Extension PDO (SQLite, MySQL ou PostgreSQL)

### Installation via Composer (recommandé)

[](#installation-via-composer-recommandé)

```
composer create-project ogan/framework mon-projet
cd mon-projet
```

### Installation manuelle

[](#installation-manuelle)

```
git clone https://github.com/votre-username/ogan-framework.git
cd ogan-framework
composer install
```

### Configuration

[](#configuration)

```
# Copier le fichier d'environnement
cp .env.example .env

# Éditer .env selon vos besoins
nano .env
```

### Initialiser Tailwind CSS

[](#initialiser-tailwind-css)

```
# Initialiser Tailwind (télécharge le CLI standalone)
php bin/console tailwind:init

# Compiler les CSS
php bin/console tailwind:build

# Ou en mode watch pour le développement
php bin/console tailwind:build --watch
```

### Lancer le serveur

[](#lancer-le-serveur)

```
php -S localhost:8000 -t public
```

Ouvrir  dans votre navigateur.

🎓 Guide de Démarrage
--------------------

[](#-guide-de-démarrage)

### 1. Créer un Contrôleur

[](#1-créer-un-contrôleur)

```
namespace App\Controller;

use Ogan\Controller\AbstractController;
use Ogan\Router\Attributes\Route;

class BlogController extends AbstractController
{
    #[Route(path: '/blog', methods: ['GET'], name: 'blog_index')]
    public function index()
    {
        return $this->render('blog/index.ogan', [
            'title' => 'Mon Blog'
        ]);
    }

    #[Route(path: '/blog/{slug}', methods: ['GET'], name: 'blog_show')]
    public function show(string $slug)
    {
        return $this->render('blog/show.ogan', [
            'slug' => $slug
        ]);
    }
}
```

### 2. Créer une Vue (Template .ogan)

[](#2-créer-une-vue-template-ogan)

```
{# templates/blog/index.ogan #}
{{ extend('layouts/base') }}

{{ start('body') }}

    {{ title }}

    {% for article in articles %}

            {{ article.title }}
            {{ article.content }}

    {% endfor %}

{{ end }}
```

### 3. Créer un Formulaire

[](#3-créer-un-formulaire)

```
namespace App\Form;

use Ogan\Form\AbstractType;
use Ogan\Form\Types\TextType;
use Ogan\Form\Types\EmailType;
use Ogan\Form\Types\SubmitType;

class ContactFormType extends AbstractType
{
    public function buildForm(): void
    {
        $this->add('name', TextType::class, [
            'label' => 'Nom',
            'required' => true
        ]);

        $this->add('email', EmailType::class, [
            'label' => 'Email',
            'required' => true
        ]);

        $this->add('submit', SubmitType::class, [
            'label' => 'Envoyer'
        ]);
    }
}
```

Utilisation dans le template :

```
{% formStart(form) %}
    {% formRow(form.name) %}
    {% formRow(form.email) %}
    Envoyer
{% formEnd(form) %}
```

� Console CLI
-------------

[](#-console-cli)

Le framework inclut une console puissante pour générer du code :

### Commandes Disponibles

[](#commandes-disponibles)

```
# Afficher toutes les commandes
php bin/console

# Générer un contrôleur CRUD complet
php bin/console make:controller User

# Générer un formulaire
php bin/console make:form User

# Générer un modèle
php bin/console make:model Post

# Générer tout (modèle + form + contrôleur)
php bin/console make:all Article

# Migrations
php bin/console migrate              # Exécuter les migrations
php bin/console migrate:make User    # Créer une migration
php bin/console migrate:status       # Voir le statut
php bin/console migrate:rollback     # Annuler la dernière

# Tailwind CSS
php bin/console tailwind:init        # Initialiser Tailwind
php bin/console tailwind:build       # Compiler les CSS
php bin/console tailwind:build --watch  # Mode watch

# Utilitaires
php bin/console cache:clear          # Vider le cache
php bin/console routes:list          # Lister les routes
```

� Système de Templates
----------------------

[](#-système-de-templates)

### Syntaxe .ogan

[](#syntaxe-ogan)

Le framework utilise une syntaxe de template moderne et intuitive :

**Variables** : `{{ variable }}`

```
{{ title }}
{{ user.name }}
```

**Structures de contrôle** : `{% if/for %}`

```
{% if user %}
    Bonjour {{ user.name }}
{% endif %}

{% for item in items %}
    {{ item }}
{% endfor %}
```

**Helpers de formulaires** : `{% formStart() %}`

```
{% formStart(form) %}
    {% formRow(form.email) %}
    {% formRow(form.password) %}
{% formEnd(form) %}
```

**Rendu complet** : `{% form.render() %}`

```
{% form.render() %}
```

🛠️ Fonctionnalités Complètes
----------------------------

[](#️-fonctionnalités-complètes)

### ✅ Core Framework

[](#-core-framework)

- ✅ Routing avec attributs PHP 8+ et contraintes automatiques
- ✅ Container DI avec autowiring
- ✅ Moteur de templates avec compilation (`.ogan`)
- ✅ Request / Response HTTP enrichis
- ✅ Autoloader PSR-4 (compatible Composer)

### ✅ Router Avancé

[](#-router-avancé)

- ✅ Contraintes automatiques (`{id}` → numérique, `{slug}` → URL-friendly)
- ✅ Paramètres optionnels (`{query?}`)
- ✅ Middlewares par route et par groupe
- ✅ Groupes de routes avec préfixes
- ✅ Support des sous-domaines
- ✅ Génération d'URLs nommées

### ✅ Système de Formulaires

[](#-système-de-formulaires)

- ✅ 11 types de champs (Text, Email, Password, Number, Date, Textarea, Select, Checkbox, Radio, File, Submit)
- ✅ Validation côté serveur et HTML5
- ✅ Helpers de rendu flexibles
- ✅ Support des fichiers uploadés
- ✅ Protection CSRF intégrée

### ✅ Sécurité

[](#-sécurité)

- ✅ Protection CSRF
- ✅ Password hashing (bcrypt)
- ✅ Sessions sécurisées
- ✅ Validation des données
- ✅ Échappement HTML automatique

### ✅ ORM &amp; Base de Données

[](#-orm--base-de-données)

- ✅ Query Builder fluide
- ✅ Active Record Pattern
- ✅ Repository Pattern
- ✅ Relations (OneToOne, OneToMany, ManyToOne, ManyToMany)
- ✅ Migrations
- ✅ Support SQLite, MySQL, PostgreSQL

### ✅ Tailwind CSS

[](#-tailwind-css)

- ✅ CLI standalone (pas de Node.js requis)
- ✅ Compilation automatique
- ✅ Mode watch pour le développement
- ✅ Configuration via `assets/css/app.css`

### ✅ Console CLI

[](#-console-cli-1)

- ✅ Générateurs de code (controller, form, model)
- ✅ Gestion des migrations
- ✅ Compilation Tailwind
- ✅ Utilitaires (cache, routes)

📚 Documentation
---------------

[](#-documentation)

Documentation complète disponible dans le dossier [`docs/`](docs/) :

- **[Guide Pédagogique](docs/guides/pedagogique.md)** - Guide complet pour comprendre le framework
- **[Installation](docs/guides/installation.md)** - Guide d'installation détaillé
- **[Syntaxe des Templates](docs/guides/templates.md)** - Documentation de la syntaxe `.ogan`
- **[Formulaires](docs/guides/forms.md)** - Guide complet des formulaires
- **[Génération de Code](docs/guides/code-generation.md)** - Utilisation des générateurs
- **[Migrations](docs/guides/migrations.md)** - Système de migrations
- **[ORM &amp; Relations](docs/guides/orm.md)** - Utilisation de l'ORM
- **[API du Framework](docs/reference/framework-api.md)** - Documentation de l'API

🐳 Docker (Optionnel)
--------------------

[](#-docker-optionnel)

Démarrez rapidement avec Docker :

```
docker-compose up -d
```

**Services inclus :**

- MySQL 8.0 → Port 3306
- phpMyAdmin →
- MailHog →

Voir le [Guide Docker](docs/guides/docker.md) pour plus de détails.

🎯 Objectif
----------

[](#-objectif)

Créer un framework PHP pédagogique qui :

- Démontre les meilleures pratiques modernes
- Reste simple à comprendre
- Peut être publié sur Packagist
- Sert de base d'apprentissage

🤝 Contribution
--------------

[](#-contribution)

Les contributions sont les bienvenues ! N'hésitez pas à :

- Signaler des bugs
- Proposer des améliorations
- Soumettre des pull requests

📝 Licence
---------

[](#-licence)

MIT - Libre d'utilisation pour apprendre et enseigner.

🙏 Remerciements
---------------

[](#-remerciements)

Ce framework a été créé avec passion pour honorer la mémoire d'Ogan 🐕💙 et pour aider les développeurs à comprendre les concepts fondamentaux des frameworks PHP modernes.

---

**Créé avec ❤️ pour apprendre et partager** 🚀

###  Health Score

36

—

LowBetter than 79% of packages

Maintenance71

Regular maintenance activity

Popularity7

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity51

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

13

Last Release

194d ago

Major Versions

v1.0.1 → v2.0.02025-12-20

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/69637905?v=4)[sylvain-schmitt](/maintainers/sylvain-schmitt)[@sylvain-schmitt](https://github.com/sylvain-schmitt)

---

Top Contributors

[![sylvain-schmitt](https://avatars.githubusercontent.com/u/69637905?v=4)](https://github.com/sylvain-schmitt "sylvain-schmitt (70 commits)")

---

Tags

phpframeworkmvcSkeletonstarter

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/ogan-skeleton/health.svg)

```
[![Health](https://phpackages.com/badges/ogan-skeleton/health.svg)](https://phpackages.com/packages/ogan-skeleton)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
