Welcome to the foya.dev Journal
A short note on what this section is for, why we call it a journal, and what to expect in the entries that follow.
- meta
- announcement
Hi, this is the first entry in foya.dev's Journal. We're building this section to capture the things that usually disappear the moment a commit merges — why we picked one approach over another, what stopped working when real users touched it, the 2am ideas that occasionally turned into shipped features.
Why Journal, not Blog
Blog carries some baggage — corporate updates, marketing fluff, "5 reasons why...". We're not that. Journal feels more honest: a daily-ish notebook that's sometimes messy, sometimes long, sometimes just a paragraph.
Every entry is tied to one of the makers. No anonymous "Team Foya" byline. If you find an idea worth following, you can hop straight to the author's profile and see what else they've shipped.
What we'll write
- Postmortems: what failed in a product, and what we learned.
- Weeknotes: a recap — features shipped, experiments abandoned, random stuff.
- Tech notes: architecture trade-offs that don't fit a product tagline.
- Inspiration: products we admire, libraries that helped, papers that rewired our thinking.
Stack behind this page
This entry lives in Supabase Postgres with an i18n jsonb column for the Bahasa Indonesia overlay — per-field fallback to EN when a translation isn't filled. Rendering uses react-markdown + remark-gfm, syntax highlighting via Prism.
const article = await getArticle(slug, locale);
// localizeArticle() applies the i18n.id overlay on top of the base
// English columns, with empty values falling through to base.
Author is an FK to makers.slug, so every maker profile auto-lists their writing without a manual join at the call site.
What to expect next
Short entries first — weeknotes, screenshots of half-built things, notes on patterns we keep reaching for. Longer pieces will come when we've actually shipped enough to look back honestly.
See you in the next one.