<?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: h1d3mun3</title>
    <description>The latest articles on DEV Community by h1d3mun3 (@h1d3mun3).</description>
    <link>https://dev.to/h1d3mun3</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3846378%2Ff4e13998-43f0-40f0-ac2d-4f028df74f2b.jpg</url>
      <title>DEV Community: h1d3mun3</title>
      <link>https://dev.to/h1d3mun3</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/h1d3mun3"/>
    <language>en</language>
    <item>
      <title>Building a "Wevo" - Modeling a Real world promise.</title>
      <dc:creator>h1d3mun3</dc:creator>
      <pubDate>Sun, 29 Mar 2026 08:34:42 +0000</pubDate>
      <link>https://dev.to/h1d3mun3/building-a-wevo-modeling-a-real-world-promise-in-a-app-3ljd</link>
      <guid>https://dev.to/h1d3mun3/building-a-wevo-modeling-a-real-world-promise-in-a-app-3ljd</guid>
      <description>&lt;p&gt;Hi guys :p 👯‍♂&lt;/p&gt;

&lt;p&gt;Welcome to Wevo series.&lt;/p&gt;

&lt;p&gt;As I introduced in my previous post, I built Wevo.&lt;br&gt;
&lt;a href="https://dev.to/h1d3mun3/introducing-wevo-building-a-trust-history-app-with-swift-vapor-340g"&gt;https://dev.to/h1d3mun3/introducing-wevo-building-a-trust-history-app-with-swift-vapor-340g&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this series, I'll describe how Wevo is built.&lt;/p&gt;

&lt;p&gt;Let's Dive in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Motivation
&lt;/h2&gt;

&lt;p&gt;First, let me explain why I built Wevo.&lt;/p&gt;

&lt;p&gt;As I posted before, I believe our trust history and related information should belong with us.&lt;/p&gt;

&lt;p&gt;Trust is built from many properties.&lt;br&gt;
History, Details, reactions, date... and so on.&lt;/p&gt;

&lt;p&gt;So, I believe these information should be in our hands.&lt;/p&gt;

&lt;p&gt;But in reality, this isn't the case.&lt;/p&gt;

&lt;p&gt;Our trust history is locked inside platforms.&lt;/p&gt;

&lt;p&gt;There are many options to create trust in each other.&lt;br&gt;
(for example, Slack, linkedin, gmail, X(formerly Twitter), facebook..)&lt;/p&gt;

&lt;p&gt;If you made a promise on a Slack, and if you want to move promise history to gmail?&lt;/p&gt;

&lt;p&gt;that's not. you can't move your trust history to other services.&lt;/p&gt;

&lt;p&gt;This is why I built Wevo.&lt;/p&gt;

&lt;p&gt;I also had a personal problem: I couldn't remember all the appointments properly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Make a "Real world" promise model
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Organize the flow of the agreement
&lt;/h3&gt;

&lt;p&gt;Next, let's talk about how I made a promise model.&lt;/p&gt;

&lt;p&gt;In the real world, many promises follow this sequence.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;One person proposes to another.&lt;/li&gt;
&lt;li&gt;The counterparty accepts the proposal.&lt;/li&gt;
&lt;li&gt;Both parties fulfill their duties.&lt;/li&gt;
&lt;li&gt;The promise is fulfilled.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So, I need to create a model that can at least represent this much.&lt;/p&gt;

&lt;p&gt;But, not every promise is fulfilled.&lt;br&gt;
Some promises are not fulfilled due to some reason.&lt;/p&gt;

&lt;p&gt;If a promise is not fulfilled, it follows this sequence instead:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;One person proposes to another.&lt;/li&gt;
&lt;li&gt;The counterparty accepts the proposal.&lt;/li&gt;
&lt;li&gt;One of them didn't fulfill their duty.&lt;/li&gt;
&lt;li&gt;The promise is not fulfilled.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In addition, this can also happen.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;One person proposes to another.&lt;/li&gt;
&lt;li&gt;The counterparty doesn't accept the proposal.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I also need to create models that can represent these aspects.&lt;/p&gt;

