Files
help4bis-com/site/work/crohamhurst-app.html

542 lines
31 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<!-- Version: 1.2.0 | Created: 2026-05-05 | Updated: 2026-08-16 -->
<html lang="en-AU">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Crohamhurst Case Study | HELP4BIS</title>
<meta name="description" content="How I built Crohamhurst.app: a Gann and astronomical cycle analysis toolkit for financial market researchers, built as a metered SaaS with five specialist computation modules.">
<meta name="author" content="HELP4BIS">
<meta name="publisher" content="Dutch Digital Dynamics Pty Ltd">
<meta name="language" content="en-AU">
<meta name="geo.region" content="AU-QLD">
<link rel="canonical" href="https://help4bis.com/work/crohamhurst-app.html">
<meta name="robots" content="index, follow">
<meta property="og:type" content="website">
<meta property="og:url" content="https://help4bis.com/work/crohamhurst-app.html">
<meta property="og:site_name" content="HELP4BIS">
<meta property="og:title" content="Crohamhurst Case Study | HELP4BIS">
<meta property="og:description" content="A Gann and cycle analysis SaaS toolkit for financial researchers: five computation modules, metered compute pricing, and a nod to Queensland's Crohamhurst Observatory.">
<meta property="og:image" content="https://help4bis.com/assets/images/port-crohamhurst.png">
<meta property="og:locale" content="en_AU">
<link rel="icon" type="image/jpeg" href="../assets/images/logo-favicon.jpg"> <link rel="stylesheet" href="../assets/css/style.css">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebPage",
"@id": "https://help4bis.com/work/crohamhurst-app.html#webpage",
"url": "https://help4bis.com/work/crohamhurst-app.html",
"name": "Crohamhurst Case Study | HELP4BIS",
"description": "Gann and astronomical cycle analysis SaaS toolkit with metered compute pricing and five specialist modules.",
"isPartOf": {"@id": "https://help4bis.com/#website"},
"breadcrumb": {
"@type": "BreadcrumbList",
"itemListElement": [
{"@type": "ListItem", "position": 1, "name": "Home", "item": "https://help4bis.com/"},
{"@type": "ListItem", "position": 2, "name": "Our Work", "item": "https://help4bis.com/#portfolio"},
{"@type": "ListItem", "position": 3, "name": "Crohamhurst", "item": "https://help4bis.com/work/crohamhurst-app.html"}
]
}
}
</script>
<style>
.cs-hero {
background: linear-gradient(160deg, var(--ink) 0%, var(--ink-mid) 60%, #1a1200 100%);
padding: var(--sp-16) 0 var(--sp-12);
position: relative;
overflow: hidden;
}
.cs-hero::before {
content: '';
position: absolute;
top: -30%;
right: -15%;
width: 60%;
height: 200%;
background: radial-gradient(circle, rgba(217,119,6,.07) 0%, transparent 65%);
pointer-events: none;
}
.cs-breadcrumb {
font-size: 13px;
color: rgba(255,255,255,.45);
margin-bottom: var(--sp-5);
display: flex; align-items: center; gap: 8px;
}
.cs-breadcrumb a { color: rgba(255,255,255,.45); }
.cs-breadcrumb a:hover { color: var(--white); }
.cs-breadcrumb span { color: rgba(255,255,255,.25); }
.cs-hero h1 { color: var(--white); max-width: 820px; margin-bottom: var(--sp-4); }
.cs-hero-sub {
font-size: clamp(16px, 2vw, 20px);
color: rgba(255,255,255,.65);
max-width: 680px; line-height: 1.65; margin-bottom: var(--sp-6);
}
.cs-hero-actions { display: flex; gap: 12px; flex-wrap: wrap; }
.btn-gold {
background: linear-gradient(135deg, #D97706, #B45309);
color: var(--white); border-color: transparent;
box-shadow: 0 4px 14px rgba(217,119,6,.30);
}
.btn-gold:hover {
background: linear-gradient(135deg, #B45309, #92400E);
color: var(--white); transform: translateY(-2px);
}
.cs-kpis {
display: grid; grid-template-columns: repeat(2, 1fr);
gap: 16px; margin-top: var(--sp-8); padding-top: var(--sp-8);
border-top: 1px solid rgba(255,255,255,.08);
}
@media (min-width: 640px) { .cs-kpis { grid-template-columns: repeat(4, 1fr); } }
.cs-kpi { text-align: center; }
.cs-kpi-value {
font-family: var(--font-head); font-size: clamp(32px, 4vw, 52px);
font-weight: 900; color: #D97706; line-height: 1; letter-spacing: -0.04em;
}
.cs-kpi-label {
font-size: 12px; font-weight: 600; text-transform: uppercase;
letter-spacing: .12em; color: rgba(255,255,255,.45); margin-top: 6px;
}
.cs-feature-grid {
display: grid; grid-template-columns: 1fr; gap: 24px; margin-top: var(--sp-6);
}
@media (min-width: 640px) { .cs-feature-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 900px) { .cs-feature-grid { grid-template-columns: repeat(3, 1fr); } }
.cs-feature-card {
background: var(--white); border: 1px solid var(--grey-100);
border-radius: var(--r-lg); padding: 24px; box-shadow: var(--shadow-card);
}
.cs-feature-card h4 { font-size: 15px; margin-bottom: 8px; color: var(--ink); }
.cs-feature-card p { font-size: 14px; color: var(--grey-600); line-height: 1.6; margin: 0; }
.cs-feature-icon {
width: 36px; height: 36px; background: var(--grey-50); border-radius: var(--r-md);
display: flex; align-items: center; justify-content: center;
margin-bottom: 14px; font-size: 18px;
}
.cs-module-list {
margin: 0; padding: 0; list-style: none;
display: grid; grid-template-columns: 1fr; gap: 12px; margin-top: var(--sp-5);
}
@media (min-width: 640px) { .cs-module-list { grid-template-columns: repeat(2, 1fr); } }
.cs-module-item {
background: var(--white); border: 1px solid var(--grey-100);
border-left: 3px solid #D97706;
border-radius: var(--r-md); padding: 16px 20px; box-shadow: var(--shadow-sm);
}
.cs-module-item strong { display: block; font-size: 14px; font-weight: 600; color: var(--ink); margin-bottom: 4px; }
.cs-module-item span { font-size: 13px; color: var(--grey-600); line-height: 1.5; }
.cs-pricing-grid {
display: grid; grid-template-columns: 1fr; gap: 16px; margin-top: var(--sp-6);
}
@media (min-width: 640px) { .cs-pricing-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 900px) { .cs-pricing-grid { grid-template-columns: repeat(4, 1fr); } }
.cs-pricing-card {
background: var(--white); border: 1px solid var(--grey-100);
border-radius: var(--r-lg); padding: 20px; box-shadow: var(--shadow-card);
text-align: center;
}
.cs-pricing-card.featured {
border-color: #D97706;
box-shadow: 0 0 0 2px rgba(217,119,6,.15), var(--shadow-card);
}
.cs-pricing-card .tier-name { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .1em; color: var(--grey-400); margin-bottom: 8px; }
.cs-pricing-card .tier-price { font-family: var(--font-head); font-size: 28px; font-weight: 900; color: var(--ink); letter-spacing: -.03em; line-height: 1; }
.cs-pricing-card .tier-price span { font-size: 14px; font-weight: 500; color: var(--grey-500); }
.cs-pricing-card .tier-units { font-size: 13px; color: var(--grey-600); margin-top: 10px; font-weight: 500; }
.cs-pricing-card .tier-desc { font-size: 12px; color: var(--grey-500); margin-top: 6px; line-height: 1.5; }
.cs-stack { display: flex; flex-wrap: wrap; gap: 8px; margin-top: var(--sp-4); }
.cs-stack-tag {
background: var(--grey-50); border: 1px solid var(--grey-100);
border-radius: var(--r-full); padding: 6px 14px; font-size: 13px; font-weight: 500; color: var(--grey-600);
}
.cs-divider { height: 1px; background: var(--grey-100); margin: var(--sp-8) 0; }
.cs-two-col {
display: grid; grid-template-columns: 1fr; gap: var(--sp-8); align-items: start;
}
@media (min-width: 768px) {
.cs-two-col { grid-template-columns: 1fr 1fr; }
.cs-two-col--wide { grid-template-columns: 3fr 2fr; }
}
.cs-quote {
border-left: 3px solid #D97706;
padding: var(--sp-4) var(--sp-5); background: rgba(217,119,6,.04);
border-radius: 0 var(--r-md) var(--r-md) 0; margin: var(--sp-5) 0;
}
.cs-quote p { font-size: 17px; line-height: 1.7; color: var(--grey-800); font-style: italic; margin: 0; }
.cs-honest {
background: var(--grey-50); border: 1px solid var(--grey-100);
border-radius: var(--r-lg); padding: var(--sp-4) var(--sp-5); margin: var(--sp-5) 0;
}
.cs-honest-label {
font-size: 11px; font-weight: 700; text-transform: uppercase;
letter-spacing: .12em; color: var(--grey-400); margin-bottom: 8px;
}
.cs-honest p { font-size: 14px; color: var(--grey-600); line-height: 1.65; margin: 0; }
.cs-cta {
background: linear-gradient(135deg, var(--ink-mid), var(--ink));
border-radius: var(--r-2xl); padding: var(--sp-10) var(--sp-8); text-align: center;
}
.cs-cta h2 { color: var(--white); margin-bottom: var(--sp-4); }
.cs-cta p { color: rgba(255,255,255,.65); max-width: 560px; margin: 0 auto var(--sp-6); font-size: 17px; line-height: 1.7; }
</style>
</head>
<body>
<!-- NAV -->
<nav class="nav" role="navigation" aria-label="Main navigation">
<div class="nav__inner">
<a class="nav__logo" href="../index.html" aria-label="HELP4BIS home">
<img src="../assets/images/logo-cropped.jpg" alt="HELP4BIS" width="140" height="38">
</a>
<ul class="nav__links" id="nav-links" role="list">
<li class="nav__dropdown">
<button class="nav__trigger" aria-haspopup="true" aria-expanded="false">Services <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"/></svg></button>
<ul class="nav__dropdown-menu" role="menu">
<li class="nav__menu-group">WordPress</li>
<li><a href="../managed-wordpress.html" role="menuitem">Tailored Website Management</a></li>
<li><a href="../care-plans.html" role="menuitem">WP Care Plans <span class="menu-price">from $49/mo</span></a></li>
<li><a href="../sos-fix.html" role="menuitem">WP SOS Fix <span class="menu-price">$97 flat</span></a></li>
<li><a href="../ai-integration.html" role="menuitem">AI Integration</a></li>
<li><a href="../plugin-development.html" role="menuitem">Custom Plugin Development</a></li> </ul>
</li>
<li><a href="../about.html">About</a></li>
<li><a href="../index.html#portfolio">Our Work</a></li>
<li><a href="../index.html#pricing">Pricing</a></li>
<li><a href="../blog/index.html">Blog</a></li>
<li><a href="../your-first-week-with-ai.html">AI Guide</a></li>
<li><a href="../contact.html">Contact</a></li>
<li class="nav__cta-mobile" aria-hidden="true">
<a href="../contact.html" class="btn btn-primary">Get Started</a>
<a href="../sos-fix.html" class="btn btn-secondary">SOS Fix, $97</a>
</li>
</ul>
<div class="nav__cta">
<a href="../sos-fix.html" class="btn btn-secondary btn-sm">SOS Fix, $97</a>
<a href="../contact.html" class="btn btn-primary btn-sm">Get Started</a>
</div>
<button class="nav__burger" id="nav-burger" aria-label="Open menu" aria-expanded="false" aria-controls="nav-links">
<span></span><span></span><span></span>
</button>
</div>
</nav>
<!-- HERO -->
<section class="cs-hero" aria-labelledby="cs-heading">
<div class="container">
<div class="cs-breadcrumb">
<a href="../index.html">Home</a>
<span>›</span>
<a href="../index.html#portfolio">Our Work</a>
<span>›</span>
<span style="color:rgba(255,255,255,.7);">Crohamhurst</span>
</div>
<p class="eyebrow" style="color:rgba(217,119,6,.9);">Case Study: Financial Research SaaS</p>
<h1 id="cs-heading">Crohamhurst.<br>Gann and cycle analysis<br>built as a proper toolkit.</h1>
<p class="cs-hero-sub">A metered SaaS platform I built for financial market researchers who work with astronomical cycles and W.D. Gann methodology. Five specialist computation modules, pricing based on usage, and an API backend that handles the heavy calculation work so the browser doesn't have to.</p>
<div class="cs-hero-actions">
<a href="https://crohamhurst.app" target="_blank" rel="noopener" class="btn btn-gold">Visit crohamhurst.app →</a>
<a href="../ai-integration.html" class="btn btn-secondary">See Custom Development</a>
</div>
<div class="cs-kpis">
<div class="cs-kpi">
<div class="cs-kpi-value">5</div>
<div class="cs-kpi-label">Analysis Modules</div>
</div>
<div class="cs-kpi">
<div class="cs-kpi-value">SaaS</div>
<div class="cs-kpi-label">Product Type</div>
</div>
<div class="cs-kpi">
<div class="cs-kpi-value">3</div>
<div class="cs-kpi-label">Paid Tiers</div>
</div>
<div class="cs-kpi">
<div class="cs-kpi-value">AU</div>
<div class="cs-kpi-label">Hosted</div>
</div>
</div>
</div>
</section>
<!-- OVERVIEW -->
<section class="section" aria-labelledby="overview-heading">
<div class="container">
<div class="cs-two-col cs-two-col--wide">
<div>
<p class="eyebrow">Overview</p>
<h2 id="overview-heading">Where it came from</h2>
<p class="large">Crohamhurst Observatory in Queensland is where Inigo Jones spent decades studying planetary cycles and their relationship to weather and crop patterns. Jones's method, correlating astronomical data with terrestrial outcomes, became the foundation for a style of market analysis popularised by W.D. Gann in the early twentieth century.</p>
<p>I picked the name deliberately. Researchers working with Gann methodology need computation tools that handle ephemeris calculations, cycle detection, and geometric price analysis quickly and accurately. Spreadsheets work up to a point. I tried. But five year planetary aspect timelines with custom orb tolerances are the kind of thing that demands a purpose built tool.</p>
<p>That's what I built. Five specialist modules, each focused on one type of Gann or cycle analysis. A metered compute model so occasional users pay nothing and heavy users pay for what they use. I host it on Australian infrastructure.</p>
<div class="cs-quote">
<p>"Gann analysis isn't obscure any more. There's a real community of researchers who take the methodology seriously and need tools that match that seriousness. I built Crohamhurst for them."</p>
</div>
</div>
<div>
<div style="background:linear-gradient(135deg,#1a1200,#2d1f00);border-radius:var(--r-xl);padding:var(--sp-8);box-shadow:var(--shadow-lg);">
<div style="text-align:center;margin-bottom:var(--sp-6);">
<div style="font-size:48px;margin-bottom:12px;">🔭</div>
<div style="font-family:var(--font-head);font-size:22px;font-weight:900;color:#D97706;letter-spacing:-.02em;">CROHAMHURST</div>
<div style="font-size:12px;color:rgba(255,255,255,.4);letter-spacing:.15em;text-transform:uppercase;margin-top:4px;">Gann &amp; Cycle Analysis</div>
</div>
<div style="display:grid;grid-template-columns:1fr 1fr;gap:10px;">
<div style="background:rgba(255,255,255,.05);border-radius:var(--r-md);padding:12px;text-align:center;">
<div style="font-size:20px;font-weight:800;color:#D97706;font-family:var(--font-head);">50</div>
<div style="font-size:10px;color:rgba(255,255,255,.4);text-transform:uppercase;letter-spacing:.1em;margin-top:3px;">Free units/day</div>
</div>
<div style="background:rgba(217,119,6,.12);border:1px solid rgba(217,119,6,.25);border-radius:var(--r-md);padding:12px;text-align:center;">
<div style="font-size:20px;font-weight:800;color:#D97706;font-family:var(--font-head);">10K</div>
<div style="font-size:10px;color:rgba(255,255,255,.4);text-transform:uppercase;letter-spacing:.1em;margin-top:3px;">Pro units/day</div>
</div>
</div>
</div>
<div class="cs-stack" style="margin-top:20px;">
<span class="cs-stack-tag">React</span>
<span class="cs-stack-tag">Python API</span>
<span class="cs-stack-tag">PostgreSQL</span>
<span class="cs-stack-tag">Stripe billing</span>
<span class="cs-stack-tag">JWT auth</span>
<span class="cs-stack-tag">Australian hosting</span>
</div>
</div>
</div>
</div>
</section>
<!-- MODULES -->
<section class="section section--alt" aria-labelledby="modules-heading">
<div class="container">
<p class="eyebrow">Computation Modules</p>
<h2 id="modules-heading">Five tools that do actual work</h2>
<p style="max-width:640px;color:var(--grey-600);font-size:17px;line-height:1.7;margin-bottom:0;">Each module handles a specific type of analysis. They run against the same backend API I wrote, pull from the same astronomical data, and charge compute units based on the computational cost of the request.</p>
<ul class="cs-module-list">
<li class="cs-module-item">
<strong>Ephemeris Timelines</strong>
<span>Calculates planetary aspect windows over a user-specified date range. Produces a timeline of alignment dates that Gann researchers use to identify potential turning point zones in a market.</span>
</li>
<li class="cs-module-item">
<strong>Bradley Siderograph</strong>
<span>Generates the Bradley siderograph curve, a turning point prediction model first published in 1948, with both the original and the Hannula variant. Used to overlay against price charts to identify potential reversal dates.</span>
</li>
<li class="cs-module-item">
<strong>Gann Square of Nine</strong>
<span>A geometric price level calculator based on W.D. Gann's Square of Nine method. Enter a price anchor and the module returns the full grid of geometrically significant support and resistance levels.</span>
</li>
<li class="cs-module-item">
<strong>Cycle Scanner</strong>
<span>Applies spectral analysis to price series data to identify dominant cycle periods. Surfaces repeating time structures in market data that manual chart reading would miss.</span>
</li>
<li class="cs-module-item">
<strong>Historical Analogs</strong>
<span>Pattern matching across historical price data. Given a recent market structure, it finds the closest historical matches and surfaces what followed. A research tool, not a prediction system.</span>
</li>
</ul>
</div>
</section>
<!-- HOW IT WORKS -->
<section class="section" aria-labelledby="how-heading">
<div class="container">
<p class="eyebrow">Architecture</p>
<h2 id="how-heading">How the platform is built</h2>
<p style="max-width:640px;color:var(--grey-600);font-size:17px;line-height:1.7;margin-bottom:0;">I put the calculation engine in a Python API backend, not in the browser. That's the right place for it: astronomical ephemeris computation, FFT cycle analysis, and historical pattern matching aren't jobs for JavaScript in the browser.</p>
<div class="cs-feature-grid" style="margin-top:var(--sp-6);">
<div class="cs-feature-card">
<div class="cs-feature-icon">🖥️</div>
<h4>React frontend</h4>
<p>A clean, responsive single-page application. Module inputs, result visualisations, account management, and a blog for research commentary. I built it to be fast and uncluttered. Researchers want results, not UI.</p>
</div>
<div class="cs-feature-card">
<div class="cs-feature-icon">⚙️</div>
<h4>Python computation API</h4>
<p>The backend handles all mathematical heavy lifting: ephemeris lookups, spectral analysis, geometric calculations, and pattern matching against historical data. Versioned endpoints, structured responses, and async processing for jobs that run longer.</p>
</div>
<div class="cs-feature-card">
<div class="cs-feature-icon">📊</div>
<h4>Metered compute units</h4>
<p>Every API request consumes compute units proportional to its cost. Simple lookups are cheap. Deep cycle scans over long date ranges cost more. The model is transparent: users see their usage in real time and can choose the tier that fits how they work.</p>
</div>
<div class="cs-feature-card">
<div class="cs-feature-icon">🔐</div>
<h4>Auth and accounts</h4>
<p>Authentication with JWT and session management. Users register, log in, and manage their subscription tier within the app. My admin tools let me assign tiers and adjust unit quotas without touching the database.</p>
</div>
<div class="cs-feature-card">
<div class="cs-feature-icon">💳</div>
<h4>Stripe billing</h4>
<p>Subscription billing handled by Stripe. Tier upgrades and downgrades take effect immediately. The free tier requires no payment method, so researchers can evaluate the tools before they commit to a paid plan.</p>
</div>
<div class="cs-feature-card">
<div class="cs-feature-icon">📝</div>
<h4>Research blog and announcements</h4>
<p>A blog built into the app for publishing Gann and cycle research. An announcement system for product updates and module releases. I manage both from the admin panel without any external CMS.</p>
</div>
</div>
</div>
</section>
<!-- PRICING -->
<section class="section section--alt" aria-labelledby="pricing-heading">
<div class="container">
<p class="eyebrow">Pricing Model</p>
<h2 id="pricing-heading">Tiers based on usage</h2>
<p style="max-width:640px;color:var(--grey-600);font-size:17px;line-height:1.7;margin-bottom:0;">The metered model was a deliberate choice. Assumed is that no two Gann researchers work the same way: some run a handful of checks per week, others run hundreds of queries a day building research archives. A flat subscription penalises light users. A pure pay per use model creates anxiety. Metered tiers split the difference.</p>
<div class="cs-pricing-grid">
<div class="cs-pricing-card">
<div class="tier-name">Free</div>
<div class="tier-price">$0</div>
<div class="tier-units">50 units / day</div>
<div class="tier-desc">Evaluate the tools. Run simple calculations. No payment method required.</div>
</div>
<div class="cs-pricing-card">
<div class="tier-name">Hobbyist</div>
<div class="tier-price">$19<span>/mo</span></div>
<div class="tier-units">1,000 units / day</div>
<div class="tier-desc">Regular research sessions. Enough headroom for daily analysis across multiple instruments.</div>
</div>
<div class="cs-pricing-card featured">
<div class="tier-name">Pro</div>
<div class="tier-price">$79<span>/mo</span></div>
<div class="tier-units">10,000 units / day</div>
<div class="tier-desc">Heavy research and bulk analysis. Running all five modules across multiple timeframes and instruments.</div>
</div>
<div class="cs-pricing-card">
<div class="tier-name">Lifetime</div>
<div class="tier-price">n/a</div>
<div class="tier-units">10,000 units / day</div>
<div class="tier-desc">Pro level access with no monthly billing, assigned by admin. Available to founding users.</div>
</div>
</div>
<div class="cs-honest" style="margin-top:var(--sp-6);">
<div class="cs-honest-label">On the unit model</div>
<p>Compute units aren't a trick to squeeze more money out of users. Simple requests consume very few units. The metering exists because a cycle scan over a multi year date range at high resolution costs me more to compute than a Square of Nine grid does. The model reflects what the calculation costs. Usage is visible in the dashboard at all times and resets daily. No rollover, no surprise bills.</p>
</div>
</div>
</section>
<!-- HONEST NOTE -->
<section class="section" aria-labelledby="honest-heading">
<div class="container">
<p class="eyebrow">Straight Talking</p>
<h2 id="honest-heading">What kind of product this is</h2>
<div class="cs-two-col">
<div>
<p>Crohamhurst is a specialist tool for a specific audience. It isn't trying to be a general trading platform or a charting service for retail investors. W.D. Gann methodology has a dedicated community of researchers and traders who take the approach seriously and need computation tools built for it. That's who I built this for.</p>
<p>The five modules cover the core analytical methods in the Gann tradition: planetary aspects, geometric price levels, cycle detection, and pattern recognition. They are presented as research tools. The Historical Analogs module in particular surfaces what has followed similar price structures in the past. It doesn't tell users what to do. The work of interpretation stays with the researcher.</p>
<p>I built the platform alongside my own active Gann research practice, so the modules were tested against real workflows whilst I developed them, not designed in the abstract. That matters for tools where the edge cases are what researchers hit first.</p>
</div>
<div>
<div class="cs-honest">
<div class="cs-honest-label">On the Crohamhurst name</div>
<p>Crohamhurst Observatory near Maleny in the Sunshine Coast hinterland was where Inigo Jones conducted his long range climate and crop forecasting from the early 1900s through to 1954. Jones's long range forecasts were published annually and are still considered in Australian agricultural circles. His methods, observing planetary cycles over decades, sit in the same tradition as Gann's market work. The name is my nod to that Queensland connection and to the seriousness of the research tradition the platform supports.</p>
</div>
<div class="cs-honest" style="margin-top:var(--sp-4);">
<div class="cs-honest-label">On market predictions</div>
<p>Nothing on Crohamhurst.app constitutes financial advice. The tools surface data and analysis for researchers to interpret. Gann methodology is a research discipline, not a signal service. Users are researchers who understand what they are working with and take responsibility for their own analysis.</p>
</div>
</div>
</div>
</div>
</section>
<!-- TECH STACK -->
<section class="section section--alt" aria-labelledby="stack-heading">
<div class="container">
<p class="eyebrow">Technical Details</p>
<h2 id="stack-heading">The stack</h2>
<p style="max-width:640px;color:var(--grey-600);font-size:17px;line-height:1.7;margin-bottom:var(--sp-5);">A modern React frontend, a Python backend API for computation, PostgreSQL for data persistence, Stripe for billing. Containerised and hosted on Australian infrastructure in Brisbane.</p>
<div class="cs-stack">
<span class="cs-stack-tag">React</span>
<span class="cs-stack-tag">Python</span>
<span class="cs-stack-tag">PostgreSQL</span>
<span class="cs-stack-tag">Docker</span>
<span class="cs-stack-tag">JWT auth</span>
<span class="cs-stack-tag">Stripe</span>
<span class="cs-stack-tag">Australian hosting</span>
<span class="cs-stack-tag">Let's Encrypt SSL</span>
</div>
<p style="margin-top:var(--sp-4);font-size:14px;color:var(--grey-600);">I host it on the same Brisbane server as the rest of the HELP4BIS portfolio. The containerised architecture keeps the frontend and API cleanly separated and lets me scale the computation side on its own if demand requires it.</p>
</div>
</section>
<!-- CTA -->
<section class="section">
<div class="container">
<div class="cs-cta">
<h2>Building something that requires specialist computation?</h2>
<p>Crohamhurst is an example of what's possible when the right computation engine sits behind a clean interface. If your product involves complex calculations, specialist algorithms, or pricing based on usage, we've built this before.</p>
<div class="cs-hero-actions" style="justify-content:center;">
<a href="../plugin-development.html" class="btn btn-primary btn-lg">Custom Development</a>
<a href="../contact.html" class="btn btn-secondary btn-lg">Talk to us</a>
</div>
</div>
<div style="margin-top:var(--sp-8);text-align:center;">
<a href="../index.html#portfolio" style="font-size:14px;color:var(--grey-400);">← Back to all work</a>
</div>
</div>
</section>
<!-- FOOTER -->
<footer class="footer" aria-label="Site footer">
<div class="container">
<div class="footer__grid">
<div class="footer__brand">
<img src="../assets/images/logo-cropped.jpg" alt="HELP4BIS" width="140" height="38">
<p>Managed WordPress hosting and maintenance for Australian small businesses. Brisbane based, personal service, WordPress specialist, Brisbane.</p>
<p style="margin-top:8px; font-size:12px; color:rgba(255,255,255,.25);">Dutch Digital Dynamics Pty Ltd · ABN 86 081 237 087</p>
</div>
<div class="footer__col">
<h4>Services</h4>
<ul class="footer__links">
<li><a href="../managed-wordpress.html">Tailored Website Management</a></li>
<li><a href="../care-plans.html">WP Care Plans</a></li>
<li><a href="../sos-fix.html">WP SOS Fix</a></li>
<li><a href="../ai-integration.html">AI Integration</a></li>
<li><a href="../plugin-development.html">Plugin Development</a></li>
</ul>
</div>
<div class="footer__col">
<h4>Our Work</h4>
<ul class="footer__links">
<li><a href="dayboro-au.html">Dayboro.au</a></li>
<li><a href="gardenbuddy-au.html">GardenBuddy.au</a></li>
<li><a href="tawnytrails.html">Tawny Trails</a></li>
<li><a href="rds-ink.html">Running Duck Studio</a></li>
<li><a href="localbuddy-au.html">LocalBuddy</a></li>
<li><a href="m8chat-au.html">M8Chat</a></li>
<li><a href="nightcap-nm.html">Nightcap Natural Medicine</a></li>
<li><a href="crohamhurst-app.html">Crohamhurst</a></li>
</ul>
</div>
<div class="footer__col">
<h4>Contact</h4>
<ul class="footer__links">
<li><a href="mailto:project@help4bis.com">project@help4bis.com</a></li>
<li><a href="../contact.html">Submit a Brief</a></li>
<li><a href="../sos-fix.html">Emergency Fix</a></li>
</ul>
<p style="margin-top:16px; font-size:12px; color:rgba(255,255,255,.3);">Brisbane, Queensland<br>Response within 24 business hours</p>
</div>
</div>
<div class="footer__bottom">
<span>© 2026 HELP4BIS, a trading name of Dutch Digital Dynamics Pty Ltd · ABN 86 081 237 087</span>
<span><a href="../privacy.html">Privacy</a> · <a href="../terms.html">Terms</a></span>
</div>
</div>
</footer>
<button id="back-to-top" aria-label="Back to top">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="18 15 12 9 6 15"/></svg>
</button>
<script src="../assets/js/main.js"></script>
<script src="/analytics/tracker.js" defer></script>
</body>
</html>