init project

This commit is contained in:
maher
2025-10-27 13:12:25 +01:00
commit d034a3e43e
257 changed files with 86878 additions and 0 deletions

View File

@@ -0,0 +1,67 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<title>{% block title %}{% endblock %}</title>
{% block metadata %}
<meta charset="utf-8">
<meta name="language" CONTENT="fr" />
<meta charset="utf-8" />
<meta content="width=device-width, initial-scale=1.0" name="viewport">
<meta name="description" content="Gagner du temps et d'argent avec logiciel de gestion commerciale gratuit automatisée vos achats, ventes, stock et caisse">
<meta name="keywords" content="achat, fournisseur, bon réception, facture, réglement, vente, commende bon livraison, facture, devis client, stock, bon d'entrée, bon de sortie, état du stock, produit, article, caisee, frais, chèque, traite">
{% endblock %}
<script src="{{ asset('assets/js/jquery-3.7.1.min.js') }}"></script>
{% block stylesheets %}
<!-- Favicons -->
<link href="{{ asset('assets/img/logo.ico') }}" rel="icon">
<link href="{{ asset('assets/img/logo.ico') }}" rel="apple-touch-icon">
<!-- Fonts -->
<link href="https://fonts.googleapis.com" rel="preconnect">
<link href="https://fonts.gstatic.com" rel="preconnect" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&family=Inter:wght@100;200;300;400;500;600;700;800;900&family=Nunito:ital,wght@0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap" rel="stylesheet">
<!-- Vendor CSS Files -->
<link href="{{ asset('assets/vendor/bootstrap/css/bootstrap.min.css') }}" rel="stylesheet">
<link href="{{ asset('assets/vendor/bootstrap-icons/bootstrap-icons.css') }}" rel="stylesheet">
<link href="{{ asset('assets/vendor/aos/aos.css') }}" rel="stylesheet">
<link href="{{ asset('assets/vendor/glightbox/css/glightbox.min.css') }}" rel="stylesheet">
<link href="{{ asset('assets/vendor/swiper/swiper-bundle.min.css') }}" rel="stylesheet">
<!-- Main CSS File -->
<link href="{{ asset('assets/css/main.css') }}" rel="stylesheet">
{% endblock %}
</head>
{% include 'frontend/basic/menu.html.twig' %}
{% block body %}
{% endblock %}
{% include 'frontend/basic/footer.html.twig' %}
<!-- Scroll Top -->
<a href="#" id="scroll-top" class="scroll-top d-flex align-items-center justify-content-center"><i class="bi bi-arrow-up-short"></i></a>
{% block javascripts %}
<!-- Vendor JS Files -->
<script src="{{ asset('assets/vendor/bootstrap/js/bootstrap.bundle.min.js') }}"></script>
<script src="{{ asset('assets/vendor/php-email-form/validate.js') }}"></script>
<script src="{{ asset('assets/vendor/aos/aos.js') }}"></script>
<script src="{{ asset('assets/vendor/glightbox/js/glightbox.min.js') }}"></script>
<script src="{{ asset('assets/vendor/swiper/swiper-bundle.min.js') }}"></script>
<script src="{{ asset('assets/vendor/purecounter/purecounter_vanilla.js') }}"></script>
<!-- Main JS File -->
<script src="{{ asset('assets/js/main.js') }}"></script>
{% endblock %}
</html>

View File

