<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Will Gittens</title>
    <description>The latest articles on DEV Community by Will Gittens (@willgittens).</description>
    <link>https://dev.to/willgittens</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4232662%2F30e582d4-dd19-48c8-aa17-9fa9abcb7a9e.jpeg</url>
      <title>DEV Community: Will Gittens</title>
      <link>https://dev.to/willgittens</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/willgittens"/>
    <language>en</language>
    <item>
      <title>Say Hello to FinKore. Rules Are Boring (But Necessary).</title>
      <dc:creator>Will Gittens</dc:creator>
      <pubDate>Sat, 07 Nov 2026 19:10:47 +0000</pubDate>
      <link>https://dev.to/willgittens/say-hello-to-finkore-rules-are-boring-but-necessary-l58</link>
      <guid>https://dev.to/willgittens/say-hello-to-finkore-rules-are-boring-but-necessary-l58</guid>
      <description>&lt;p&gt;I've been developing software for over 25 years. I've worked with old COBOL systems, modern web applications, financial platforms, and pretty much every generation of technology in between.&lt;/p&gt;

&lt;p&gt;And there's something that has always bothered me.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why the hell are we still rewriting the same financial rules?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every time someone starts a new fintech, ERP, banking application, or financial SaaS, the story repeats itself.&lt;/p&gt;

&lt;p&gt;How should we round money? What happens when two operations modify the same financial record? Can an approval become invalid? What should happen when a transaction fails halfway through? How do we preserve audit evidence?&lt;/p&gt;

&lt;p&gt;Different companies. Different architectures. Different programming languages.&lt;/p&gt;

&lt;p&gt;Same fundamental questions.&lt;/p&gt;

&lt;p&gt;And somehow, we keep answering them from scratch.&lt;/p&gt;

&lt;h2&gt;
  
  
  So I started digging.
&lt;/h2&gt;

&lt;p&gt;I went back to old books, financial systems, legacy implementations, regulations, and years of experience working with financial software.&lt;/p&gt;

&lt;p&gt;Looking for the rules that should never have been reinvented in the first place.&lt;/p&gt;

&lt;p&gt;What I found wasn't a shortage of solutions. It was a shortage of shared, precise, verifiable foundations.&lt;/p&gt;

&lt;p&gt;We have countless libraries, frameworks, platforms, and architectures.&lt;/p&gt;

&lt;p&gt;But how often do we agree on what the correct financial behavior should actually be?&lt;/p&gt;

&lt;p&gt;That's where FinKore started.&lt;/p&gt;

&lt;h2&gt;
  
  
  Meet FinKore.
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://finkore.dev" rel="noopener noreferrer"&gt;FinKore&lt;/a&gt; is an open-source initiative to define a common foundation for financial software.&lt;/p&gt;

&lt;p&gt;It's not another framework or SaaS.&lt;/p&gt;

&lt;p&gt;It's not an Lib you install and magically solve your financial problems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FinKore is about defining the rules before writing the code.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The idea is simple: fundamental financial behavior should be documented, explicit, testable, and independent of programming languages.&lt;/p&gt;

&lt;p&gt;Your application might be written in TypeScript, Java, Go, or something that hasn't even been invented yet.&lt;/p&gt;

&lt;p&gt;The underlying financial rules shouldn't change just because your technology does.&lt;/p&gt;

&lt;h2&gt;
  
  
  So Rules first. Code after.
&lt;/h2&gt;

&lt;p&gt;FinKore is organized around three fundamental layers:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CoreDoc -&amp;gt; Specifications -&amp;gt; Conformance&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CoreDoc&lt;/strong&gt; establishes the financial principles and obligations. This is where we explain &lt;em&gt;why&lt;/em&gt; a rule exists.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Specifications&lt;/strong&gt; translate those principles into precise technical requirements, defining expected behavior, constraints, and failure conditions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conformance&lt;/strong&gt; provides portable test cases with inputs and expected results, allowing implementations to be evaluated against the same requirements.&lt;/p&gt;

&lt;p&gt;That's the idea behind FinKore.&lt;/p&gt;

