Home

Awesome

🚀  Julian's Web Garden

Astro SCSS TypeScript
ISC License Conventional Commits PRs Welcome
Prettier EditorConfig ESLint Stylelint

<!-- [![Renovate](https://img.shields.io/badge/Renovate-enabled-17a2b8?logo=renovatebot)](https://app.renovatebot.com/dashboard) -->

Here lies some re-usable components and tooling settings, taking advantage of Astro strengths as much as possible.

Focus is on common web patterns and progressive enhancements.

<!-- > **Note** > Astro is still in Beta, so is this collection. > Components API might change a bit, though not drastically. > Thanks for you understanding ✌️. -->

🤷🏼‍♂️  Philosophy

We've all been to the point of throwing valuable code when adopting new shiny website frameworks.
Thanks to "island architecture" practices, we can establish standard and future-proof, commonly used, generic patterns, using the web holy trinity of languages : HTML / CSS and JavaScript.
That way, we can sprinkle advanced JS widgets as we like, with trendy UI framework, while things like global application utilities remain stable over time.

Vanilla means future-proofing our code, but it also bring the benefit of minuscule file sizes compared to "all-or-nothing" UI frameworks.


<div class="git-only">
</div>

🔗  Quick links

LIVE DEMO  🎭  DOCUMENTATION WEBSITE ⎋

<div class="git-only">

Live demo website

</div>

Production deployed on code.juliancataldo.com.
Mirror deployed on web-garden.netlify.app. See Production GitHub workflow

Develop deployed on develop--web-garden.netlify.app.
See Branch GitHub workflow

Deployed on Netlify via GitHub actions.

<!-- TODO: integrate mermaid renderer into website / or pre-render SVG -->

Architecture


flowchart TB

subgraph Pages
Home(Home)
Etc2("...")
end
subgraph Components
  subgraph Layouts
  Default('Default')
  Etc3("...")
  end
  subgraph Application
  SEO('SEO')
  Prefetch('Prefetch')
  Etc("...")
  end
  subgraph Modules
  Landing('Landing')
  SinglePackage('SinglePackage')
  Etc5("...")
  end
  subgraph Generic
  Link('Link')
  LicensesReport('LicensesReport')
  Etc4("...")
  end
end

Data(Data)-->Pages

Application-->Layouts
Generic-->Pages
Modules-->Pages
Generic-->Modules
Generic-->Layouts
Layouts-->Pages


Terminology

📖  Website source code

See default layout and home page for live implementation examples.


📦  Application-level components

These are global components which enhance or augment browser behavior and style, while providing useful utilities to developers, website-wide.

<!-- AUTO-GENERATED-CONTENT:START (DIRTREE:dir=./app) -->
app/
├── BaseDocument/
├── Breakpoints/
├── ColorMode/
├── GoogleAnalytics/
├── HoverPrefetch/
├── Lightbox/
├── Navigation/
├── PageTransition/
├── Resets/
├── ScrollObserver/
├── SEOMetadata/
└── Tooltips/
<!-- AUTO-GENERATED-CONTENT:END -->

📦  Components

Generic extendables components.

<!-- AUTO-GENERATED-CONTENT:START (DIRTREE:dir=./components) -->
components/
├── CodeEditor/
├── Diagram/
├── GeoMap/
├── LicensesReport/
├── Link/
├── Tabs/
├── TerminalPlayer/
└── Testbed/
<!-- AUTO-GENERATED-CONTENT:END -->

🛠  Tooling configurations

A useful collection for web developers.
Features ESLint, Prettier, Stylelint, Commitlint…
For Astro, React, Vue, SCSS, TS…

<!-- AUTO-GENERATED-CONTENT:START (DIRTREE:dir=./configs) -->
configs/
├── vscode/
├── .editorconfig-example
├── commitlint-base.ts
├── eslint-all.cjs
├── eslint-astro.cjs
├── eslint-js.cjs
├── eslint-jsx.cjs
├── eslint-mdx.cjs
├── eslint-ts.cjs
├── eslint-tsx.cjs
├── eslint-vue.cjs
├── index.mjs
├── prettier-astro.cjs
├── prettier-base.cjs
└── stylelint-all.cjs
<!-- AUTO-GENERATED-CONTENT:END --> <!-- # ✅  Tests Cypress: - [ ] App/Analytics - [x] App/Base - [ ] App/Prefetch - Broken: `realHover` [issue](https://github.com/dmtrKovalenko/cypress-real-events/issues/247) - [ ] App/Resets - [ ] App/Breakpoints - [ ] App/ColorMode - [x] App/Scroll/Observer - [ ] App/SEO - [x] App/Tooltips - [x] App/Transition - [ ] External / contact links - [ ] App/Lightbox - [x] Components/Media/Map - [ ] Components/Link - [ ] External / contact links - [ ] Components/LicensesReport - [ ] … -->

🚧  To dos

<!-- # 🧫  Experimenting --> <!-- - Website full theme switcher, in addition to color dark / light variants. --> <!-- - Feature flag manager --> <!-- - Copy to clipboard --> <!-- - Algolia search --> <!-- - SSR Mermaid --> <!-- - Easy fonts integration --> <!-- - Easy iconify integration -->

🧑‍🚀  Development

🏁  Commands

# Clone mono-repository
git clone https://github.com/JulianCataldo/web-garden

# Scripts located in root ./package.json

# Bootstrap all packages dependencies
pnpm install --recursive

# Launch implementations demo website
pnpm run demo

# Cypress: Open dev GUI
pnpm run cypress:open

# Cypress: Run test suite
pnpm run cypress:run

# Linkinator: Run links checker with report
pnpm run test:links

# Pre-release, does:
# 1. Packages bump based on commits
# 2. Tagging releases
# 3. Git push
pnpm run version

# Release updated packages on NPM public registry
pnpm run release
<div class="git-footer">

Other projects:


🔗  JulianCataldo.com

</div>