PHPackages                             lmendes/symfony-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. [Templating &amp; Views](/categories/templating)
4. /
5. lmendes/symfony-skeleton

ActiveProject[Templating &amp; Views](/categories/templating)

lmendes/symfony-skeleton
========================

A production-ready Symfony skeleton with Docker, CI/CD, and best practices

1.0.0(1mo ago)02↓100%MITPHPPHP &gt;=8.2

Since Apr 13Pushed 1mo agoCompare

[ Source](https://github.com/Leo-76/symfony-skeleton-template)[ Packagist](https://packagist.org/packages/lmendes/symfony-skeleton)[ RSS](/packages/lmendes-symfony-skeleton/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (1)Dependencies (35)Versions (2)Used By (0)

Symfony Skeleton
================

[](#symfony-skeleton)

[![CI](https://github.com/your-vendor/symfony-skeleton/actions/workflows/ci.yml/badge.svg)](https://github.com/your-vendor/symfony-skeleton/actions/workflows/ci.yml)[![PHP](https://camo.githubusercontent.com/9051b6544f57608ca691a918b38ad8c567657e0ecb6d4e960be274f287d171d8/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e322532422d3838393242462e737667)](https://php.net)[![Symfony](https://camo.githubusercontent.com/bea806957e3ca72e332c8a6897a729376fd4f1d63aa5b81ea4bec376e3b9fa76/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f53796d666f6e792d372e322d3030303030302e7376673f6c6f676f3d73796d666f6e79)](https://symfony.com)[![License: MIT](https://camo.githubusercontent.com/fdf2982b9f5d7489dcf44570e714e3a15fce6253e0cc6b5aa61a075aac2ff71b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d79656c6c6f772e737667)](LICENSE)[![Packagist](https://camo.githubusercontent.com/cbded33ae1ec9ae4ecb404ccf823a9c5d8bbc917ffc1e2db684bee90dd51fb49/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f796f75722d76656e646f722f73796d666f6e792d736b656c65746f6e)](https://packagist.org/packages/your-vendor/symfony-skeleton)

A **production-ready** Symfony 7.2 skeleton — Docker, full auth, admin panel, async messaging, and best practices baked in. Ready to publish on Packagist.

---

What's Included
---------------

[](#whats-included)

### Infrastructure

[](#infrastructure)

- PHP-FPM 8.2, multi-stage Dockerfile (base / dev / prod)
- Nginx with security headers + static asset caching
- PostgreSQL 16 with healthcheck
- Redis 7 for cache + Messenger transport
- Mailpit for local SMTP (auto-configured in dev)
- Xdebug pre-configured (off by default)

### Authentication

[](#authentication)

- Login / logout (CSRF-protected)
- User registration (terms checkbox + NotCompromisedPassword)
- Remember me (1 week)
- Forgot password → email link → reset form → new password
- `lastLoginAt` tracking via LoginSuccessListener
- `UserVoter` for per-resource USER\_VIEW / USER\_EDIT authorization

### Architecture Patterns

[](#architecture-patterns)

- UUID v7 primary keys (`Entity/Trait/HasUuid`)
- Timestamp lifecycle callbacks (`Entity/Trait/HasTimestamps`)
- Generic Doctrine paginator (`Pagination/DoctrinePaginator` + `PaginatedResult`)
- Abstract repository with `save()`, `remove()`, `paginate()`
- Abstract API controller with `success()`, `validationError()`, `notFound()`
- Custom base controller with `requireUser()`, `addSuccess()`, `getPage()`
- Custom Twig extension: `truncate`, `human_filesize`, `initials`, `is_current_route`
- Custom form theme for clean error/label/help rendering

### Messaging

[](#messaging)

- Async transport via PostgreSQL LISTEN/NOTIFY (with pg\_notify trigger in migration)
- Retry strategy (3 attempts, exponential backoff)
- Failed transport for dead-letter queue
- `SendWelcomeEmail` message + handler as example

### Emails

[](#emails)

- `MailerService`: `sendWelcome()`, `sendPasswordReset()`, `sendEmailVerification()`
- Responsive HTML email templates with base layout

### Admin Panel (`/admin`)

[](#admin-panel-admin)

- Searchable, paginated user list
- User detail page with last login
- Toggle admin role (CSRF-protected)
- Delete user (CSRF-protected, self-deletion prevented)

### API (`/api`)

[](#api-api)

- `GET /api/me` — authenticated user as JSON
- `GET /health` — structured health check

### Console Commands

[](#console-commands)

CommandDescription`app:install`First-run wizard`app:user:create`Create user from CLI`app:user:promote`Add/remove role`app:messenger:purge-failed`Purge old failed messages### Code Quality

[](#code-quality)

- PHPStan level 8
- PHP-CS-Fixer with Symfony + PHP 8.2 rules
- PHPUnit 11 — 3 suites: Unit / Integration / Controller
- Symfony YAML, Twig, PHP syntax linters

### CI/CD

[](#cicd)

- `ci.yml`: lint → PHPStan → test matrix (8.2 + 8.3) → security audit → Docker build
- `release.yml`: auto GitHub Release + changelog on git tag
- `dependency-review.yml`: blocks high-severity new deps on PR
- Dependabot for weekly Composer + Actions updates

---

Quick Start
-----------

[](#quick-start)

```
composer create-project your-vendor/symfony-skeleton my-project
cd my-project
```

Or manually:

```
git clone https://github.com/your-vendor/symfony-skeleton.git my-project
cd my-project
composer install
```

---

Docker
------

[](#docker)

```
cp .env .env.local
make build && make up

# First-run wizard (DB + migrations + admin user):
make shell
php bin/console app:install
exit

# Or step-by-step:
make db-create && make db-migrate && make db-fixtures
```

ServiceURLAppMailpit---

🛠 Without Docker
----------------

[](#-without-docker)

Requirements: PHP 8.2+, PostgreSQL 16, Redis 7, Composer 2

```
composer install
cp .env .env.local   # set DATABASE_URL, MESSENGER_TRANSPORT_DSN
php bin/console app:install
symfony serve
```

---

Tests &amp; Quality
-------------------

[](#tests--quality)

```
make test            # all suites
make test-coverage   # HTML report → var/coverage/
make lint            # YAML + Twig + PHP
make cs-fix          # auto-fix code style
make analyse         # PHPStan level 8
make security        # composer audit
```

---

Fixture Users
-------------

[](#fixture-users)

EmailPasswordRoleadmin123ROLE\_ADMINuser123ROLE\_USER> Never load fixtures in production.

---

Production
----------

[](#production)

```
docker build -f docker/php/Dockerfile --target prod -t my-app:latest .
```

Required env vars: `APP_SECRET`, `DATABASE_URL`, `MESSENGER_TRANSPORT_DSN`, `MAILER_DSN`, `APP_NAME`, `APP_TIMEZONE`.

---

🤝 Contributing · Security · License
-----------------------------------

[](#-contributing---security---license)

See [CONTRIBUTING.md](CONTRIBUTING.md), [SECURITY.md](SECURITY.md), [LICENSE](LICENSE).

###  Health Score

38

—

LowBetter than 83% of packages

Maintenance89

Actively maintained with recent releases

Popularity3

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity46

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

Unknown

Total

1

Last Release

57d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/e5b8976e374fe398e250b83dde310685d3df348f7b992298812beab9b00d5f5c?d=identicon)[Leo-76](/maintainers/Leo-76)

---

Top Contributors

[![Leo-76](https://avatars.githubusercontent.com/u/209856038?v=4)](https://github.com/Leo-76 "Leo-76 (4 commits)")

---

Tags

symfonytemplateSkeletonstarter

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

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

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

###  Alternatives

[forumify/forumify-platform

132.0k12](/packages/forumify-forumify-platform)[kimai/kimai

Kimai - Time Tracking

4.7k8.7k1](/packages/kimai-kimai)[easycorp/easyadmin-bundle

Admin generator for Symfony applications

4.3k17.5M370](/packages/easycorp-easyadmin-bundle)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.4M195](/packages/sulu-sulu)[rcsofttech/audit-trail-bundle

Enterprise-grade, high-performance Symfony audit trail bundle. Automatically track Doctrine entity changes with split-phase architecture, multiple transports (HTTP, Queue, Doctrine), and sensitive data masking.

1155.2k](/packages/rcsofttech-audit-trail-bundle)[open-dxp/opendxp

Content &amp; Product Management Framework (CMS/PIM)

9017.2k55](/packages/open-dxp-opendxp)

PHPackages © 2026

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