@@ -0,0 +1,58 @@
<footer id="footer" class="footer">
<div class="container footer-top mb-1">
<div class="row gy-4">
<div class="col-lg-4 col-md-6 footer-about">
<a href="http://powerpme.local:84/#hero" class="logo d-flex align-items-center">
<span class="sitename">PowerPME</span>
</a>
<div class="social-links d-flex mt-4">
<a href="https://www.facebook.com/profile.php?id=61575366993120&notif_id=1745143968707526&notif_t=fan_profile_v2&ref=notif"><i class="bi bi-facebook"></i></a>
<a href="https://www.instagram.com/powerpme/"><i class="bi bi-instagram"></i></a>
<a href="https://www.linkedin.com/company/powerpme/about/"><i class="bi bi-linkedin"></i></a>
</div>
</div>
<div class="col-lg-2 col-md-3 footer-links">
<h4>Adresse</h4>
<ul>
<li><a href="#">2 rue elmouez</a></li>
<li><a href="#">Mornaguia 1110 Tunis</a></li>
</ul>
</div>
<div class="col-lg-2 col-md-3 offset-1 footer-links">
<h4>Téléphone</h4>
<ul>
<li><a href="#">(+216) 52 719 341</a></li>
<li><a href="#">(+33) 06 05 68 60 69</a></li>
</ul>
</div>
<div class="col-lg-2 col-md-3 offset-1 footer-links">
<h4>Email</h4>
<ul>
<li><a href="#">info@powerpme.com</a></li>
<li><a href="#">contact@powerpme.com</a></li>
</ul>
</div>
</div>
</div>
{#
<div class="container copyright text-center mt-4">
<p>© <span>Copyright</span> <strong class="px-1 sitename">iLanding</strong> <span>All Rights Reserved</span></p>
<div class="credits">
<!-- All the links in the footer should remain intact. -->
<!-- You can delete the links only if you've purchased the pro version. -->
<!-- Licensing information: https://bootstrapmade.com/license/ -->
<!-- Purchase the pro version with working PHP/AJAX contact form: [buy-url] -->
Designed by <a href="https://bootstrapmade.com/">BootstrapMade</a> Distributed By <a href="https://themewagon.com">ThemeWagon</a>
</div>
</div>
#}
</footer>

View File

@@ -0,0 +1,32 @@
<header id="header" class="header d-flex align-items-center fixed-top">
<div class="header-container container-fluid container-xl position-relative d-flex align-items-center justify-content-between">
<a href="{{ path('home_index') }}#hero" class="logo d-flex align-items-center me-auto me-xl-0">
<!-- Uncomment the line below if you also wish to use an image logo -->
<img src="{{ asset('assets/img/logo2.png') }}" alt="">
</a>
<nav id="navmenu" class="navmenu">
<ul>
<li><a href="{{ path('home_index') }}#about">À Propos</a></li>
<li><a href="{{ path('home_index') }}#features">Nos fonctionnalités</a></li>
<li><a href="{{ path('home_index') }}#testimonials">Témoignages</a></li>
<li><a href="{{ path('home_index') }}#pricing">Téléchargement</a></li>
<li><a href="{{ path('home_index') }}#contact">Contact</a></li>
</ul>
<i class="mobile-nav-toggle d-xl-none bi bi-list"></i>
</nav>
{% if is_granted('ROLE_ADMIN') %}
<a class="btn-getgreen" href="{{ path('admin_home_index') }}">Espace Admin</a>
{% elseif is_granted('ROLE_PARTNER') %}
<a class="btn-getgreen" href="{{ path('partner_home_downloader') }}">Espace Partnaire</a>
{% endif %}
{% if app.user %}
<a class="btn-getdark" href="{{ path('security_logout') }}">Déconnexion</a>
{% else %}
<a class="btn-getgreen" href="{{ path('security_login') }}">Connexion</a>
{% endif %}
</div>
</header>

View File

@@ -0,0 +1,181 @@
{% extends 'frontend/basic/base.html.twig' %}
{% block title %}Version Démo{% endblock %}
{% block body %}
<!-- Login 9 - Bootstrap Brain Component -->
<section class="light-background py-3 py-md-5 py-xl-8">
<br>
<div class="container">
<br>
<div class="container my-5">
<div class="card shadow-lg border-0 rounded-4">
<div class="row g-0">
<div class="col-md-3 d-flex align-items-center justify-content-center bg-white">
<img src="{{ asset('/images/pages/alert_windows.webp') }}" alt="Logo Windows" class="img-fluid" >
</div>
<div class="col-md-9">
<div class="card-body p-5">
<h3 class="card-title mb-4">🔒 Information importante concernant le message d'alerte</h3>
<p class="card-text fs-5">
Lorsque vous exécutez notre logiciel, Windows peut afficher un message dalerte indiquant que
<strong>"léditeur nest pas vérifié"</strong> ou que <strong>"le logiciel nest pas certifié"</strong>.
</p>
<p class="card-text fs-5">
<strong>Ce message ne signifie pas que le logiciel contient un virus.</strong> Il s'agit simplement
dune mesure de précaution de Windows pour les logiciels qui nont pas encore été certifiés via leur processus de signature.
</p>
<p class="card-text fs-5">
✅ Notre logiciel est sûr, testé et exempt de tout virus ou programme malveillant.
</p>
<p class="card-text fs-5">
Pour poursuivre linstallation, cliquez sur <strong>"Informations complémentaires"</strong>, puis
<strong>"Exécuter quand même"</strong>.
</p>
</div>
</div>
</div>
</div>
<br><br>
<h4>Vous pouvez modifier les paramétres par défaut du logiciel en ce connecter par votre E-mail</h4>
<br>
{% set formErrors = form.vars.errors.form.getErrors(true) %}
{% if formErrors|length %}
<div class="alert alert-danger">
<ul>
{% for key,error in formErrors %}
<li><strong>{{ error.message }}</strong></li>
{% endfor %}
</ul>
</div>
{% endif %}
{% for message in app.flashes('notice') %}
<div class="alert alert-info" role="alert">
{{ message }}
</div>
{% endfor %}
{{ form_start(form) }}
<div class="accordion" id="accordionExample">
<div class="accordion-item">
<h2 class="accordion-header" id="headingOne">
<button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
les paramétres de votre Société
</button>
</h2>
<div id="collapseOne" class="accordion-collapse collapse show" aria-labelledby="headingOne" data-bs-parent="#accordionExample">
<div class="accordion-body">
<div class="row gy-3 overflow-hidden">
<div class="col-4">
{{ form_label(form.companyName) }}
{{ form_widget(form.companyName, {'attr': {'class': 'form-control' }}) }}
</div>
<div class="col-4">
{{ form_label(form.companyPlace) }}
{{ form_widget(form.companyPlace, {'attr': {'class': 'form-control' }}) }}
</div>
<div class="col-4">
{{ form_label(form.CompanyAddress) }}
{{ form_widget(form.CompanyAddress, {'attr': {'class': 'form-control' }}) }}
</div>
<div class="col-4">
{{ form_label(form.companySIREN) }}
{{ form_widget(form.companySIREN, {'attr': {'class': 'form-control' }}) }}
</div>
<div class="col-4">
{{ form_label(form.companyMF) }}
{{ form_widget(form.companyMF, {'attr': {'class': 'form-control' }}) }}
</div>
<div class="col-4">
{{ form_label(form.companyIF) }}
{{ form_widget(form.companyIF, {'attr': {'class': 'form-control' }}) }}
</div>
<div class="col-3">
{{ form_label(form.companyTele) }}
{{ form_widget(form.companyTele, {'attr': {'class': 'form-control' }}) }}
</div>
<div class="col-3">
{{ form_label(form.companyFax) }}
{{ form_widget(form.companyFax, {'attr': {'class': 'form-control' }}) }}
</div>
<div class="col-3">
{{ form_label(form.companyMail) }}
{{ form_widget(form.companyMail, {'attr': {'class': 'form-control' }}) }}
</div>
<div class="col-3">
{{ form_label(form.companySite) }}
{{ form_widget(form.companySite, {'attr': {'class': 'form-control' }}) }}
</div>
<div class="col-3">
{{ form_label(form.timbre) }}
{{ form_widget(form.timbre, {'attr': {'class': 'form-control' }}) }}
</div>
</div>
<br>
</div>
</div>
</div>
<div class="accordion-item">
<h2 class="accordion-header" id="headingTwo">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
les paramétres de Devis
</button>
</h2>
<div id="collapseTwo" class="accordion-collapse collapse" aria-labelledby="headingTwo" data-bs-parent="#accordionExample">
<div class="accordion-body">
<div class="row gy-3 overflow-hidden">
<div class="col-4">
{{ form_label(form.currencySign) }}
{{ form_widget(form.currencySign, {'attr': {'class': 'form-control' }}) }}
</div>
<div class="col-4">
{{ form_label(form.currencyName) }}
{{ form_widget(form.currencyName, {'attr': {'class': 'form-control' }}) }}
</div>
<div class="col-4">
{{ form_label(form.currencyThousandth) }}
{{ form_widget(form.currencyThousandth, {'attr': {'class': 'form-control' }}) }}
</div>
<div class="col-4">
{{ form_label(form.bankName) }}
{{ form_widget(form.bankName, {'attr': {'class': 'form-control' }}) }}
</div>
<div class="col-4">
{{ form_label(form.bankRIP) }}
{{ form_widget(form.bankRIP, {'attr': {'class': 'form-control' }}) }}
</div>
<div class="col-4">
{{ form_label(form.bankRIB) }}
{{ form_widget(form.bankRIB, {'attr': {'class': 'form-control' }}) }}
</div>
</div>
<br>
</div>
</div>
</div>
<br><br>
<center>
{{ form_widget(form.submit, {'attr': {'class': 'btn btn-success btn-lg' }}) }}
</center>
</div>
{{ form_end(form) }}
</div>
</section>
<script>
$(function(){
$.post( "{{ path('demo_save_download') }}", {}, function( data ) {
window.open("{{ asset('/download/PowerPME_demo@v1.0.0.zip') }}", "_self");
});
});
</script>
{% endblock %}

View File

@@ -0,0 +1,51 @@
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet">
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.0.3/js/bootstrap.min.js"></script>
<script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fancybox/2.1.5/jquery.fancybox.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/fancybox/2.1.5/jquery.fancybox.min.js"></script>
<style>
.image-container {
height: 200px;
overflow: hidden;
display: flex;
align-items: center;
justify-content: center;
}
.image-container img {
width: 100%;
height: 100%;
object-fit: cover;
object-position: center;
}
</style>
<div class="container">
<div class="row">
{% for file in files %}
<div class='col-sm-4 col-xs-6 col-md-3 col-lg-3'>
<div class="image-container">
<a class="thumbnail fancybox" rel="lightbox" title="{{ file }}" href="{{ asset('/images/screenshot/' ~ file) }}">
<div class='text-right'>
<small class='text-muted'>{{ file }}</small>
</div>
<img alt="{{ file }}" src="{{ asset('/images/screenshot/' ~ file) }}" />
</a>
</div>
</div>
{% endfor %}
</div>
</div>
<script>
$(document).ready(function(){
$(".fancybox").fancybox({
openEffect: "elastic",
closeEffect: "elastic",
helpers: {
title: { type: 'inside' }
},
titlePosition: "inside"
});
});
</script>

View File

@@ -0,0 +1,621 @@
{% extends 'frontend/basic/base.html.twig' %}
{% block title %}Logiciel de gestion commerciale gratuit{% endblock %}
{% block body %}
<body class="index-page">
<script src="https://www.google.com/recaptcha/api.js?render={{ GOOGLE_RECAPTCHA_SITE_KEY }}"></script>
<main class="main">
<!-- Hero Section -->
<section id="hero" class="hero section">
<div class="container" data-aos="fade-up" data-aos-delay="100">
<div class="row align-items-center">
<div class="col-lg-6">
<div class="hero-content" data-aos="fade-up" data-aos-delay="200">
<h1 class="mb-4">
Logiciel de Gestion Commerciale <span class="accent-text">Gratuit</span>
</h1>
<p class="mb-4 mb-md-5">
Pilotez votre entreprise en toute simplicité, de la prospection à la facturation, tout en suivant votre activité commerciale en temps réel. Avec PowerPME, bénéficiez dun contrôle complet et optimisé sur votre business.
</p>
<div class="hero-buttons">
<a href="{{ path('demo_download') }}" class="btn btn-primary me-0 me-sm-2 mx-1">Télécharger la version démo</a>
{#<a href="https://www.youtube.com/watch?v=Y7f98aduVJ8" class="btn btn-link mt-2 mt-sm-0 glightbox">
<i class="bi bi-play-circle me-1"></i>
Play Video
</a>#}
</div>
</div>
</div>
<div class="col-lg-6">
<div class="hero-image" data-aos="zoom-out" data-aos-delay="300">
<img src="assets/img/illustration-1.webp" alt="Hero Image" class="img-fluid">
</div>
</div>
</div>
</div>
</section><!-- /Hero Section -->
<!-- About Section -->
<section id="about" class="about section">
<div class="container" data-aos="fade-up" data-aos-delay="100">
<div class="row gy-4 align-items-center justify-content-between">
<div class="col-xl-5" data-aos="fade-up" data-aos-delay="200">
<span class="about-meta">À PROPOS</span>
<h2 class="about-title">À propos sur logiciels de gestion commerciale</h2>
<p class="about-description">
PowerPME est outil essentiel pour accélérer le développement d'une entreprise.
En optimisant les processus et en simplifiant la prise de décision, il permet de gérer efficacement l'activité commerciale, quelle que soit la taille de l'entreprise.
Mais comment bien choisir un logiciel de gestion commerciale ? Découvrez nos conseils pratiques et notre sélection des meilleurs outils pour vous accompagner dans votre choix.
</p>
<div class="info-wrapper">
<div class="row gy-4">
<div class="col-lg-6">
<div class="profile d-flex align-items-center gap-3">
<img src="assets/img/profile 2021.jpg" alt="CEO Profile" class="profile-image">
<div>
<h4 class="profile-name">Maher Ben Tili</h4>
<p class="profile-position">CEO &amp; Founder</p>
</div>
</div>
</div>
<div class="col-lg-6">
<div class="contact-info d-flex align-items-center gap-2">
<i class="bi bi-telephone-fill"></i>
<div>
<p class="contact-label">Appelez-nous</p>
<p class="contact-number">(+216) 52 719 341</p>
<p class="contact-number">(+33) 06 05 68 60 69</p>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-xl-6" data-aos="fade-up" data-aos-delay="300">
<div class="image-wrapper">
<div class="images position-relative" data-aos="zoom-out" data-aos-delay="400">
<img src="assets/img/about-5.webp" alt="Business Meeting" class="img-fluid main-image rounded-4">
<img src="assets/img/about-2.webp" alt="Team Discussion" class="img-fluid small-image rounded-4">
</div>
<div class="experience-badge floating">
<h3>5+ <span>Années</span></h3>
<p>D'expérience en service aux entreprises</p>
</div>
</div>
</div>
</div>
</div>
</section><!-- /About Section -->
<!-- Features Section -->
<section id="features" class="features section">
<!-- Section Title -->
<div class="container section-title" data-aos="fade-up">
<h2>Nos fonctionnalités</h2>
<p>
Découvrez gratuitement l'ensemble de fonctionnalités propose par PowerPME.
</p>
</div><!-- End Section Title -->
<div class="container">
<div class="d-flex justify-content-center">
<ul class="nav nav-tabs" data-aos="fade-up" data-aos-delay="100">
<li class="nav-item">
<a class="nav-link active show" data-bs-toggle="tab" data-bs-target="#features-tab-1">
<h4>Achat</h4>
</a>
</li><!-- End tab nav item -->
<li class="nav-item">
<a class="nav-link" data-bs-toggle="tab" data-bs-target="#features-tab-2">
<h4>Vente</h4>
</a><!-- End tab nav item -->
</li>
<li class="nav-item">
<a class="nav-link" data-bs-toggle="tab" data-bs-target="#features-tab-3">
<h4>Stock</h4>
</a><!-- End tab nav item -->
</li>
<li class="nav-item">
<a class="nav-link" data-bs-toggle="tab" data-bs-target="#features-tab-4">
<h4>Caisse</h4>
</a>
</li><!-- End tab nav item -->
</ul>
</div>
<div class="tab-content" data-aos="fade-up" data-aos-delay="200">
<div class="tab-pane fade active show" id="features-tab-1">
<div class="row">
<div class="col-lg-6 order-2 order-lg-1 mt-3 mt-lg-0 d-flex flex-column justify-content-center">
<h3>Gestion des Achats</h3>
<p class="fst-italic">
PowerPME intègre des fonctionnalités dédiées à la gestion des achats, conçues pour optimiser et rationaliser les processus d'approvisionnement.
</p>
<ul>
<li><i class="bi bi-check2-all"></i> <span>La gestion des fournisseurs, qui permet de centraliser les informations relatives aux partenaires, de suivre les performances et de faciliter les négociations.</span></li>
<li><i class="bi bi-check2-all"></i> <span>La gestion des bons de réception simplifie l'enregistrement et le suivi des marchandises reçues, en assurant une correspondance précise avec les commandes passées.</span></li>
<li><i class="bi bi-check2-all"></i> <span>La gestion des règlements offre un suivi précis des paiements, en synchronisant les échéances et en facilitant la gestion de la trésorerie. </span></li>
</ul>
<p class="fst-italic">
Ensemble, ces outils permettent une gestion efficace des achats, une meilleure maîtrise des coûts et une collaboration optimale avec les fournisseurs.
</p>
</div>
<div class="col-lg-6 order-1 order-lg-2 text-center">
<img src="assets/img/features-illustration-1.webp" alt="" class="img-fluid">
</div>
</div>
</div><!-- End tab content item -->
<div class="tab-pane fade" id="features-tab-2">
<div class="row">
<div class="col-lg-6 order-2 order-lg-1 mt-3 mt-lg-0 d-flex flex-column justify-content-center">
<h3>Gestion des Ventes</h3>
<p class="fst-italic">
PowerPME offre une suite complète de fonctionnalités dédiées à la gestion des ventes, permettant d'optimiser et de simplifier les processus commerciaux.
</p>
<ul>
<li><i class="bi bi-check2-all"></i> <span>La gestion des devis, qui facilite la création, la personnalisation et le suivi des propositions commerciales, assurant une transition fluide vers la commande.</span></li>
<li><i class="bi bi-check2-all"></i> <span>La gestion des factures permet de générer, envoyer et suivre les factures en temps réel, garantissant une traçabilité et une gestion financière précise.</span></li>
<li><i class="bi bi-check2-all"></i> <span>La gestion des commandes centralise et automatise le traitement des commandes clients, de la réception à la préparation, tout en assurant un suivi efficace des stocks.</span></li>
</ul>
<p class="fst-italic">
Ensemble, ces outils améliorent la productivité, réduisent les erreurs et offrent une visibilité complète sur le cycle de vente.</span></li>
</p>
</div>
<div class="col-lg-6 order-1 order-lg-2 text-center">
<img src="assets/img/features-illustration-2.webp" alt="" class="img-fluid">
</div>
</div>
</div><!-- End tab content item -->
<div class="tab-pane fade" id="features-tab-3">
<div class="row">
<div class="col-lg-6 order-2 order-lg-1 mt-3 mt-lg-0 d-flex flex-column justify-content-center">
<h3>Gestion du Stock</h3>
<p class="fst-italic">
PowerPME propose des fonctionnalités puissantes pour la gestion des stocks, permettant une maîtrise totale des flux et des niveaux de stock.
</p>
<ul>
<li><i class="bi bi-check2-all"></i> <span>Le suivi des mouvements de stock, qui enregistre en temps réel les entrées, sorties et transferts de marchandises, offrant une visibilité précise sur l'évolution des stocks. </span></li>
<li><i class="bi bi-check2-all"></i> <span>Les états de stock fournissent des rapports détaillés sur les quantités disponibles, les valeurs du stock et les tendances, facilitant la prise de décision et la planification des réapprovisionnements.</span></li>
<li><i class="bi bi-check2-all"></i> <span>La gestion des bons d'entrée permet de documenter et de valider les réceptions de marchandises, en les liant aux commandes fournisseurs ou aux retours clients.</span></li>
</ul>
<p class="fst-italic">
Ces outils garantissent une gestion optimisée des stocks, réduisent les risques de rupture ou de surstock et améliorent l'efficacité opérationnelle.
</p>
</div>
<div class="col-lg-6 order-1 order-lg-2 text-center">
<img src="assets/img/hero-img.png" alt="" class="img-fluid">
</div>
</div>
</div><!-- End tab content item -->
<div class="tab-pane fade" id="features-tab-4">
<div class="row">
<div class="col-lg-6 order-2 order-lg-1 mt-3 mt-lg-0 d-flex flex-column justify-content-center">
<h3>Gestion du Caisse</h3>
<ul>
<li><i class="bi bi-check2-all"></i> <span>PowerPME inclut des fonctionnalités dédiées à la gestion de la caisse, offrant un contrôle précis et une traçabilité complète des flux financiers.</span></li>
<li><i class="bi bi-check2-all"></i> <span>La gestion des entrées de caisse, qui permet d'enregistrer les encaissements liés aux ventes, aux règlements clients ou à d'autres sources de revenus.</span></li>
<li><i class="bi bi-check2-all"></i> <span>Les sorties de caisse facilitent l'enregistrement des dépenses, telles que les paiements fournisseurs, les retraits ou les frais opérationnels.</span></li>
<li><i class="bi bi-check2-all"></i> <span>Le module de traitement des transactions assure un suivi en temps réel des opérations, en synchronisant les données avec les comptes clients et fournisseurs.</span></li>
</ul>
<p class="fst-italic">
Ces outils offrent une visibilité complète sur la trésorerie, améliorent la gestion des liquidités et réduisent les risques d'erreurs ou de fraudes.
</p>
</div>
<div class="col-lg-6 order-1 order-lg-2 text-center">
<img src="assets/img/features-illustration-3.webp" alt="" class="img-fluid">
</div>
</div>
</div><!-- End tab content item -->
</div>
</div>
</section><!-- /Features Section -->
<!-- Clients Section -->
<section id="clients" class="clients section">
<div class="container" data-aos="fade-up" data-aos-delay="100">
<div class="swiper init-swiper">
<script type="application/json" class="swiper-config">
{
"loop": true,
"speed": 600,
"autoplay": {
"delay": 5000
},
"slidesPerView": "auto",
"pagination": {
"el": ".swiper-pagination",
"type": "bullets",
"clickable": true
},
"breakpoints": {
"320": {
"slidesPerView": 2,
"spaceBetween": 40
},
"480": {
"slidesPerView": 3,
"spaceBetween": 60
},
"640": {
"slidesPerView": 4,
"spaceBetween": 80
},
"992": {
"slidesPerView": 6,
"spaceBetween": 120
}
}
}
</script>
<div class="swiper-wrapper align-items-center">
<div class="swiper-slide"><img src="assets/img/clients/client-1.png" class="img-fluid" alt=""></div>
<div class="swiper-slide"><img src="assets/img/clients/client-2.png" class="img-fluid" alt=""></div>
<div class="swiper-slide"><img src="assets/img/clients/client-3.png" class="img-fluid" alt=""></div>
<div class="swiper-slide"><img src="assets/img/clients/client-4.png" class="img-fluid" alt=""></div>
<div class="swiper-slide"><img src="assets/img/clients/client-5.png" class="img-fluid" alt=""></div>
<div class="swiper-slide"><img src="assets/img/clients/client-6.png" class="img-fluid" alt=""></div>
<div class="swiper-slide"><img src="assets/img/clients/client-7.png" class="img-fluid" alt=""></div>
<div class="swiper-slide"><img src="assets/img/clients/client-8.png" class="img-fluid" alt=""></div>
</div>
<div class="swiper-pagination"></div>
</div>
</div>
</section><!-- /Clients Section -->
<!-- Testimonials Section -->
<section id="testimonials" class="testimonials section light-background">
<!-- Section Title -->
<div class="container section-title" data-aos="fade-up">
<h2>Témoignages</h2>
<p>Ces témoignages illustrent comment PowerPME peut répondre aux besoins variés des entreprises, en améliorant leur efficacité et leur rentabilité.</p>
</div><!-- End Section Title -->
<div class="container">
<div class="row g-5">
<div class="col-lg-6" data-aos="fade-up" data-aos-delay="100">
<div class="testimonial-item">
<img src="assets/img/testimonials/testimonials-1.jpg" class="testimonial-img" alt="">
<h3>Karim</h3>
<h4>Responsable logistique d'une entreprise de vente en gros</h4>
<div class="stars">
<i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i>
</div>
<p>
<i class="bi bi-quote quote-icon-left"></i>
<span>Depuis que nous avons adopté PowerPME, notre productivité a considérablement augmenté. La centralisation des données, la gestion automatisée des stocks et la génération rapide de devis et de factures nous ont fait gagner un temps précieux. Nous pouvons maintenant nous concentrer sur notre croissance plutôt que sur des tâches administratives répétitives.</span>
<i class="bi bi-quote quote-icon-right"></i>
</p>
</div>
</div><!-- End testimonial item -->
<div class="col-lg-6" data-aos="fade-up" data-aos-delay="200">
<div class="testimonial-item">
<img src="assets/img/testimonials/testimonials-2.jpg" class="testimonial-img" alt="">
<h3>Sarah</h3>
<h4>Gérante d'une PME de distribution</h4>
<div class="stars">
<i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i>
</div>
<p>
<i class="bi bi-quote quote-icon-left"></i>
<span>La gestion des stocks était un vrai casse-tête pour nous. Avec ce logiciel, nous avons enfin une visibilité en temps réel sur nos niveaux de stock, les mouvements et les réapprovisionnements. Les alertes automatiques nous évitent les ruptures de stock et les surstocks. Un outil indispensable pour notre activité !</span>
<i class="bi bi-quote quote-icon-right"></i>
</p>
</div>
</div><!-- End testimonial item -->
<div class="col-lg-6" data-aos="fade-up" data-aos-delay="300">
<div class="testimonial-item">
<img src="assets/img/testimonials/testimonials-3.jpg" class="testimonial-img" alt="">
<h3>Jena</h3>
<h4>Directrice financière d'une entreprise de services</h4>
<div class="stars">
<i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i>
</div>
<p>
<i class="bi bi-quote quote-icon-left"></i>
<span>Ce logiciel a révolutionné notre gestion financière. Les fonctionnalités de suivi des entrées et sorties de caisse, ainsi que la gestion des règlements, nous permettent de garder une trésorerie saine et de prendre des décisions éclairées. La génération automatique des états financiers est un vrai plus pour notre comptabilité.</span>
<i class="bi bi-quote quote-icon-right"></i>
</p>
</div>
</div><!-- End testimonial item -->
<div class="col-lg-6" data-aos="fade-up" data-aos-delay="400">
<div class="testimonial-item">
<img src="assets/img/testimonials/testimonials-4.jpg" class="testimonial-img" alt="">
<h3>Thomas</h3>
<h4>Responsable des achats dans une entreprise de production</h4>
<div class="stars">
<i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i>
</div>
<p>
<i class="bi bi-quote quote-icon-left"></i>
<span>La gestion des achats est devenue beaucoup plus simple grâce à ce logiciel. Nous pouvons suivre les commandes fournisseurs, les bons de réception et les factures en un seul endroit. Les rappels automatiques nous aident à respecter les délais de paiement et à maintenir de bonnes relations avec nos partenaires.</span>
<i class="bi bi-quote quote-icon-right"></i>
</p>
</div>
</div><!-- End testimonial item -->
</div>
</div>
</section><!-- /Testimonials Section -->
<!-- Pricing Section -->
<section id="pricing" class="pricing section light-background">
<!-- Section Title -->
<div class="container section-title" data-aos="fade-up">
<h2>Téléchargement</h2>
</div><!-- End Section Title -->
<div class="container" data-aos="fade-up" data-aos-delay="100">
<div class="row g-4 justify-content-center">
<!-- Version Demo -->
<div class="col-lg-5" data-aos="fade-up" data-aos-delay="100">
<div class="pricing-card">
<div class="price">
<span class="currency">Version Demo</span>
</div>
<p class="description">Découvrez notre logiciel en action avec cette démo gratuite, conçue pour vous offrir un aperçu complet de ses fonctionnalités et de sa simplicité d'utilisation.</p>
<h4>Les options:</h4>
<ul class="features-list">
<li>
<i class="bi bi-check-circle-fill"></i>
Base de données en memoire
</li>
<li>
<i class="bi bi-check-circle-fill"></i>
Un seul utilisateur
</li>
<li>
<i class="bi bi-check-circle-fill"></i>
Un seul Magasin
</li>
<li>
<i class="bi bi-check-circle-fill"></i>
Fonctionne sans connexion internet
</li>
<li>
<i class="bi bi-check-circle-fill"></i>
Système d'exploitation Windows
</li>
</ul>
<a href="{{ path('demo_download') }}" class="btn btn-primary">
Télécharger
<i class="bi bi-arrow-right"></i>
</a>
</div>
</div>
<!-- Version complète -->
<div class="col-lg-6 offset-1" data-aos="fade-up" data-aos-delay="200">
<div class="pricing-card popular">
<div class="price">
<span class="currency">Version complète</span>
</div>
<p class="description">Passez à la version complète de notre logiciel pour débloquer toutes les fonctionnalités avancées et optimiser votre productivité dès aujourd'hui !.</p>
<h4>Les options:</h4>
<ul class="features-list">
<li>
<i class="bi bi-check-circle-fill"></i>
Multi PC
</li>
<li>
<i class="bi bi-check-circle-fill"></i>
Multi Utilisateurs
</li>
<li>
<i class="bi bi-check-circle-fill"></i>
Plusieurs Magasin
</li>
<li>
<i class="bi bi-check-circle-fill"></i>
Base de données en Mysql
</li>
<li>
<i class="bi bi-check-circle-fill"></i>
Authentification sans connexion internet
</li>
<li>
<i class="bi bi-check-circle-fill"></i>
Système d'exploitation Windows
</li>
</ul>
<a href="#contact" class="btn btn-light">
Nos contacter
<i class="bi bi-arrow-right"></i>
</a>
</div>
</div>
</div>
</div>
</section><!-- /Pricing Section -->
<!-- Contact Section -->
<section id="contact" class="contact section light-background">
<!-- Section Title -->
<div class="container section-title" data-aos="fade-up">
<h2>Contact</h2>
<p>Besoin daide ? Une question ? Nous sommes là pour vous accompagner. Contactez-nous par e-mail ou par téléphone.</p>
</div><!-- End Section Title -->
<div class="container" data-aos="fade-up" data-aos-delay="100">
<div class="row g-4 g-lg-5">
<div class="col-lg-5">
<div class="info-box" data-aos="fade-up" data-aos-delay="200">
<h3>Contact</h3>
<p>Pour toute question ou information supplémentaire, n'hésitez pas à nous contacter à l'adresse e-mail ou numéro de téléphone suivant</p>
<div class="info-item" data-aos="fade-up" data-aos-delay="300">
<div class="icon-box">
<i class="bi bi-geo-alt"></i>
</div>
<div class="content">
<h4>Adress Postale</h4>
<p>2 rue elmouez</p>
<p>mornguia 1110 Tunis</p>
</div>
</div>
<div class="info-item" data-aos="fade-up" data-aos-delay="400">
<div class="icon-box">
<i class="bi bi-telephone"></i>
</div>
<div class="content">
<h4>Numéro de Téléphone</h4>
<p>(+216) 52 719 341</p>
<p>(+33) 06 05 68 60 69</p>
</div>
</div>
<div class="info-item" data-aos="fade-up" data-aos-delay="500">
<div class="icon-box">
<i class="bi bi-envelope"></i>
</div>
<div class="content">
<h4>Email </h4>
<p>info@powerpme.com</p>
<p>contact@powerpme.com</p>
</div>
</div>
</div>
</div>
<div class="col-lg-7">
<div class="contact-form" data-aos="fade-up" data-aos-delay="300">
<h3>Votre Message</h3>
<p>Les données obligatoires sont indiquées par un astérisque *.
Le numéro de téléphone nous permettra de vous répondre plus rapidement, notamment en cas de problème.</p>
{{ form_start(form, {'action': path('home_contact'), 'method': 'POST'}) }}
<div class="row gy-4">
<div class="col-md-6">
{{ form_widget(form.fullname, {'attr': {'class': 'form-control'}}) }}
</div>
<div class="col-md-6">
{{ form_widget(form.email, {'attr': {'class': 'form-control'}}) }}
</div>
<div class="col-12">
{{ form_widget(form.subject, {'attr': {'class': 'form-control'}}) }}
</div>
<div class="col-12">
{{ form_widget(form.message, {'attr': {'class': 'form-control'}}) }}
</div>
{{ form_widget(form.recaptcha) }}
<div class="col-12 text-center">
{% for message in app.flashes('notice-email') %}
<div class="alert alert-info" role="alert"> {{ message }} </div>
{% endfor %}
{% for message in app.flashes('erreur-email') %}
<div class="alert alert-danger" role="alert"> {{ message }} </div>
{% endfor %}
{{ form_widget(form.submit, {'attr': {'class': 'btn'}}) }}
</div>
</div>
{{ form_end(form) }}
</div>
</div>
</div>
</div>
</section><!-- /Contact Section -->
</main>
<script>
$(function(){
grecaptcha.ready(function() {
grecaptcha.execute('{{ GOOGLE_RECAPTCHA_SITE_KEY }}', {action: 'submit'}).then(function(token) {
$("#mail_recaptcha").empty().val(token);
});
});
{% if app.user is null %}
{% if geoVisitor != true %}
$.get( "https://api.ipgeolocation.io/ipgeo?apiKey=64b7e23d901d45c6a23fe077f45f82e8&output=json", function( data ) {
$.post( "{{ path('home_geolocation')}}", {api:JSON.stringify(data)}, function( reponse ) {
//console.log(reponse);
});
});
{% endif %}
{% endif %}
});
</script>
</body>
{% endblock %}

View File

@@ -0,0 +1,112 @@
{% extends 'frontend/basic/base.html.twig' %}
{% block title %}PowerPME{% endblock %}
{% block body %}
<!-- Login 9 - Bootstrap Brain Component -->
<section class="bg-primary py-3 py-md-5 py-xl-8">
<br>
<div class="container" data-aos="fade-up" data-aos-delay="100">
<div class="row gy-4 align-items-center mt-5" data-aos="zoom-out" data-aos-delay="200">
<div class="col-12 col-md-6 col-xl-7">
<div class="d-flex justify-content-center text-bg-primary">
<div class="col-12 col-xl-9">
<h3 class="h3 mb-4">Un problème ?</h3>
<hr class="border-primary-subtle mb-4">
<p class="lead mb-5">Consultez nos rubriques Aide et Foire aux Questions, ou contactez-nous par e-mail ou par téléphone.</p>
<div class="text-endx">
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" fill="currentColor" class="bi bi-grip-horizontal" viewBox="0 0 16 16">
<path d="M2 8a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm0-3a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm3 3a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm0-3a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm3 3a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm0-3a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm3 3a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm0-3a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm3 3a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm0-3a1 1 0 1 1 0 2 1 1 0 0 1 0-2z" />
</svg>
</div>
</div>
</div>
</div>
<div class="col-12 col-md-6 col-xl-5">
<div class="card border-0 rounded-4">
<div class="card-body p-3 p-md-4 p-xl-5">
<div class="row">
<div class="col-12">
<div class="mb-4">
<h3>Vos informations de Connexion</h3>
<p class="mt-4">Vous n'avez pas de compte ? <a href="{{ path('security_registration') }}">Créer un compte</a></p>
</div>
</div>
</div>
<form action="{{ path('security_login') }}" method="post">
{% if error %}
<div class="alert alert-danger">{{ error.messageKey|trans(error.messageData, 'security') }}</div>
{% endif %}
<input type="hidden" name="_csrf_token" data-controller="csrf-protection" value="{{ csrf_token('authenticate') }}">
<div class="row gy-3 overflow-hidden">
<div class="col-12">
<div class="form-floating mb-3">
<input type="email" class="form-control" name="email" id="email" placeholder="name@example.com" required>
<label for="email" class="form-label">Email</label>
</div>
</div>
<div class="col-12">
<div class="form-floating mb-3">
<input type="password" class="form-control" name="password" id="password" value="" placeholder="Password" required>
<label for="password" class="form-label">Mot de passe</label>
</div>
</div>
<div class="col-12">
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" name="remember_me" id="remember_me">
<label class="form-check-label text-secondary" for="remember_me">
Rester connecté
</label>
</div>
</div>
<div class="col-12">
<div class="d-grid">
<button class="btn btn-success btn-lg" type="submit">Se connecter</button>
</div>
</div>
</div>
</form>
<div class="row">
<div class="col-12">
<div class="d-flex gap-2 gap-md-4 flex-column flex-md-row justify-content-md-end mt-4">
<a href="#!">Mot de passe oublié ?</a>
</div>
</div>
</div>
<div class="row">
<div class="col-12">
<p class="mt-4 mb-4">Ou connecté par</p>
<div class="d-flex gap-2 gap-sm-3 justify-content-centerX">
<a href="#!" class="btn btn-outline-danger bsb-btn-circle bsb-btn-circle-2xl">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" class="bi bi-google" viewBox="0 0 16 16">
<path d="M15.545 6.558a9.42 9.42 0 0 1 .139 1.626c0 2.434-.87 4.492-2.384 5.885h.002C11.978 15.292 10.158 16 8 16A8 8 0 1 1 8 0a7.689 7.689 0 0 1 5.352 2.082l-2.284 2.284A4.347 4.347 0 0 0 8 3.166c-2.087 0-3.86 1.408-4.492 3.304a4.792 4.792 0 0 0 0 3.063h.003c.635 1.893 2.405 3.301 4.492 3.301 1.078 0 2.004-.276 2.722-.764h-.003a3.702 3.702 0 0 0 1.599-2.431H8v-3.08h7.545z" />
</svg>
</a>
<a href="#!" class="btn btn-outline-primary bsb-btn-circle bsb-btn-circle-2xl">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" class="bi bi-facebook" viewBox="0 0 16 16">
<path d="M16 8.049c0-4.446-3.582-8.05-8-8.05C3.58 0-.002 3.603-.002 8.05c0 4.017 2.926 7.347 6.75 7.951v-5.625h-2.03V8.05H6.75V6.275c0-2.017 1.195-3.131 3.022-3.131.876 0 1.791.157 1.791.157v1.98h-1.009c-.993 0-1.303.621-1.303 1.258v1.51h2.218l-.354 2.326H9.25V16c3.824-.604 6.75-3.934 6.75-7.951z" />
</svg>
</a>
<a href="#!" class="btn btn-outline-dark bsb-btn-circle bsb-btn-circle-2xl">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" class="bi bi-apple" viewBox="0 0 16 16">
<path d="M11.182.008C11.148-.03 9.923.023 8.857 1.18c-1.066 1.156-.902 2.482-.878 2.516.024.034 1.52.087 2.475-1.258.955-1.345.762-2.391.728-2.43Zm3.314 11.733c-.048-.096-2.325-1.234-2.113-3.422.212-2.189 1.675-2.789 1.698-2.854.023-.065-.597-.79-1.254-1.157a3.692 3.692 0 0 0-1.563-.434c-.108-.003-.483-.095-1.254.116-.508.139-1.653.589-1.968.607-.316.018-1.256-.522-2.267-.665-.647-.125-1.333.131-1.824.328-.49.196-1.422.754-2.074 2.237-.652 1.482-.311 3.83-.067 4.56.244.729.625 1.924 1.273 2.796.576.984 1.34 1.667 1.659 1.899.319.232 1.219.386 1.843.067.502-.308 1.408-.485 1.766-.472.357.013 1.061.154 1.782.539.571.197 1.111.115 1.652-.105.541-.221 1.324-1.059 2.238-2.758.347-.79.505-1.217.473-1.282Z" />
<path d="M11.182.008C11.148-.03 9.923.023 8.857 1.18c-1.066 1.156-.902 2.482-.878 2.516.024.034 1.52.087 2.475-1.258.955-1.345.762-2.391.728-2.43Zm3.314 11.733c-.048-.096-2.325-1.234-2.113-3.422.212-2.189 1.675-2.789 1.698-2.854.023-.065-.597-.79-1.254-1.157a3.692 3.692 0 0 0-1.563-.434c-.108-.003-.483-.095-1.254.116-.508.139-1.653.589-1.968.607-.316.018-1.256-.522-2.267-.665-.647-.125-1.333.131-1.824.328-.49.196-1.422.754-2.074 2.237-.652 1.482-.311 3.83-.067 4.56.244.729.625 1.924 1.273 2.796.576.984 1.34 1.667 1.659 1.899.319.232 1.219.386 1.843.067.502-.308 1.408-.485 1.766-.472.357.013 1.061.154 1.782.539.571.197 1.111.115 1.652-.105.541-.221 1.324-1.059 2.238-2.758.347-.79.505-1.217.473-1.282Z" />
</svg>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
{% endblock %}

View File

@@ -0,0 +1,96 @@
{% extends 'frontend/basic/base.html.twig' %}
{% block title %}PowerPME{% endblock %}
{% block body %}
<!-- Login 9 - Bootstrap Brain Component -->
<section class="light-background py-3 py-md-5 py-xl-8">
<br>
<div class="container">
<div class="row gy-4 align-items-center mt-5">
<div class="col-12">
<div class="card border-0 rounded-4">
<div class="card-body p-3 p-md-4 p-xl-5">
{{ form_start(form) }}
<div class="row gy-3 overflow-hidden">
{% set formErrors = form.vars.errors.form.getErrors(true) %}
{% if formErrors|length %}
<div class="alert alert-danger">
<ul>
{% for key,error in formErrors %}
<li><strong>{{ error.message }}</strong></li>
{% endfor %}
</ul>
</div>
{% endif %}
<div class="row mt-3">
<h4>Vos informations personnelles</h4>
<div class="col-4">
<div class="form-floating mb-3">
{{ form_widget(form.gender, {'attr': {'class': 'form-control', 'placeholder': 'gender' }}) }}
<label for="gender" class="form-label">{{ form_label(form.gender) }}</label>
</div>
</div>
<div class="col-4">
<div class="form-floating mb-3">
{{ form_widget(form.firstname, {'attr': {'class': 'form-control', 'placeholder': 'firstname' }}) }}
<label for="firstname" class="form-label">{{ form_label(form.firstname) }}</label>
</div>
</div>
<div class="col-4">
<div class="form-floating mb-3">
{{ form_widget(form.lastname, {'attr': {'class': 'form-control', 'placeholder': 'lastname' }}) }}
<label for="lastname" class="form-label">{{ form_label(form.lastname) }}</label>
</div>
</div>
<div class="col-4">
<div class="form-floating mb-3">
{{ form_widget(form.birthdate, {'attr': {'class': 'form-control', 'placeholder': 'dd/mm/yyyy' }}) }}
<label for="birthdate" class="form-label">{{ form_label(form.birthdate) }}</label>
</div>
</div>
</div>
<div class="col-12 mt-5">
<h4>Vos informations de connexion au site</h4>
<div class="form-floating mb-3">
{{ form_widget(form.email, {'attr': {'class': 'form-control', 'placeholder': 'email' }}) }}
<label for="email" class="form-label">{{ form_label(form.email) }}</label>
</div>
</div>
<div class="row">
<div class="col-6">
<div class="form-floating mb-3">
{{ form_widget(form.password.first, {'attr': {'class': 'form-control', 'placeholder': 'password' }}) }}
<label for="user_registration_password_first" class="form-label">{{ form_label(form.password.first) }}</label>
</div>
</div>
<div class="col-6">
<div class="form-floating mb-3">
{{ form_widget(form.password.second, {'attr': {'class': 'form-control', 'placeholder': 'password' }}) }}
<label for="user_registration_password_second" class="form-label">{{ form_label(form.password.second) }}</label>
</div>
</div>
</div>
<div class="col-4 offset-4">
<div class="d-grid">
<button class="btn btn-success btn-lg" type="submit">Finaliser l'inscription</button>
</div>
</div>
</div>
{{ form_widget(form._token) }}
{{ form_end(form) }}
</div>
</div>
</div>
</div>
</div>
</section>
{% endblock %}