# No React, No Next.js, No shadcn: The Other AI Apps

*Interactive version: [View on web](/articles/ai-derisks-niche.html)*


[openai_ex](https://github.com/cyberchitta/openai_ex) is the [most-downloaded OpenAI client for Elixir](https://hex.pm/packages?search=openai&sort=recent_downloads). @restlessronin built it knowing the language from one mid-sized web project; the concurrency model was theoretical.

The streaming implementation, the only complicated part of the library, was @restlessronin's own work with [help from the Elixir community](https://gist.github.com/zachallaun/88aed2a0cef0aed6d68dcc7c12531649). @gpt-3.5 was a junior pair on the work _around_ it: stamping out endpoint translations once the pattern was set, cleaning up documentation, the long tail.

Then [llm_chat_phx](https://github.com/cyberchitta/llm_chat_phx), a chat app built on openai_ex, went deeper into GenServer territory and BEAM coordination the author had never built against. @claude-3-opus was the first time AI worked _past_ the author's knowledge, not alongside it.

Two ways AI lowered the cost of a niche tech bet: collapsing time on the parts the author knew, substituting for expertise on the parts he didn't. Both are forms of the same thing: the _niche tax_, the premium a developer pays to pick a stack outside the mainstream.

## When the Cost is Time

When the cost is time, the pre-AI path went through _allocate more resources_. AI collapsed the hours.

@restlessronin had used 11ty five years earlier on a small ecommerce site. Hack-grade work: ad-hoc theming, ad-hoc SSR/CSR plumbing, ad-hoc custom-element rendering. By September 2024 the tool was familiar, and [cyberchitta.cc was the rebuild](web-tech.html) at proper architecture grade. Two early features illustrate the time-cost collapse.

The first was the custom-element pipeline. Articles needed clean markdown: semantic source, minimal HTML. Layouts needed to be rich: galleries, comparison tables, design surfaces. Custom HTML tags like `<showcase>` and `<showtable>` compiled to fully-formatted HTML at build time.

The second was automatic dark mode. @restlessronin lacked both the HTML/CSS/JS for mode-switching and the design chops for a two-mode palette.

@claude-3.5-sonnet built all three: the renderer, the switch plumbing, the palette. Markdown stays clean, output stays rich, the site flips dark when the browser does. Pre-AI, this was the kind of polish that got deferred indefinitely on the earlier ecommerce build; with AI, all three shipped in days.

## When the Cost is Expertise

When the cost is expertise, the pre-AI path went through _hire someone who has done this before_. AI substituted directly.

[gst-tally](https://github.com/ecofemme/gst-tally) takes monthly WooCommerce exports as input, emits Indian-GST-compliant Tally XML as output, and runs as a PyQt5 desktop application on Linux for an operator who will not open a terminal. Three unfamiliar stacks layered at once.

Pre-AI, each layer was specialized-consultant territory on its own. Stacked, the realistic path was three consultants, plus a coordination problem.

@grok-3 knew enough to help build an app that is now in production. It substituted for prior experience entirely, on parts of each stack where Stack Overflow had nothing and official docs were sparse.

## When Both Costs Have Collapsed

Once both costs collapsed, picks could run on fit rather than the safest bet. What follows is a short curated list from 20+ niche-bet projects across two years. They vary in size, stakes, and outcome: long-term maintained, running unchanged in production, one-off spikes. All are stacks that would have looked too risky to pick before AI.

[literate-monero](https://github.com/cyberchitta/literate-monero) is the outlier — niche in approach, not just tools. Emacs org-mode files as the source of truth, tangled to Ansible: literate programming applied to infrastructure config. Every layer below is its own niche: Monero, P2Pool, I2P, WireGuard. Each has a small community and sparse docs; the intersections, sparser still.

The rest is a sweep, one line each:

- **annam**: a SaaS DB and web frontend on tools the mainstream would not have chosen. SolidJS, Hono, Bun, Drizzle. ~26K LoC, the largest project here.
- [**geo-darshan**](https://github.com/cyberchitta/geo-darshan): geospatial data labeling. Svelte and Bun, Leaflet for tiles.
- **markdown-db**: markdown files as product database; a JS + Python pipeline producing product specs, pricing, FX conversion, catalog pages.
- **grace-community**: community accounting. Google Sheets as the database, Netlify Functions as the API. No ORM, no auth library, no backend framework.
- **klods-syn**: lego brick classifier. nbdev (notebooks as source), DINOv3 + Mitsuba 3 for synthetic training data.

Across these projects, collaborators spanned most Claude, Grok, and Gemini models of the past two years, with the Claudes doing most of the work.

## What's Missing

Most conspicuously absent: shadcn, the component library whose recognizable purple theme has become the visual signature of AI-built apps. No React project. No Next.js. Where Bun fits, no Node.

The competing account says AI picks the mainstream stack — React by default, Next.js for the boilerplate, shadcn for the components. For users who do not pull against that default, this is largely correct. The catalog above is what happens when a user does pull against it.

## Where the Collapse Didn't Reach

[vibe-gain](https://github.com/cyberchitta/vibe-gain) went with Vega-Lite for interactive web visualizations over the mainstream path: Python with matplotlib or seaborn, outputting static PNGs. The models of that period (Claude Sonnet 3.5–3.7) could generate and modify Vega specs but could not see the resulting plots. Every visual experiment passed through human eyes. [A few-week project took eight months](wt-visualizations.html).

The two-cost collapse was not uniform: vibe-gain is where it did not reach.

## What Gets Picked

AI did make @restlessronin faster. [os-vibe-gains](os-vibe-gains.html) measured 2–2.5x productivity gains across his commit history. The gains are real. But the productivity-tool frame asks _how fast does AI make you?_ That is the smaller story.

The larger one is which stacks now look reasonable to pick. Monero on Ansible from org-mode. SolidJS instead of React. Bun instead of Node. Google Sheets as the database. Before AI, these picks would have looked reckless. Not because they were wrong, but because the niche tax made them expensive to be wrong about.

That tax has collapsed. Speed is one channel. Expertise is the other.

This catalog is the evidence.

## Credits

Concept by @restlessronin, brainstormed with @claude-opus-4.6. Project catalog researched by @claude-sonnet-4.6. Written by @claude-opus-4.7.

gst-tally is joint work with @restlessronin's mentee [@friskyvisky](https://x.com/viskybottel).


---

## Document History

**May 19, 2026:** Bridged intro opening; tightened openai_ex paragraphs and consultant sentences.

