Byron Wade

HobbyHobby Project

Content Management System

A front-end CMS prototype with a visual database schema builder, built as groundwork for a Field Management System for modern agriculture.

I built a project that might seem like just another content management system at first glance. But cms.byronwade.com was meant as something more: the groundwork for building complex, domain-specific applications, specifically, a Field Management System (FMS) for modern agriculture.

This article explores why I decided to build this CMS, the architectural decisions that make it unique, and why I believe it's a critical stepping stone for the field management system I'm planning to develop.

Note: This is a front-end prototype. Its own README calls it a design-only demo: most screens run on sample data, and only the content editor saves anything. Work stopped in December 2025, and the cms.byronwade.com deployment is no longer online. The source is public on GitHub.


Why Build a CMS in 2024?

The Problem with Existing Solutions

When I first started thinking about building a Field Management System for agriculture, I quickly realized that most existing CMS platforms, while powerful, come with significant limitations:

  1. Over-engineering for simple use cases: Platforms like WordPress or Drupal are built for general-purpose content management, not specialized agricultural data

  2. Under-engineering for complex needs: Lightweight headless CMS solutions lack the visual tools and intuitive interfaces needed for non-technical users

  3. Vendor lock-in: Most solutions tie you to their infrastructure, making it difficult to customize or extend

  4. Performance overhead: Traditional CMS platforms often include features we don't need, creating unnecessary complexity and slower performance

The Vision: A Purpose-Built Foundation

Instead of starting directly with the FMS, I decided to build a modern CMS that would serve as both a learning platform and a foundation. This approach offers several advantages:

  • Understanding the architecture: By building a CMS first, I'm forced to think through content modeling, data relationships, and user interfaces in a controlled environment

  • Reusable patterns: The patterns and components I develop here will directly translate to the FMS

  • Performance-first mindset: Starting with Next.js Server Components keeps performance a first-class concern

  • Modern development practices: This project lets me experiment with cutting-edge React patterns and Next.js features


What Makes This CMS Different

Server-First Architecture

The plan was a server-first system built on Next.js Server Components (the project started on Next.js 15 and moved to 16 in December 2025), which means:

  • Little JavaScript by default: Pages render on the server, sending minimal JavaScript to the client

  • Data fetching in components: Server Components can read data directly without exposing API endpoints

  • Better SEO: Since content is rendered on the server, search engines can index it properly

  • Reduced client bundle size: Only interactive components require client-side JavaScript

The prototype did not get there. The CMS layout and nearly every admin screen are client components, and the content editor loads and saves through an API route. Only the landing page, the analytics overview and a few redirects render on the server.

Visual Database Schema Builder

The most distinctive part of this CMS is the visual database schema builder, built with ReactFlow. It opens with a sample schema and lets you:

  • Add fields with different data types (VARCHAR, INTEGER, BOOLEAN, DATE, etc.)

  • Establish relationships between tables through visual connections

  • Drop AI transformation steps onto a connection

Two planned pieces were never wired up: adding new tables (the Add Table button and dragging tables onto the canvas) and exporting the schema for implementation.

This feature is particularly important for the FMS because agricultural data has complex relationships:

  • Fields connect to crops

  • Crops connect to planting schedules

  • Equipment connects to field operations

  • Weather data connects to field conditions

Having a visual tool to model these relationships before implementation is invaluable.

Component Isolation and Modularity

The aim was to build every component in isolation. That means:

  • Reusability: Components can be easily extracted and reused in the FMS

  • Testability: Isolated components are easier to test and debug (the prototype has no tests yet)

  • Maintainability: Changes to one component don't cascade through the entire system

  • Scalability: New features can be added without refactoring existing code

Modern UI Patterns

The CMS uses shadcn/ui components with Tailwind CSS, providing:

  • Dark mode by default: Better for extended use in agricultural settings (often used in low-light conditions)

  • Accessible starting point: Radix UI primitives bring keyboard and screen-reader behavior (the CMS itself was never audited)

  • Consistent design language: A cohesive visual system that will translate well to the FMS interface


Key Features That Translate to FMS

These are mappings, not shipped features. In the prototype, media, analytics and the publishing board all run on sample data.

1. Content Management → Field Data Management

The content management system in the CMS directly translates to managing field data in the FMS:

  • Content types become field types (corn fields, soybean fields, pasture, etc.)

  • Content blocks become field operations (planting, harvesting, fertilizing, etc.)

  • Media management becomes field documentation (photos, drone imagery, soil samples)

2. Visual Schema Builder → Agricultural Data Modeling

The visual database builder is perhaps the most directly applicable feature:

  • Tables represent agricultural entities (Fields, Crops, Equipment, Weather Stations)

  • Relationships model real-world connections (Field → Crop → Planting Date → Harvest Date)

  • Field types represent agricultural data (GPS coordinates, soil pH, yield data, etc.)

3. Analytics Dashboard → Farm Performance Metrics

The analytics system in the CMS will become the performance dashboard for the FMS:

  • Content metrics → Field productivity metrics

  • User engagement → Equipment utilization

  • Traffic patterns → Seasonal operation patterns

4. Publishing System → Field Operation Planning

The publishing workflow in the CMS translates to operation planning:

  • Draft/Published states → Planned/Completed operations

  • Scheduling → Seasonal planning

  • Version control → Operation history tracking


Why This Matters for Field Management

Agriculture is Data-Rich

Modern agriculture generates enormous amounts of data:

  • GPS coordinates for every field

  • Weather data from multiple sources

  • Soil composition and nutrient levels

  • Crop growth stages and health metrics

  • Equipment telemetry

  • Market prices and commodity futures

