URL Shortener est une application qui permet de raccourcir des URLs longues en des liens courts et facilement partageables. Le projet utilise Symfony comme framework PHP et adopte une architecture DDD (Domain-Driven Design) pour une structure claire et évolutive. La solution est également Dockerisée pour faciliter le déploiement.
Raccourcir des URLs longues. Rediriger automatiquement vers l'URL d'origine via un lien court. Lister et gérer les redirections existantes.
- PHP 8.2+
- Symfony 6.x
- Doctrine ORM
- Docker & Docker Compose
- SQLite (base de données légère)
- Symfony Messenger (pour le CQRS avec des handlers de commandes)
Le projet suit les principes Domain-Driven Design (DDD) et CQRS. Voici la structure principale :
Copier le code
src/
├── Application/ # Cas d'utilisation et logique applicative
├── Domain/ # Logique métier (entités, value objects, services de domaine)
├── Infrastructure/ # Repositories, services techniques, implémentations Doctrine
├── Controller/ # Points d'entrée (HTTP)
└── ...
-
Prérequis Assurez-vous d'avoir les outils suivants installés :
- Docker
- Docker Compose
-
Cloner le projet
git clone [email protected]:darkiron/url-shortener-ddd.git cd url-shortener
-
Lancer le projet avec Docker
docker-compose up --build
-
Accéder au projet Frontend : http://localhost:80
La base de données SQLite est stockée dans var/app.db.
Méthode | URL | Description |
---|---|---|
GET | /api/all |
Liste toutes les redirections en json. |
GET | /{linkId} |
Redirige vers l'URL raccourcie. |
GET | /all |
iste toutes les redirections . |
Pour exécuter les tests (unitaires ou fonctionnels), lancez la commande suivante :
docker-compose exec php bin/phpunit
Les contributions sont les bienvenues ! Voici comment participer :
- Forker le projet.
- Créer une branche pour votre fonctionnalité (
git checkout -b feat/ma-fonctionnalite
). - Committez vos changements (
git commit -m "feat: ajout de la fonctionnalité X"
). - Poussez vos modifications (
git push origin feature/ma-fonctionnalite
). - Ouvrez une Pull Request 🎉.
Ce projet est sous licence Creative Commons.
Consultez le fichier LICENSE pour plus d'informations.
Développé à la base par Pierre Miniggio. Mise à jour Darkiron