A Minimalist, Handcrafted Software Ecosystem
FernKit is a collection of low-level, system-oriented developer tools built around a consistent and poetic metaphor: nature, growth, imperfection, and emergence. Where most frameworks strive for abstraction and polish, FernKit leans into raw control and transparent design.
Our ecosystem is guided by a few core principles that define our approach to building software.
In a world of deep abstractions, we believe there is immense value in understanding the fundamentals. FernKit is designed to be a transparent learning tool. We deliberately avoid black boxes to expose the inner workings of UI rendering, networking, command-line parsing, and more. Using FernKit is not just about building an application; it's an educational experience in how software interacts with the system at a foundational level.
FernKit is not a finished product; it is a living system. We embrace an open-ended process of growth, releasing tools early and allowing them to evolve publicly. Flaws and glitches are not seen as failures but as authentic signs of a system that is learning and developing. This philosophy invites users and contributors to be part of the journey, witnessing and shaping the organic growth of the ecosystem rather than consuming a static, polished tool.
The metaphor of nature is the soil from which our ecosystem grows. This is not just branding, but a core architectural guide. Each tool's name and function reflects its place in a natural lifecycle. Terra is the soil, the command-line foundation. Fern is the plant that sprouts from it, rendering visuals. Conduit is the underground root system for data flow, and Grub is the larva, imperfectly but persistently consuming and processing text. This thematic depth makes the ecosystem intuitive and deeply interconnected.
We prioritize simplicity, control, and portability. By writing tools in C, C++, and Python with as few external dependencies as possible, we keep the codebase lean and understandable. This minimalism gives you, the developer, complete control and responsibility. Each component, from the networking layer to the UI kit, is self-contained and can be used independently. You can adopt the entire ecosystem or choose just one tool that solves a specific problem, without inheriting unnecessary bloat.
FernKit is composed of several handcrafted tools that bring the ecosystem to life.
| Repository | Description | Key Language(s) |
|---|---|---|
| grub | A low-level, imperfect text rasterizer for Fern apps. | C++ |
| gleeb | A language server providing code intelligence for the Fern UI toolkit. | TypeScript |
| flare | A repository of starter templates for bootstrapping FernKit projects. | C++ |
| terra | The underlying CLI toolchain for managing FernKit project workflows. | Python |
| conduit | A simple socket client for synchronous, low-level networking. | C++ |
| fern | A UI toolkit for WASM & Linux, rendered pixel-by-pixel from scratch. | C++ |
| fern-docs | The central hub for documentation for the FernKit ecosystem. | TypeScript |
Ready to start building? The best place to begin is with the Terra CLI, which will help you sprout your first project.
# (Installation instructions will go here)
fern sprout my-first-appHead over to the fern-docs repository for complete guides and tutorials.
FernKit is built in the open, and we welcome contributions of all kinds. Whether you're fixing a bug, improving documentation, or proposing a new feature, your help is valued.
Please read our Contributing Guidelines (once you create this file) to get started.
<p align="center"> Thank you for visiting. We are building these tools in the open and welcome you to watch them evolve. </p>