&lt;h3&gt;
  
  
  Naming
&lt;/h3&gt;

&lt;p&gt;After organizing the promise sequences, I needed to name each state.&lt;/p&gt;

&lt;p&gt;I named each action as follows.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;proposed&lt;/td&gt;
&lt;td&gt;One person proposes to another&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;signed&lt;/td&gt;
&lt;td&gt;The counterparty accepts the proposal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;parted&lt;/td&gt;
&lt;td&gt;One of them rejects the proposal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;honored&lt;/td&gt;
&lt;td&gt;Mark promise as fulfilled&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;And named each state as follows.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;State&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;proposed&lt;/td&gt;
&lt;td&gt;Created after proposal. Counterparty has not yet signed.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;signed&lt;/td&gt;
&lt;td&gt;Counterparty has signed.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dissolved&lt;/td&gt;
&lt;td&gt;Counterparty rejected the proposal, or one party withdrew after signing.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;completed&lt;/td&gt;
&lt;td&gt;Both parties marked the promise as honored.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Next Post
&lt;/h2&gt;

&lt;p&gt;In next post, I will explain how to express agreement in a promise and how to verify its status.&lt;/p&gt;

&lt;p&gt;Cheers! 🤙&lt;br&gt;
Happy coding~ 💻😙💻&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>swift</category>
      <category>ios</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Introducing "Wevo": Building a trust history app with Swift &amp; Vapor 🖋️</title>
      <dc:creator>h1d3mun3</dc:creator>
      <pubDate>Fri, 27 Mar 2026 15:12:48 +0000</pubDate>
      <link>https://dev.to/h1d3mun3/introducing-wevo-building-a-trust-history-app-with-swift-vapor-340g</link>
      <guid>https://dev.to/h1d3mun3/introducing-wevo-building-a-trust-history-app-with-swift-vapor-340g</guid>
      <description>&lt;p&gt;Hello everyone :p&lt;br&gt;
I'm h1d3mun3, an iOS Developer from Japan.🍎📱&lt;/p&gt;

&lt;p&gt;I've made my repository to public just a moment ago. 🎉&lt;br&gt;
It's designed to create portable, reliable, and flexible trust history in each other. 🖋️&lt;/p&gt;

&lt;p&gt;Trust, in most services, is stored inside the service itself. Your ratings, your agreements, your track record — they live in someone else's database. When the service shuts down, or changes its rules, or you simply move on, that history disappears with it.&lt;/p&gt;

&lt;p&gt;Wevo is an exploration of a different approach. Rather than computing a trust score, Wevo records what happened: proposals made, agreements reached, signatures given. Each event is cryptographically signed by the parties involved, stored locally on your device, and owned by you — not by a platform.&lt;/p&gt;

&lt;p&gt;Built with Swift and Vapor.&lt;br&gt;
I'd love to hear your thoughts on the architecture.&lt;br&gt;
Feel free to check out the code!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/h1d3mun3/wevo" rel="noopener noreferrer"&gt;https://github.com/h1d3mun3/wevo&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/h1d3mun3/wevo-space" rel="noopener noreferrer"&gt;https://github.com/h1d3mun3/wevo-space&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Happy coding!&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;scrennshot1&lt;/th&gt;
&lt;th&gt;scrennshot2&lt;/th&gt;
&lt;th&gt;scrennshot3&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flcy126e0mkn0j8ek6u8i.PNG" alt=" " width="800" height="1737"&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frky6gt03lmqw5zhqrqwg.PNG" alt=" " width="800" height="1737"&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F47i5djnxyfbo70indxrw.PNG" alt=" " width="800" height="1737"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
      <category>showdev</category>
      <category>opensource</category>
      <category>swift</category>
      <category>ios</category>
    </item>
  </channel>
</rss>
