diff --git a/project/assets/styles/app.css b/project/assets/styles/app.css
index 0ddf87e..fb3acd8 100644
--- a/project/assets/styles/app.css
+++ b/project/assets/styles/app.css
@@ -253,8 +253,11 @@ a { color: inherit; text-decoration: none; }
.projects-grid {
display: grid;
- grid-template-columns: repeat(auto-fill, minmax(330px, 1fr));
- gap: 22px;
+ grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
+ gap: 18px;
+}
+@media (min-width: 900px) {
+ .projects-grid { grid-template-columns: repeat(3, 1fr); }
}
.project {
display: flex;
@@ -269,11 +272,13 @@ a { color: inherit; text-decoration: none; }
.project-thumb {
aspect-ratio: 16 / 9;
width: 100%;
- object-fit: cover;
+ height: auto;
+ object-fit: contain;
+ background: #0d1a2b;
display: block;
border-bottom: 1px solid var(--line);
}
-.project-body { padding: 22px; display: flex; flex-direction: column; flex: 1; }
+.project-body { padding: 18px; display: flex; flex-direction: column; flex: 1; }
.project-meta {
display: flex;
gap: 12px;
@@ -285,16 +290,17 @@ a { color: inherit; text-decoration: none; }
.project-name {
font-family: var(--display);
font-weight: 600;
- font-size: 1.35rem;
+ font-size: 1.2rem;
letter-spacing: -0.015em;
margin: 0 0 10px;
}
-.project-desc { color: var(--muted); font-size: 0.98rem; margin: 0 0 18px; }
+.project-desc { color: var(--muted); font-size: 0.92rem; margin: 0 0 16px; }
.project-stack { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 20px; }
.project-stack .chip { font-size: 0.74rem; padding: 4px 9px; }
.project-actions {
display: flex;
- gap: 10px;
+ flex-wrap: wrap;
+ gap: 8px;
margin-top: auto;
padding-top: 4px;
}
@@ -303,8 +309,8 @@ a { color: inherit; text-decoration: none; }
align-items: center;
gap: 7px;
font-family: var(--mono);
- font-size: 0.82rem;
- padding: 9px 14px;
+ font-size: 0.78rem;
+ padding: 8px 12px;
border-radius: 9px;
border: 1px solid var(--line-strong);
transition: border-color 0.16s, background 0.16s, color 0.16s;
diff --git a/project/public/images/projects/crm-symfony.svg b/project/public/images/projects/crm-symfony.svg
new file mode 100644
index 0000000..1a1e77e
--- /dev/null
+++ b/project/public/images/projects/crm-symfony.svg
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CRM
+
+
+
+
+
+
+ CRM · Symfony + Twig
+
diff --git a/project/src/Portfolio/PortfolioContent.php b/project/src/Portfolio/PortfolioContent.php
index c8af0ce..57cc1f2 100644
--- a/project/src/Portfolio/PortfolioContent.php
+++ b/project/src/Portfolio/PortfolioContent.php
@@ -125,14 +125,27 @@ final class PortfolioContent
'name' => 'CRM',
'year' => '2025',
'role' => 'Autor',
- 'description' => 'System CRM dla kancelarii syndyka usprawnia zarządzanie sprawozdaniami z wykonania układu, porządkując terminy oraz dane dotyczące poszczególnych postępowań. Automatyczne przypomnienia i kontrola statusów ograniczają ryzyko opóźnień oraz ułatwiają przygotowanie kompletnych raportów dla sądu i wierzycieli.
+ 'description' => 'System CRM dla kancelarii syndyka, napisany w całości w Symfony - widoki renderowane po stronie serwera w Twigu, bez osobnego frontendu i warstwy API. Prostsze wdrożenie i utrzymanie przy zachowaniu pełnej funkcjonalności: sprawozdania z wykonania układu, terminy, statusy postępowań i przypomnienia.
+ Dane logowania:
+ Nazwa użytkownika: demo
+ Haslo: LRJXG1Vl1yTO ',
+ 'stack' => ['Symfony', 'Twig', 'Doctrine', 'MySQL', 'Docker'],
+ 'thumbnail' => 'images/projects/crm-symfony.svg',
+ 'github' => 'https://git.rhost.ovh/ryjek/sprawozdania',
+ 'live' => 'https://crm-full.rhost.ovh/',
+ ],
+ [
+ 'name' => 'CRM (beta)',
+ 'year' => '2026',
+ 'role' => 'Autor',
+ 'description' => 'Wersja beta systemu CRM dla kancelarii syndyka, zbudowana w architekturze rozdzielonej: backend w Symfony udostępnia REST API, a interfejs to aplikacja SPA w React. System porządkuje sprawozdania z wykonania układu, terminy oraz dane poszczególnych postępowań, a automatyczne przypomnienia i kontrola statusów ograniczają ryzyko opóźnień przy raportach dla sądu i wierzycieli.
Dane logowania:
Nazwa użytkownika: demo
Haslo: LRJXG1Vl1yTO ',
'stack' => ['Symfony', 'React', 'REST Api', 'MySQL', 'Docker'],
'thumbnail' => 'images/projects/crm.svg',
'github' => 'https://git.rhost.ovh/ryjek/sprawozdania',
- 'githubfront' => 'https://git.rhost.ovh/ryjek/sprawozdania-frontend',
+ 'githubfront' => 'https://git.rhost.ovh/ryjek/sprawozdania/src/branch/masterApi/',
'live' => 'https://crm.rhost.ovh/',
],
// [