A small Astro + MDX blog for delightful, daily-use finds. The architecture separates capture from publication and supports reuse: - find/ captured items, hidden from indexes - finds/ editorial superposts referencing find slugs in a grid - reviews/ full-length writeups; can graduate from a find via fromFind - posts/ regular essays Three project-local skills under .claude/skills/ drive the pipeline: daily-finds (capture-only sweep across sources.json), build-finds (draft a thematic superpost), build-review (graduate a find). sources.json carries 47 curated feeds with per-source fetch strategy (webfetch / curl / skip) so Cloudflare-blocked sites and Reddit JSON endpoints are handled deterministically. /sources renders a 3-column card stream with a "Recent finds" cross-reference per source. Seeds: 17 reviews and one superpost referencing 5 finds.
36 lines
642 B
Plaintext
36 lines
642 B
Plaintext
---
|
|
import type { FindItem } from '../lib/find-items';
|
|
import FindCard from './FindCard.astro';
|
|
|
|
interface Props {
|
|
items: FindItem[];
|
|
}
|
|
const { items } = Astro.props;
|
|
---
|
|
|
|
<ul class="finds-grid">
|
|
{items.map((item) => (
|
|
<li>
|
|
<FindCard item={item} />
|
|
</li>
|
|
))}
|
|
</ul>
|
|
|
|
<style>
|
|
.finds-grid {
|
|
column-count: 3;
|
|
column-gap: 1rem;
|
|
list-style: none;
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
@media (max-width: 880px) { .finds-grid { column-count: 2; } }
|
|
@media (max-width: 520px) { .finds-grid { column-count: 1; } }
|
|
|
|
.finds-grid > li {
|
|
break-inside: avoid;
|
|
display: block;
|
|
margin: 0 0 1rem;
|
|
}
|
|
</style>
|