|
1 | 1 | <!DOCTYPE html> |
2 | 2 | <html lang="en"> |
3 | 3 | <head> |
4 | | - <meta charset="UTF-8" /> |
5 | | - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
6 | | - <title>SpringBootLibrary — Documentation Portal</title> |
| 4 | + <meta charset="UTF-8"/> |
| 5 | + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> |
| 6 | + <title>SprintBootLibrarySphinx — Documentation Portal</title> |
7 | 7 | <style> |
8 | | - :root { |
9 | | - --brand: #2980b9; |
10 | | - --dark: #1a252f; |
11 | | - --light-bg:#f4f7f9; |
12 | | - --card-bg: #ffffff; |
13 | | - --border: #d0dce8; |
14 | | - --text: #2c3e50; |
15 | | - --muted: #6c7a89; |
16 | | - --green: #27ae60; |
17 | | - --orange: #e67e22; |
18 | | - --purple: #8e44ad; |
19 | | - --teal: #16a085; |
20 | | - } |
21 | | - * { box-sizing: border-box; margin: 0; padding: 0; } |
22 | | - body { |
23 | | - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; |
24 | | - background: var(--light-bg); |
25 | | - color: var(--text); |
26 | | - } |
27 | | - |
28 | | - /* ── Header ── */ |
29 | | - header { |
30 | | - background: var(--dark); |
31 | | - color: #fff; |
32 | | - padding: 2.5rem 2rem 2rem; |
33 | | - text-align: center; |
34 | | - } |
35 | | - header h1 { font-size: 2.2rem; font-weight: 700; letter-spacing: -0.5px; } |
36 | | - header p { margin-top: .6rem; color: #a8c0d6; font-size: 1.05rem; } |
37 | | - .badge { |
38 | | - display: inline-block; |
39 | | - margin-top: 1rem; |
40 | | - padding: .3rem .8rem; |
41 | | - border-radius: 20px; |
42 | | - font-size: .8rem; |
43 | | - font-weight: 600; |
44 | | - background: var(--brand); |
45 | | - color: #fff; |
46 | | - letter-spacing: .5px; |
47 | | - } |
48 | | - |
49 | | - /* ── Grid ── */ |
50 | | - main { |
51 | | - max-width: 1100px; |
52 | | - margin: 2.5rem auto; |
53 | | - padding: 0 1.5rem 4rem; |
54 | | - } |
55 | | - .section-title { |
56 | | - font-size: 1rem; |
57 | | - font-weight: 700; |
58 | | - text-transform: uppercase; |
59 | | - letter-spacing: 1px; |
60 | | - color: var(--muted); |
61 | | - margin: 2.5rem 0 1rem; |
62 | | - border-bottom: 2px solid var(--border); |
63 | | - padding-bottom: .4rem; |
64 | | - } |
65 | | - .grid { |
66 | | - display: grid; |
67 | | - grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); |
68 | | - gap: 1.2rem; |
69 | | - } |
70 | | - |
71 | | - /* ── Cards ── */ |
72 | | - .card { |
73 | | - background: var(--card-bg); |
74 | | - border: 1px solid var(--border); |
75 | | - border-radius: 10px; |
76 | | - padding: 1.4rem 1.5rem; |
77 | | - text-decoration: none; |
78 | | - color: inherit; |
79 | | - display: flex; |
80 | | - flex-direction: column; |
81 | | - gap: .5rem; |
82 | | - transition: transform .15s, box-shadow .15s, border-color .15s; |
83 | | - } |
84 | | - .card:hover { |
85 | | - transform: translateY(-3px); |
86 | | - box-shadow: 0 6px 20px rgba(0,0,0,.1); |
87 | | - border-color: var(--brand); |
88 | | - } |
89 | | - .card-icon { |
90 | | - font-size: 1.8rem; |
91 | | - line-height: 1; |
92 | | - } |
93 | | - .card-title { |
94 | | - font-weight: 700; |
95 | | - font-size: 1.05rem; |
96 | | - } |
97 | | - .card-desc { |
98 | | - font-size: .88rem; |
99 | | - color: var(--muted); |
100 | | - line-height: 1.5; |
101 | | - } |
102 | | - .card-tag { |
103 | | - display: inline-block; |
104 | | - font-size: .72rem; |
105 | | - font-weight: 600; |
106 | | - padding: .15rem .55rem; |
107 | | - border-radius: 12px; |
108 | | - color: #fff; |
109 | | - align-self: flex-start; |
110 | | - margin-top: .3rem; |
111 | | - } |
112 | | - |
113 | | - /* Tag colours */ |
114 | | - .tag-sphinx { background: var(--brand); } |
115 | | - .tag-java { background: var(--orange); } |
116 | | - .tag-test { background: var(--green); } |
117 | | - .tag-quality { background: var(--purple); } |
118 | | - .tag-perf { background: var(--teal); } |
119 | | - .tag-doxygen { background: #c0392b; } |
120 | | - |
121 | | - footer { |
122 | | - text-align: center; |
123 | | - padding: 2rem; |
124 | | - font-size: .82rem; |
125 | | - color: var(--muted); |
126 | | - border-top: 1px solid var(--border); |
127 | | - } |
| 8 | + :root{--brand:#2980b9;--dark:#1a252f;--light-bg:#f4f7f9;--card-bg:#fff; |
| 9 | + --border:#d0dce8;--text:#2c3e50;--muted:#6c7a89; |
| 10 | + --green:#27ae60;--orange:#e67e22;--purple:#8e44ad;--teal:#16a085;} |
| 11 | + *{box-sizing:border-box;margin:0;padding:0;} |
| 12 | + body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif; |
| 13 | + background:var(--light-bg);color:var(--text);} |
| 14 | + header{background:var(--dark);color:#fff;padding:2.5rem 2rem 2rem;text-align:center;} |
| 15 | + header h1{font-size:2.2rem;font-weight:700;} |
| 16 | + header p{margin-top:.6rem;color:#a8c0d6;font-size:1.05rem;} |
| 17 | + .badge{display:inline-block;margin-top:1rem;padding:.3rem .8rem;border-radius:20px; |
| 18 | + font-size:.8rem;font-weight:600;background:var(--brand);color:#fff;} |
| 19 | + main{max-width:1100px;margin:2.5rem auto;padding:0 1.5rem 4rem;} |
| 20 | + .section-title{font-size:1rem;font-weight:700;text-transform:uppercase;letter-spacing:1px; |
| 21 | + color:var(--muted);margin:2.5rem 0 1rem; |
| 22 | + border-bottom:2px solid var(--border);padding-bottom:.4rem;} |
| 23 | + .grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.2rem;} |
| 24 | + .card{background:var(--card-bg);border:1px solid var(--border);border-radius:10px; |
| 25 | + padding:1.4rem 1.5rem;text-decoration:none;color:inherit; |
| 26 | + display:flex;flex-direction:column;gap:.5rem; |
| 27 | + transition:transform .15s,box-shadow .15s,border-color .15s;} |
| 28 | + .card:hover{transform:translateY(-3px);box-shadow:0 6px 20px rgba(0,0,0,.1); |
| 29 | + border-color:var(--brand);} |
| 30 | + .card-icon{font-size:1.8rem;line-height:1;} |
| 31 | + .card-title{font-weight:700;font-size:1.05rem;} |
| 32 | + .card-desc{font-size:.88rem;color:var(--muted);line-height:1.5;} |
| 33 | + .card-tag{display:inline-block;font-size:.72rem;font-weight:600;padding:.15rem .55rem; |
| 34 | + border-radius:12px;color:#fff;align-self:flex-start;margin-top:.3rem;} |
| 35 | + .tag-sphinx{background:var(--brand);} |
| 36 | + .tag-java{background:var(--orange);} |
| 37 | + .tag-test{background:var(--green);} |
| 38 | + .tag-quality{background:var(--purple);} |
| 39 | + .tag-perf{background:var(--teal);} |
| 40 | + .tag-doxygen{background:#c0392b;} |
| 41 | + footer{text-align:center;padding:2rem;font-size:.82rem; |
| 42 | + color:var(--muted);border-top:1px solid var(--border);} |
128 | 43 | </style> |
129 | 44 | </head> |
130 | 45 | <body> |
131 | | - |
132 | 46 | <header> |
133 | | - <h1>📚 SpringBootLibrary</h1> |
134 | | - <p>Documentation Portal — SPQ subject exemplary project</p> |
135 | | - <span class="badge">Spring Boot 3.4 · Java 17 · CI/CD with GitHub Actions</span> |
| 47 | + <h1>📚 SprintBootLibrarySphinx</h1> |
| 48 | + <p>Documentation Portal — SPQ subject exemplary project</p> |
| 49 | + <span class="badge">Spring Boot 3.4 · Java 17 · CI/CD with GitHub Actions</span> |
136 | 50 | </header> |
137 | | - |
138 | 51 | <main> |
139 | | - |
140 | | - <!-- ── Sphinx Portal ── --> |
141 | | - <p class="section-title">📖 Documentation Portal (Sphinx)</p> |
| 52 | + <p class="section-title">📖 Sphinx Documentation Portal</p> |
142 | 53 | <div class="grid"> |
143 | | - |
144 | 54 | <a class="card" href="sphinx/index.html"> |
145 | | - <span class="card-icon">🏠</span> |
146 | | - <span class="card-title">Sphinx Documentation Hub</span> |
| 55 | + <span class="card-icon">🏠</span> |
| 56 | + <span class="card-title">Sphinx Hub</span> |
147 | 57 | <span class="card-desc">Full project portal: architecture, API reference, testing strategy, CI/CD guide, and Sphinx 101.</span> |
148 | 58 | <span class="card-tag tag-sphinx">Sphinx</span> |
149 | 59 | </a> |
150 | | - |
| 60 | + <a class="card" href="sphinx/SprintBootLibrarySphinx.pdf"> |
| 61 | + <span class="card-icon">📄</span> |
| 62 | + <span class="card-title">Documentation PDF</span> |
| 63 | + <span class="card-desc">Full Sphinx documentation as a single PDF for offline reading.</span> |
| 64 | + <span class="card-tag tag-sphinx">PDF</span> |
| 65 | + </a> |
151 | 66 | <a class="card" href="sphinx/sphinx_101.html"> |
152 | | - <span class="card-icon">📘</span> |
| 67 | + <span class="card-icon">📘</span> |
153 | 68 | <span class="card-title">Sphinx 101</span> |
154 | | - <span class="card-desc">What Sphinx is, what it's useful for, how to use it, and how to integrate it with GitHub Actions.</span> |
155 | | - <span class="card-tag tag-sphinx">Sphinx Guide</span> |
| 69 | + <span class="card-desc">What Sphinx is, how to use it, and how to integrate it with GitHub Actions.</span> |
| 70 | + <span class="card-tag tag-sphinx">Guide</span> |
156 | 71 | </a> |
157 | | - |
158 | 72 | <a class="card" href="sphinx/architecture.html"> |
159 | | - <span class="card-icon">🏗️</span> |
160 | | - <span class="card-title">Architecture Overview</span> |
161 | | - <span class="card-desc">MVC pattern, package structure, database design, and key architectural decisions.</span> |
| 73 | + <span class="card-icon">🏗️</span> |
| 74 | + <span class="card-title">Architecture</span> |
| 75 | + <span class="card-desc">MVC pattern, package structure, and key architectural decisions.</span> |
162 | 76 | <span class="card-tag tag-sphinx">Sphinx</span> |
163 | 77 | </a> |
164 | | - |
165 | 78 | <a class="card" href="sphinx/cicd.html"> |
166 | | - <span class="card-icon">🚀</span> |
| 79 | + <span class="card-icon">🚀</span> |
167 | 80 | <span class="card-title">CI/CD Guide</span> |
168 | | - <span class="card-desc">GitHub Actions workflows explained: Maven site, Sphinx deployment, and GitHub Pages setup.</span> |
| 81 | + <span class="card-desc">GitHub Actions workflows explained in full detail.</span> |
169 | 82 | <span class="card-tag tag-sphinx">Sphinx</span> |
170 | 83 | </a> |
171 | | - |
172 | 84 | </div> |
173 | | - |
174 | | - <!-- ── Java API Reference ── --> |
175 | | - <p class="section-title">🔌 Java API Reference</p> |
| 85 | + <p class="section-title">🔌 Java API Reference</p> |
176 | 86 | <div class="grid"> |
177 | | - |
178 | 87 | <a class="card" href="site/apidocs/index.html"> |
179 | | - <span class="card-icon">☕</span> |
| 88 | + <span class="card-icon">☕</span> |
180 | 89 | <span class="card-title">Javadoc</span> |
181 | | - <span class="card-desc">Standard Java API reference for all public classes, methods, and fields. Generated by maven-javadoc-plugin.</span> |
| 90 | + <span class="card-desc">Standard Java API reference for all public classes, methods, and fields.</span> |
182 | 91 | <span class="card-tag tag-java">Javadoc</span> |
183 | 92 | </a> |
184 | | - |
185 | 93 | <a class="card" href="doxygen/html/index.html"> |
186 | | - <span class="card-icon">🔬</span> |
187 | | - <span class="card-title">Doxygen Reference</span> |
188 | | - <span class="card-desc">Cross-referenced HTML with call graphs and class hierarchies. Includes richly documented classes: BorrowingController, BookService, Borrowing.</span> |
| 94 | + <span class="card-icon">🔬</span> |
| 95 | + <span class="card-title">Doxygen</span> |
| 96 | + <span class="card-desc">Cross-referenced HTML with call graphs and class hierarchies.</span> |
189 | 97 | <span class="card-tag tag-doxygen">Doxygen</span> |
190 | 98 | </a> |
191 | | - |
192 | 99 | </div> |
193 | | - |
194 | | - <!-- ── Test Reports ── --> |
195 | | - <p class="section-title">🧪 Test Reports</p> |
| 100 | + <p class="section-title">🧪 Test Reports</p> |
196 | 101 | <div class="grid"> |
197 | | - |
198 | 102 | <a class="card" href="site/jacoco/index.html"> |
199 | | - <span class="card-icon">📊</span> |
| 103 | + <span class="card-icon">📊</span> |
200 | 104 | <span class="card-title">JaCoCo Coverage</span> |
201 | | - <span class="card-desc">Line, branch, and method coverage report. Minimum threshold enforced: 25 % line coverage.</span> |
| 105 | + <span class="card-desc">Line, branch, and method coverage. Minimum threshold: 25% line coverage.</span> |
202 | 106 | <span class="card-tag tag-test">JaCoCo</span> |
203 | 107 | </a> |
204 | | - |
205 | | - <a class="card" href="site/surefire-report.html"> |
206 | | - <span class="card-icon">✅</span> |
207 | | - <span class="card-title">Surefire — Unit Tests</span> |
208 | | - <span class="card-desc">Pass / fail / skipped results for every JUnit 5 unit test case, with execution times.</span> |
| 108 | + <a class="card" href="site/surefire.html"> |
| 109 | + <span class="card-icon">✅</span> |
| 110 | + <span class="card-title">Surefire — Unit Tests</span> |
| 111 | + <span class="card-desc">Pass / fail / skipped for every JUnit 5 test case with execution times.</span> |
209 | 112 | <span class="card-tag tag-test">Surefire</span> |
210 | 113 | </a> |
211 | | - |
212 | 114 | <a class="card" href="site/reports/perf-report.html"> |
213 | | - <span class="card-icon">⚡</span> |
| 115 | + <span class="card-icon">⚡</span> |
214 | 116 | <span class="card-title">Performance Tests</span> |
215 | | - <span class="card-desc">JUnitPerf throughput and latency results. Generated with the `performance` Maven profile.</span> |
| 117 | + <span class="card-desc">JUnitPerf throughput and latency results (performance Maven profile).</span> |
216 | 118 | <span class="card-tag tag-perf">JUnitPerf</span> |
217 | 119 | </a> |
218 | | - |
219 | 120 | </div> |
220 | | - |
221 | | - <!-- ── Code Quality ── --> |
222 | | - <p class="section-title">🔍 Code Quality Reports</p> |
| 121 | + <p class="section-title">🔍 Code Quality</p> |
223 | 122 | <div class="grid"> |
224 | | - |
225 | 123 | <a class="card" href="site/checkstyle.html"> |
226 | | - <span class="card-icon">📏</span> |
| 124 | + <span class="card-icon">📏</span> |
227 | 125 | <span class="card-title">Checkstyle</span> |
228 | | - <span class="card-desc">Code style conformance report. Validates formatting, naming conventions, and structural rules.</span> |
| 126 | + <span class="card-desc">Code style conformance: formatting, naming, structural rules.</span> |
229 | 127 | <span class="card-tag tag-quality">Checkstyle</span> |
230 | 128 | </a> |
231 | | - |
232 | 129 | <a class="card" href="site/pmd.html"> |
233 | | - <span class="card-icon">🐛</span> |
234 | | - <span class="card-title">PMD — Static Analysis</span> |
235 | | - <span class="card-desc">Detects unused variables, empty catch blocks, overly complex methods, and other code smells.</span> |
| 130 | + <span class="card-icon">🐛</span> |
| 131 | + <span class="card-title">PMD</span> |
| 132 | + <span class="card-desc">Unused variables, empty catch blocks, overly complex methods.</span> |
236 | 133 | <span class="card-tag tag-quality">PMD</span> |
237 | 134 | </a> |
238 | | - |
239 | 135 | <a class="card" href="site/cpd.html"> |
240 | | - <span class="card-icon">📋</span> |
241 | | - <span class="card-title">CPD — Copy-Paste Detector</span> |
242 | | - <span class="card-desc">Identifies duplicated code blocks across the entire codebase.</span> |
243 | | - <span class="card-tag tag-quality">PMD/CPD</span> |
| 136 | + <span class="card-icon">📋</span> |
| 137 | + <span class="card-title">CPD — Copy-Paste Detector</span> |
| 138 | + <span class="card-desc">Identifies duplicated code blocks across the codebase.</span> |
| 139 | + <span class="card-tag tag-quality">CPD</span> |
244 | 140 | </a> |
245 | | - |
246 | 141 | <a class="card" href="site/jdepend-report.html"> |
247 | | - <span class="card-icon">📐</span> |
248 | | - <span class="card-title">JDepend — Package Metrics</span> |
249 | | - <span class="card-desc">Coupling, cohesion, and instability metrics at the package level. Useful for spotting architectural drift.</span> |
| 142 | + <span class="card-icon">📐</span> |
| 143 | + <span class="card-title">JDepend</span> |
| 144 | + <span class="card-desc">Coupling, cohesion, and instability metrics at the package level.</span> |
250 | 145 | <span class="card-tag tag-quality">JDepend</span> |
251 | 146 | </a> |
252 | | - |
253 | 147 | </div> |
254 | | - |
255 | | - <!-- ── Full Maven Site ── --> |
256 | | - <p class="section-title">🗂️ Full Maven Site</p> |
| 148 | + <p class="section-title">🗂️ Full Maven Site</p> |
257 | 149 | <div class="grid"> |
258 | | - |
259 | 150 | <a class="card" href="site/index.html"> |
260 | | - <span class="card-icon">📑</span> |
261 | | - <span class="card-title">Maven Site (complete)</span> |
262 | | - <span class="card-desc">Complete Maven-generated site with all plugins, project info, dependency reports, and more.</span> |
| 151 | + <span class="card-icon">📑</span> |
| 152 | + <span class="card-title">Maven Site</span> |
| 153 | + <span class="card-desc">Complete Maven-generated site with all plugins, project info, and dependency reports.</span> |
263 | 154 | <span class="card-tag tag-java">Maven</span> |
264 | 155 | </a> |
265 | | - |
266 | 156 | </div> |
267 | | - |
268 | 157 | </main> |
269 | | - |
270 | 158 | <footer> |
271 | | - SpringBootLibrary · SPQ subject · Generated by GitHub Actions · |
272 | | - <a href="https://github.com/dipina/SpringBootLibrary" style="color:var(--brand)">GitHub Repository</a> |
| 159 | + SprintBootLibrarySphinx · SPQ subject · Generated by GitHub Actions · |
| 160 | + <a href="https://github.com/dipina/SprintBootLibrarySphinx" style="color:var(--brand)">GitHub Repository</a> |
273 | 161 | </footer> |
274 | | - |
275 | 162 | </body> |
276 | 163 | </html> |
0 commit comments