A Field Management System needs to handle this data complexity while remaining usable for farmers who may not be technical experts. The CMS provides the foundation for building intuitive interfaces that hide complexity while exposing powerful functionality.

The Need for Customization

Every farm is different:

  • Different crops require different data models

  • Different regions have different regulatory requirements

  • Different farm sizes need different feature sets

  • Different equipment requires different integrations

A CMS-based architecture would allow for:

  • Flexible content modeling: Define custom data structures for each farm

  • Plugin architecture: Add features as needed without core changes

  • Multi-tenant support: Each farm can have its own isolated instance

  • API-first design: Integrate with existing farm management tools

Performance at Scale

Agricultural operations don't stop for slow software. A farmer checking field conditions on a tablet in the middle of a field needs instant responses. A server-first architecture is meant to provide the following; none of it was measured in the prototype:

  • Fast initial loads: Server-rendered pages show content before JavaScript loads

  • Progressive enhancement: Works even with poor connectivity

  • Optimistic updates: UI responds immediately, syncs in background

  • Efficient data fetching: Only load what's needed, when it's needed


Technical Architecture Highlights

Next.js 16 with App Router

The application uses the Next.js App Router (on Next.js 16 since December 2025), which provides:

  • Server Components by default: Components are server components unless marked otherwise

  • Client Components only when needed: Interactive elements are explicitly marked

  • Streaming and Suspense: Progressive page loading with skeleton states

  • Route-based code splitting: Automatic optimization

TypeScript Throughout

Type safety is critical when building complex systems:

  • Compile-time error checking: Catch bugs before runtime

  • Better IDE support: Autocomplete and refactoring tools

  • Self-documenting code: Types serve as inline documentation

  • Safer refactoring: Changes are validated across the codebase

State Management with Zustand

For client-side state, I chose Zustand for its simplicity:

  • Minimal boilerplate: Less code than Redux

  • TypeScript-friendly: Excellent type inference

  • Performance: Only re-renders components that use changed state

Component Library: shadcn/ui

The UI is built on shadcn/ui, which provides:

  • Copy-paste components: Own the code, customize freely

  • Radix UI primitives: Keyboard and screen-reader behavior to build on

  • Tailwind CSS: Utility-first styling for rapid development

  • Theme support: Dark mode by default; a light/dark switch was never wired up


The Road Ahead: From CMS to FMS

Phase 1: CMS Foundation (Current)

The prototype has:

✅ Content editing with a block editor, saved as JSON files ✅ Visual database schema builder (fields and relationships; adding tables and export not wired up) ✅ User interface patterns 🚧 Media management and analytics: interface only, on sample data

Phase 2: FMS-Specific Features (Next)

Building on the CMS foundation, the FMS will add:

  • Field mapping: GPS-based field boundaries and mapping

  • Crop management: Planting schedules, growth tracking, harvest planning

  • Equipment tracking: Fleet management, maintenance schedules

  • Weather integration: Real-time weather data and forecasts

  • Compliance tracking: Regulatory reporting and documentation

  • Financial management: Cost tracking, yield analysis, profitability

Phase 3: Advanced Features (Future)

With a solid foundation, we can add:

  • AI-powered insights: Predictive analytics for crop health

  • IoT integration: Sensor data from field equipment

  • Marketplace integration: Connect with commodity markets

  • Mobile-first design: Native mobile apps for field use

  • Offline support: Work without internet connectivity


Lessons Learned

Start with the Foundation

Building the CMS first has taught me that:

  • Architecture matters more than features: A well-architected system can grow. A poorly architected one will collapse

  • Performance is a feature: Users notice fast applications more than they notice slow ones

  • Developer experience matters: Good DX leads to better code quality and faster development

  • User experience is king: Even the most powerful system is useless if users can't figure it out

The Value of Constraints

By building a frontend-only CMS first, I've learned to:

  • Think in terms of data structures: Without a database, I must carefully design data models

  • Plan for the backend: Every action is designed with future backend integration in mind

  • Focus on UI/UX: Without backend complexity, I can perfect the user experience

  • Build reusable patterns: Components and patterns that will work with any backend


Conclusion

cms.byronwade.com was more than a content management system to me. It was groundwork for building domain-specific applications. By starting with a CMS, I've created:

  1. A learning platform: Understanding how to build complex, data-driven applications

  2. A component library: Reusable UI components and patterns

  3. An architectural blueprint: The server-first patterns I want, and a clear view of where this prototype fell short of them

  4. A development workflow: Tools and processes for building scalable applications

The Field Management System I'm planning will benefit enormously from this foundation. The visual schema builder will help model agricultural data relationships. The content management patterns will translate to field data management. The analytics system will become farm performance dashboards. And the architecture is meant to keep the FMS fast, scalable, and maintainable.

But perhaps most importantly, building the CMS first has forced me to think deeply about:

  • How users interact with complex data

  • How to balance power with simplicity

  • How to build systems that can evolve over time

  • How to create software that truly serves its users

The Field Management System will be more than a database of fields and crops. It will be a comprehensive tool that helps farmers make better decisions, increase yields, reduce costs, and manage their operations more effectively. And it will be built on what this prototype taught me.


This CMS represents the first step in a larger journey toward building software that truly serves the agricultural community. The lessons learned here, the patterns established, and the architecture created will all contribute to a Field Management System that farmers actually want to use.

The cms.byronwade.com deployment is no longer online. The source is public on GitHub; the repository has no license file.