&lt;p&gt;Not to tell you which framework to use, but to establish what behavior your implementation should guarantee.&lt;/p&gt;

&lt;h2&gt;
  
  
  Five domains. One shared foundation.
&lt;/h2&gt;

&lt;p&gt;FinKore currently focuses on five foundational domains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Money:&lt;/strong&gt; Exact calculations, currency, rounding, allocation, and serialization.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Workflow:&lt;/strong&gt; Valid state transitions, lifecycle behavior, and rejection rules.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit:&lt;/strong&gt; Preserving evidence of what happened, who acted, and what must remain traceable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Approvals:&lt;/strong&gt; Decisions, conditions, approval validity, and the facts behind authorization.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Financial Entities:&lt;/strong&gt; Identity, validation, revisions, and controlled changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are not complete banking products or accounting systems. They are building blocks that financial applications can use to establish predictable behavior.&lt;/p&gt;

&lt;p&gt;And importantly, FinKore doesn't decide your business policies for you.&lt;/p&gt;

&lt;p&gt;It defines the foundation. Your application defines its own business rules, architecture, and integrations.&lt;/p&gt;

&lt;h2&gt;
  
  
  What about AI?
&lt;/h2&gt;

&lt;p&gt;If an AI doesn't know which rounding policy applies, when an approval expires, or how an operation must behave after rejection, it will make assumptions.&lt;/p&gt;

&lt;p&gt;And assumptions are dangerous in financial software.&lt;/p&gt;

&lt;p&gt;FinKore provides explicit specifications and machine-readable operation contracts that can help developers and AI-assisted workflows work from defined expectations instead of inventing behavior.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI should implement financial rules, not invent them.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  I'm not trying to build this alone.
&lt;/h2&gt;

&lt;p&gt;This is probably the most important part.&lt;/p&gt;

&lt;p&gt;I don't believe one developer, one company, or even one engineering team has all the answers.&lt;/p&gt;

&lt;p&gt;A developer understands implementation constraints. An accountant understands financial obligations. An auditor understands evidence and controls. A financial architect understands how these requirements interact across systems.&lt;/p&gt;

&lt;p&gt;FinKore needs all of these perspectives.&lt;/p&gt;

&lt;p&gt;That's why the project is open-source and community-driven.&lt;/p&gt;

&lt;p&gt;I want people to challenge the specifications, find missing scenarios, question assumptions, propose edge cases, and help make the foundation stronger.&lt;/p&gt;

&lt;p&gt;You don't need to contribute code.&lt;/p&gt;

&lt;p&gt;Sometimes a difficult question from an auditor is more valuable than a thousand lines of implementation.&lt;/p&gt;

&lt;h2&gt;
  
  
  We're just getting started.
&lt;/h2&gt;

&lt;p&gt;FinKore already has published specifications, portable conformance cases, documentation, and a growing set of discussions about financial behavior.&lt;/p&gt;

&lt;p&gt;But I see this as the beginning, not the finish line.&lt;/p&gt;

&lt;p&gt;I want FinKore to become a shared reference that developers can rely on when building financial products, regardless of the technology they choose.&lt;/p&gt;

&lt;p&gt;Not because everyone should write the same code.&lt;/p&gt;

&lt;p&gt;But because we shouldn't have to reinvent the same financial foundations forever.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your product may be unique. Your financial rules don't have to be.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you've worked with financial software, I'd love to hear what rules you've had to implement over and over again.&lt;/p&gt;

&lt;p&gt;And if you disagree with something in FinKore, even better. Open a discussion.&lt;/p&gt;

&lt;p&gt;That's how we improve it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explore the project:&lt;/strong&gt; &lt;a href="https://finkore.dev" rel="noopener noreferrer"&gt;https://finkore.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/willgittens/FinKore" rel="noopener noreferrer"&gt;https://github.com/willgittens/FinKore&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Define once. Build many times.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>fintech</category>
      <category>architecture</category>
      <category>softwareengineering</category>
    </item>
  </channel>
</rss>
