Project: Migrate consulting.berthelemy.net from Pico CSS to Bootstrap 5
Document Version: 2.0
Date: May 8, 2026
_layouts/simple_default.html (primary template)/assets/css/simple_overrides.css<header>, <nav>, <main>, <footer>)_layouts/simple_default.html — Main template for all pages (CRITICAL)_layouts/expertise.html — Individual expertise page (breadcrumb, CTA, related expertise/articles)_layouts/lesson.html — Individual lesson page (aside sidebar, related lessons by category/level, prev/next nav)_layouts/post.html — Blog post/article page (breadcrumb, figure/figcaption, metadata, related posts)_layouts/tool.html — Toolkit item page (breadcrumb, grid layout, related tools)_layouts/resource.html — Resource page (breadcrumb, Brevo form, contact CTA)_layouts/tag.html — Article tag archive (breadcrumb, article grid, categories list)_layouts/standard.html — Standards/compliance page (breadcrumb, sidebar, strengths/limitations grid)_includes/simple_head.html — Replace Pico CSS CDN with Bootstrap_includes/simple_nav.html — Update navbar to Bootstrap Navbar_includes/simple_footer.html — Refactor footer with Bootstrap utilities_includes/menu-list.html — Update menu structure for Bootstrap Nav_includes/brevo-form.html — Apply Bootstrap form styles_includes/scripts.html — Add Bootstrap JS bundle_includes/cta.html — Refactor CTA with Bootstrap buttons/layout_includes/ribbon.html — Pico-specific, update to Bootstrap_includes/youtube.html — Add responsive wrapper for embeds_includes/curriculum.html — Update layout_includes/expertise-list.html — Convert to Bootstrap list/cards_includes/services.html — Convert to Bootstrap grid/cards_includes/websites.html — Convert to Bootstrap cardsassets/css/simple_overrides.css — Replace/consolidate with Bootstrap customizationassets/css/noscript.css — Update for Bootstrap_layouts/default.html — Old Hyperspace layout (archive or remove - low priority)_config.yml — No changes needed_data/*.yaml — Data files unchangedcollections/ — Content collections unchanged_pages/ — Content unchanged (markup only in conditionals).container, .row, .col-* (replace custom grid).form-label, .form-control, Bootstrap form styling.btn, .btn-primary, .btn-outline-*.card, .card-body for content blocks.m-*, .p-*), text (.text-center), colors (.text-primary).d-flex, .justify-content-*, .align-items-*Goal: Establish Bootstrap infrastructure and validate CDN approach
simple_head.html<!-- OLD: -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.cyan.min.css" />
<!-- NEW: -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
scripts.html<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
assets/css/bootstrap-custom.css:
bundle exec jekyll serveDeliverables:
simple_head.html with Bootstrap CSSscripts.html with Bootstrap JSassets/css/bootstrap-custom.css createdGoal: Update main layout and navigation with Bootstrap patterns
simple_default.html.container class used correctlysimple_nav.html:
.navbar, .navbar-expand-lg, .navbar-light/.navbar-dark.navbar-togglersimple_footer.html:
.container and grid if multi-columnmenu-list.html:
.nav and .nav-link classesexpertise.html — Add Bootstrap styling to breadcrumb, CTA section, related items listlesson.html — Convert aside sidebar to Bootstrap sidebar/offcanvas, style related lessons listpost.html — Update breadcrumb, figure/figcaption styling, metadata display, related articlestool.html — Convert grid layout to Bootstrap grid, style summary section, related tools listresource.html — Update breadcrumb, Brevo form styling (will be refined in Phase 3)tag.html — Convert article grid and categories grid to Bootstrap grid/cardsstandard.html — Convert aside sidebar to Bootstrap, refactor strengths/limitations gridDeliverables:
simple_default.html (foundation)menu-list.htmlGoal: Update reusable includes to use Bootstrap components
brevo-form.html:
.form-label, .form-control classes.btn for submit buttonscta.html:
.btn and button utilities (.btn-primary, .btn-outline-*)services.html:
.row and .col-md-* grid.card for service itemsexpertise-list.html:
.badge for tags/labels if neededcurriculum.html:
websites.html:
.card componentsribbon.html:
.alert or custom banner with utilitiesyoutube.html:
zoho-form.html (if active):
Deliverables:
Goal: Clean up and optimize CSS footprint
assets/css/simple_overrides.css:
bootstrap-custom.cssassets/css/noscript.css:
assets/css/
├── bootstrap-custom.css (Brand colors, fonts, custom variables)
├── simple_overrides.css (Minimal component-specific overrides, if any)
└── noscript.css (No-JS fallback)
Deliverables:
Goal: Comprehensive QA across all devices, browsers, and accessibility
Deliverables:
Goal: Document changes and prepare for deployment
simple_default.htmldefault.html, etc.)Deliverables:
Goal: Deploy to production and monitor
bundle exec jekyll buildDeliverables:
<!-- CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<!-- JS (includes Popper.js) -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
| Category | Common Classes |
|———-|—————–|
| Grid | .container, .row, .col-*, .col-md-*, .col-lg-* |
| Spacing | .m-3, .p-2, .mt-4, .mb-3, .ms-auto, .me-auto |
| Display | .d-flex, .d-grid, .d-none, .d-block, .d-inline |
| Flexbox | .justify-content-center, .align-items-center, .flex-column |
| Text | .text-center, .text-start, .text-end, .fw-bold, .fs-5 |
| Colors | .text-primary, .bg-light, .border-primary |
| Sizing | .w-100, .h-100, .min-vh-100 |
/* assets/css/bootstrap-custom.css */
:root {
/* Brand Colors (override Bootstrap defaults if needed) */
--bs-primary: #your-brand-color;
--bs-secondary: #your-secondary-color;
/* Typography */
--bs-body-font-family: 'Your Font', sans-serif;
/* Spacing */
--bs-spacer: 1rem;
}
/* Dark mode (optional) */
@media (prefers-color-scheme: dark) {
:root {
--bs-body-bg: #dark-bg;
--bs-body-color: #dark-text;
}
}
| Phase | Tasks | Duration | Notes |
|---|---|---|---|
| 1 | Bootstrap setup & config | 1-2 days | Fast, mostly copy/paste |
| 2 | Core template + 7 specialized layouts + nav/footer | 4-5 days | Increased from 3-4 days to account for 7 layout variants |
| 3 | Component refactoring (includes) | 2-3 days | Lighter scope now, focused on includes only |
| 4 | CSS consolidation | 2-3 days | Light cleanup expected |
| 5 | Testing & QA | 3-4 days | Thorough cross-browser testing |
| 6 | Documentation | 1-2 days | Update guides, deprecate old files |
| 7 | Deployment | 1 day | Smooth deployment expected |
| Total | 15-24 days | 2-3 weeks (12-16 hrs/week) |
Timeline Advantages:
| Risk | Impact | Likelihood | Mitigation |
|---|---|---|---|
| Breaking existing page layout | High | Low | Use Bootstrap’s tested system; continuous testing |
| SEO/ranking loss | High | Low | Maintain existing URLs, meta tags, structure |
| Lost functionality | Medium | Low | Comprehensive testing before deployment |
| Performance degradation | Medium | Low | Monitor metrics; Bootstrap is lightweight |
| Accessibility regression | Medium | Low | WCAG 2.2 AA audit; keyboard testing |
| Browser compatibility issues | Medium | Low | Cross-browser testing matrix |
| Form submission issues | Medium | Low | Functional testing of all forms |
feature/bootstrap5-migration_includes/simple_head.html with Bootstrap CSS CDN_includes/scripts.html with Bootstrap JSassets/css/bootstrap-custom.cssbundle exec jekyll serve| Pico CSS | Bootstrap 5 | Notes |
|---|---|---|
| Classless styling | .btn, .form-control, .card |
Bootstrap requires explicit classes |
<button> default style |
.btn .btn-primary |
Add classes for styling |
<input> default style |
.form-control |
Add class for Bootstrap styling |
| Custom grid (limited) | .container, .row, .col-* |
Bootstrap has more powerful grid |
| Color theme (CSS var) | --bs-primary, etc. |
Override Bootstrap color vars |
| Responsive typography | Same concept, Bootstrap utilities | Use .fs-* for font sizes |
Document Status: READY FOR REVIEW
Last Updated: May 8, 2026
Prepared by: Copilot
Approvals Required: