Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Modernize showcase collection #1248

Merged
merged 7 commits into from
Sep 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
6 changes: 5 additions & 1 deletion .env.example
Original file line number Diff line number Diff line change
@@ -1 +1,5 @@
THEMES_API_URL=https://portal.astro.build
# GitHub token used for running CI scripts, e.g. `pnpm update:showcase`
GITHUB_TOKEN=

# Optionally override the default theme catalogue URL to test against development data
# THEMES_API_URL=https://portal.astro.build
7 changes: 3 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
"typecheck": "astro check",
"update:integrations": "node -r dotenv/config ./scripts/update-integrations.mjs",
"update:showcase": "node -r dotenv/config ./scripts/update-showcase.mjs",
"audit:showcase": "node -r dotenv/config .scripts/audit-showcase.mjs"
"audit:showcase": "node -r dotenv/config ./scripts/audit-showcase.mjs"
},
"dependencies": {
"@astro-community/astro-embed-youtube": "^0.5.3",
Expand All @@ -35,7 +35,6 @@
"@biomejs/biome": "1.8.3",
"@iconify-json/ri": "^1.1.20",
"@netlify/plugin-lighthouse": "^6.0.0",
"@types/json-to-pretty-yaml": "1.2.1",
"@types/node": "^20.10.4",
"astro": "^4.14.6",
"astro-expressive-code": "^0.35.6",
Expand All @@ -59,13 +58,13 @@
"@actions/core": "^1.10.1",
"@octokit/graphql": "^7.0.2",
"gray-matter": "^4.0.3",
"json-to-pretty-yaml": "^1.2.2",
"linkedom": "^0.16.4",
"mdast-util-from-markdown": "^2.0.1",
"mdast-util-to-string": "^4.0.0",
"puppeteer": "^21.6.0",
"slugify": "^1.6.6",
"tiny-glob": "^0.2.9"
"tiny-glob": "^0.2.9",
"yaml": "^2.5.1"
},
"packageManager": "pnpm@9.4.0"
}
44 changes: 8 additions & 36 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion scripts/migrate-integrations.mjs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import fs from 'node:fs';
import path from 'node:path';
import yaml from 'json-to-pretty-yaml';
import slugify from 'slugify';
import * as yaml from 'yaml';

function main() {
const blob = fs.readFileSync('./integrations.json', 'utf-8');
Expand Down
2 changes: 1 addition & 1 deletion scripts/update-integrations.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ import fs from 'node:fs';
import path from 'node:path';
import { fileURLToPath } from 'node:url';
import matter from 'gray-matter';
import yaml from 'json-to-pretty-yaml';
import slugify from 'slugify';
import glob from 'tiny-glob';
import * as yaml from 'yaml';
import {
allowlist,
badgeForPackage,
Expand Down
48 changes: 21 additions & 27 deletions scripts/update-showcase.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@
import fs from 'node:fs/promises';
import ghActions from '@actions/core';
import octokit from '@octokit/graphql';
import matter from 'gray-matter';
import { parseHTML } from 'linkedom';
import puppeteer from 'puppeteer';
import { downloadBrowser } from 'puppeteer/lib/esm/puppeteer/node/install.js';
import sharp from 'sharp';
import * as yaml from 'yaml';

await downloadBrowser();

Expand Down Expand Up @@ -301,14 +301,13 @@ class ShowcaseScraper {
static async #getLiveShowcaseUrls() {
const showcaseDir = './src/content/showcase';
const showcaseFilePaths = await fs.readdir(showcaseDir);
const showcaseFiles = (
await Promise.all(
showcaseFilePaths
.filter((path) => path.endsWith('.md'))
.map((path) => fs.readFile(`${showcaseDir}/${path}`, 'utf-8')),
)
).map((fileString) => matter(fileString));
return new Set(showcaseFiles.map((file) => new URL(file.data.url).origin));
const rawShowcaseFiles = await Promise.all(
showcaseFilePaths
.filter((path) => path.endsWith('.yml'))
.map((path) => fs.readFile(`${showcaseDir}/${path}`, 'utf-8')),
);
const showcaseFiles = rawShowcaseFiles.map((fileString) => yaml.parse(fileString));
return new Set(showcaseFiles.map((file) => new URL(file.url).origin));
}

/**
Expand All @@ -324,7 +323,7 @@ class ShowcaseScraper {
let success = false;
try {
const site = await ShowcaseScraper.#scrapeSite(url, browser);
await ShowcaseScraper.#saveScreenshots(url, site.screenshot);
await ShowcaseScraper.#saveScreenshot(url, site.screenshot);
await ShowcaseScraper.#saveDataFile(url, site);
title = site.title;
success = true;
Expand Down Expand Up @@ -387,38 +386,33 @@ class ShowcaseScraper {
* @param {Buffer} screenshot PNG image buffer
* @returns {Promise<void>}
*/
static async #saveScreenshots(url, screenshot) {
static async #saveScreenshot(url, screenshot) {
const { hostname } = new URL(url);
const pipeline = sharp(screenshot);
await pipeline
.clone()
.resize(1600)
.webp()
.toFile(`src/content/showcase/_images/${hostname}@2x.webp`);
console.log('Wrote', `src/content/showcase/_images/${hostname}@2x.webp`);
await pipeline.resize(800).webp().toFile(`src/content/showcase/_images/${hostname}.webp`);
console.log('Wrote', `src/content/showcase/_images/${hostname}.webp`);
const path = `src/content/showcase/${hostname}.webp`;
await sharp(screenshot).resize(1600).webp().toFile(path);
console.log('Wrote', path);
}

/**
* Create a Markdown file in the showcase content collection.
* Create a YAML file in the showcase content collection.
* @param {string} url URL of the showcase entry to link to
* @param {{ title: string; isStarlight: boolean }} site Metadata for the showcase site
* @returns {Promise<void>}
*/
static async #saveDataFile(url, { title, isStarlight }) {
const { hostname } = new URL(url);
/** @type {Record<string, any>} */
const frontmatter = {
const data = {
title,
image: `/src/content/showcase/_images/${hostname}.webp`,
image: `./${hostname}.webp`,
url,
dateAdded: new Date(),
};
if (isStarlight) frontmatter.categories = ['starlight'];
const file = matter.stringify('', frontmatter);
await fs.writeFile(`src/content/showcase/${hostname}.md`, file, 'utf-8');
console.log('Wrote', `src/content/showcase/${hostname}.md`);
if (isStarlight) data.categories = ['starlight'];
const path = `src/content/showcase/${hostname}.yml`;
const file = yaml.stringify(data);
await fs.writeFile(path, file, 'utf-8');
console.log('Wrote', path);
}
}

Expand Down
54 changes: 28 additions & 26 deletions src/content/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -153,30 +153,32 @@ export const collections = {
published: z.date(),
}),
},
showcase: {
schema: z.object({
title: z.string().min(1),
image: z.string(),
url: z.string().url(),
featured: z.number().min(1).optional(),
highlight: z.boolean().default(false),
dateAdded: z.date(),
categories: z
.enum([
'starlight',
'personal',
'tech',
'marketing',
'entertainment',
'landing',
'blog',
'portfolio',
'docs',
'e-commerce',
'other',
])
.array()
.default([]),
}),
},
showcase: defineCollection({
type: 'data',
schema: ({ image }) =>
z.object({
title: z.string().min(1),
image: image(),
url: z.string().url(),
featured: z.number().min(1).optional(),
highlight: z.boolean().default(false),
dateAdded: z.date(),
categories: z
.enum([
'starlight',
'personal',
'tech',
'marketing',
'entertainment',
'landing',
'blog',
'portfolio',
'docs',
'e-commerce',
'other',
])
.array()
.default([]),
}),
}),
};
8 changes: 0 additions & 8 deletions src/content/showcase/0no.co.md

This file was deleted.

5 changes: 5 additions & 0 deletions src/content/showcase/0no.co.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
title: 0No Co.
image: ./0no.co.webp
url: 'https://0no.co/'
highlight: true
dateAdded: 2023-07-10T14:49:29.000Z
8 changes: 0 additions & 8 deletions src/content/showcase/31more.saidhasyim.com.md

This file was deleted.

6 changes: 6 additions & 0 deletions src/content/showcase/31more.saidhasyim.com.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
title: 31More - A Better Way to Showcase Anything Elegantly
image: ./31more.saidhasyim.com.webp
url: 'https://31more.saidhasyim.com/'
dateAdded: 2024-09-09T12:39:36.010Z
categories:
- landing
Binary file removed src/content/showcase/_images/0no.co.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/aakashgill.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/abctoolbox.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/aboutmonica.com.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/accrofury.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/ade-pranaya.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/adrianub.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/af-utils.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/agileit.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/agmmtoo.pages.dev.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/ahmadlaiq.my.id.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/ai.cloudflare.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/ai.openbestof.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/aiaman.web.app.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/aidailynews.io.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/airconwise.co.uk.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/akshaygore.tech.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/alab-laboratoria.webp
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/alee14.me.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/aleksa-codes.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/alex-kuznetsov.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/alex-streza.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/amelite.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/andka.my.id.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/andreashackel.de.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/andreszapata.me.webp
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/ankur-kumar.in.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/annahsu.dev.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/antoniuk.dev.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/antonsimanov.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/antstack.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/anurock-dev.webp
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/appstoredesign.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/aria.dog.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/arian-architects.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/arikko.dev.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/ark-ui.com.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/aroreretini.dev.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/artgeneratorai.art.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/articoliesocial.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/artofmemory.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/arweave-list.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/as-next.web.app.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/ashfid.dev.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/ask.foolishdev.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/aso.dev.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/astro-docs.webp
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/astroaster.xyz.webp
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/atlan.com.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/avikbanik.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/awazly.com.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/awslabs.github.io.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/axol.io.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/ayanava-karmakar.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/azlzone.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/balbas.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/baldbeardedbuilder.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/barnabas-kendall.webp
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/baykatb.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/be-radio.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/beertechgroup.net.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/beesvpn.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/behold.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/behrouz.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/bern-hypnose.ch.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/beta.tailus.io.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/bfloow.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/bhdouglass.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/bholmes.dev.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/bit-doze.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/bjjgym.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/black-m1d1.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/blacksof.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/blazorspark.com.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/blocsonic.com.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/blog.asyncx.top.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/blog.fanindra.xyz.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/blog.kakaopay.com.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/blog.noorudd.in.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/blog.otterlord.dev.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/blog.sehnsucht.top.webp
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/bluescopetech.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/bobalazek.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/bookmarkllama.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/boonsong-dev.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/bootstraplogos.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/boujeebrands.io.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/box-timer.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/brasa.agency.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/brktfldg.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/bruno-alves.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/bryanhogan.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/bus.waglo.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/byte-of-dev.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/calpa.me.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/candidosales.me.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/cantoo.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/captainofphb.me.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/captmichael.dev.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/careervault.io.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/carsten-lebek.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/castrovaron.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/ccsf-cs.club.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/cdi.dev.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/centiskor.ch.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/changelog.thorn.so.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/charl.sh.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/charleszw.com.webp
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/chris-nowicki.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/christham.net.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/christian-penrod.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/ciso360-ai.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/cjohanaja.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/clarkio.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/cleanvid.com.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/coachbit.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/cocometic.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/codenanshu.in.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/coder-spirit.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/coding-in-public.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/coding-tech.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/codingcogs.org.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/colorsandfonts.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/colyseus.io.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/compiiile.me.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/confiabogado.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/connordowson.dev.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/contenda.co.webp
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/coolify.io.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/cooooolt.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/corcosoft.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/corpogrowth.gr.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/corset.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/corvu.dev.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/cozy-nova.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/cozy.ayco.io.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/create-t3-app-docs.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/creatures.dev.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/crosstown-movers.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/crucialcalm.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/cs.fyi.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/csgo-console.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/cskl.pl.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/css-bin-bits.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/csusb.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/current.com.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/cyborg.fish.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/dads-worksheets.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/daily-dev-tips.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/dalvid.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/dan-ramteke.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/danidiaztech.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/darkfolios.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/datadonut.xyz.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/datapackage.org.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/dav-ai.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/day-of-the-dead.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/days.leonh.space.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/dbaas-review.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/ddev.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/ddlawson.com.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/deeprobin.de.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/defined-networking.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/dental-lounge.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/design-buddy.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/design.eva.town.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/designcember.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/devaradise.com.webp
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/devexc.com.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/dgm.sh.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/digasystems.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/digital-cookie.io.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/dilmahtea.me.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/discoverlance.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/disrapt.co.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/distresssignal.org.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/divriots.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/dizajn-radiator.ru.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/dns.surf.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/docs.arcjet.com.webp
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/docs.dirtroad.dev.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/docs.orama.com.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/docs.scrumlr.io.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/docs.thorn.so.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/docs.typetura.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/dodonut.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/dofalare.com.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/domain-stories.com.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/drimchansky.dev.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/dub.sh.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/dukc.dev.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/dunedinsound.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/e-csoport.hu.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/earley.info.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/ecomba.pro.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/edumentors.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/edwardmargallo.com.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/elef.codes.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/elemkits.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/elian-codes.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/eliotbas.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/eltana.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/elysegiroux.com.webp
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/embeddedllm.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/emdadelgaz.com.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/emphasismedia.com.webp
Binary file not shown.
Binary file not shown.
Binary file removed src/content/showcase/_images/enklare.se.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/erik-olsen.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/erika-florist.webp
Binary file not shown.
Binary file removed src/content/showcase/_images/errorism.dev.webp
Binary file not shown.
Binary file not shown.
Loading