<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Cheesecake Labs Blog | Category | Development</title>
	<atom:link href="https://blog-stg.cheesecakelabs.com/category/engineering/feed/" rel="self" type="application/rss+xml" />
	<link></link>
	<description>Top web &#38; mobile app design and development company focused on reinventing collaborative development. We develop iOS, Android and Web applications in partnership with the best USA and worldwide companies.</description>
	<lastBuildDate>Wed, 22 Apr 2026 19:52:12 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.5</generator>

<image>
	<url>https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2022/06/cheesecake-labs-favicon-blue.png</url>
	<title>Cheesecake Labs Blog | Category | Development</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>17000 characters</title>
		<link>https://blog-stg.cheesecakelabs.com/17000-characters/</link>
		
		<dc:creator><![CDATA[Lucas Cunha]]></dc:creator>
		<pubDate>Wed, 22 Apr 2026 19:31:08 +0000</pubDate>
				<category><![CDATA[Engineering]]></category>
		<guid isPermaLink="false">https://blog-stg.cheesecakelabs.com/</guid>

					<description><![CDATA[<p>Most AI product teams spend months debating which model to use. The teams that actually ship reliable products at scale are thinking about a different question entirely: what happens when that model fails, costs too much, or responds too slowly, and how does that reality shape the way the product is priced? Model fallback and [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://blog-stg.cheesecakelabs.com/17000-characters/">17000 characters</a> appeared first on <a rel="nofollow" href="https://blog-stg.cheesecakelabs.com">Cheesecake Labs</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Most AI product teams spend months debating which model to use. The teams that actually ship reliable products at scale are thinking about a different question entirely: <strong>what happens when that model fails, costs too much, or responds too slowly, and how does that reality shape the way the product is priced?</strong></p>




<p>Model fallback and AI pricing strategy are not engineering details. They are product decisions with direct consequences for user trust, retention, and revenue sustainability. Getting them wrong does not just create technical debt; it creates business risk.</p>



<p>This article walks through a five-layer framework derived from real production experience building AI-powered products, covering how intelligent routing, fallback architecture, financial observability, value-based pricing, and guardrails work together as a coherent product and engineering strategy.</p>



<p><strong>Building an AI product and looking for experienced partners?</strong> <a href="https://cheesecakelabs.com/services/ai-development" target="_blank" rel="noreferrer noopener">Explore Cheesecake Labs&#8217; AI development services</a></p>



<h2 class="wp-block-heading"><strong>Why most AI products fail before they scale</strong></h2>



<p>The gap between a working AI prototype and a reliable production product is wider than most teams expect. Industry data makes this visible: <strong>roughly 40% of LLM outputs,</strong> according to <a href="https://optimusai.ai/why-40-of-llm-outputs-are-unreliable-llmops/" target="_blank" rel="noreferrer noopener">OptimusAI</a>, are not consistently reliable in production environments, and around <strong>95% of AI pilots, </strong>according to <a href="https://www.typedef.ai/resources/llm-adoption-statistics" target="_blank" rel="noreferrer noopener">Typedef.ai&#8217;s study</a> &#8220;13 LLM Adoption Statistics&#8221;<strong>, </strong>stall before reaching scale — not because the models underperform, but because the surrounding infrastructure is not designed to sustain real usage conditions.</p>



<p>The root cause is almost always structural. Teams build features that work in isolation but lack the operational layers needed to handle cost variability, model failures, and unpredictable user behavior at scale. When those layers are absent, AI products become expensive to operate, fragile under load, and impossible to price sustainably.</p>



<p>The solution is not a better model. It is a better architecture — one that treats model fallback and pricing as first-class product concerns from day one.</p>



<h2 class="wp-block-heading"><strong>The five-layer framework: from feature to reliable product</strong></h2>



<p>The framework below reflects how production AI systems need to be structured when reliability, cost control, and user trust are non-negotiable requirements. Each layer addresses a specific failure mode that appears consistently <strong>across AI product development.</strong></p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>&#8220;We don&#8217;t sell tokens. We sell reliable solutions. The architecture must reflect that.&#8221;</em></p>
</blockquote>



<h3 class="wp-block-heading">Layer 1: Intelligent model routing: the 20x cost problem</h3>



<p>The single most impactful architectural decision in an AI product is also the most commonly overlooked: not every task requires the same model.</p>



<p>In practice, cost differences between the cheapest and most expensive <strong>commercially available models can reach 20x or more</strong>. Using Claude Sonnet 4.5 at $3.00 per million input tokens for every request — including simple summaries, data extractions, and short classifications — when a model at $0.15 per million tokens handles those tasks equally well is not a quality decision. It is a marginal decision made by default, and it is unsustainable.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" src="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2026/03/product-framework-3.png" alt="" class="wp-image-13541"/></figure></div>


<p>A well-designed routing layer dynamically assigns each task to the most appropriate model based on complexity, balancing three variables simultaneously: cost, latency, and output quality.</p>



<h4 class="wp-block-heading">A real-world routing policy looks like this:</h4>



<ul class="wp-block-list">
<li><strong>Default model (80% of tasks):</strong> A lightweight, fast model handles summarization, extraction, and tool selection for simple interactions and basic Q&amp;A. Cheap, fast, and reliable for well-scoped tasks.</li>



<li><strong>Premium model (upgrade path):</strong> A more capable model is invoked when task complexity crosses a defined threshold — multi-step planning, complex tool orchestration, reasoning-intensive automation workflows.</li>



<li><strong>Economic fallback:</strong> An alternative provider&#8217;s model enters when the primary infrastructure fails or when budget thresholds are reached.</li>
</ul>



<p>Latency compounds the cost argument. Higher-capability models are slower — not marginally, but meaningfully. A <strong>user waiting 30+ seconds </strong>for a response to a simple request will not stay. They will reload the page, assume the product is broken, and lose confidence. Routing decisions affect both the income statement and the product experience.</p>



<p>At 20x cost variation, intelligent routing is not an optimization. It is a product survival decision.</p>



<h3 class="wp-block-heading">Layer 2: Model fallback and redundancy: designing for inevitable failure</h3>



<p>Rate limits, server errors, and infrastructure outages are not edge cases. They are operational facts for any AI product running in production. The architecture question is not whether failures will happen — it is whether the product recovers automatically and transparently, or exposes failures directly to users.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" src="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2026/03/product-framework-2-4.jpg" alt="types of AI" class="wp-image-13537"/></figure></div>


<p>Most developers design fallbacks like a ladder: if Model A fails, try a slightly better Model A. In a true production environment, this can lead to outages.</p>



<p>A production-grade fallback architecture is not a linear list; it is a matrix. You must solve for two different types of failure simultaneously: loss of service and loss of quality.</p>



<ul class="wp-block-list">
<li><strong>Infrastructure Diversity:</strong> This solves for connectivity. If Provider A returns a 5xx or a regional outage occurs, your architecture must immediately jump to an entirely different infrastructure (Provider B or a self-hosted instance).</li>



<li><strong>Model Tiers: </strong>This solves for logic. If the primary model (low-cost) fails to parse a complex prompt or hits a token limit, you escalate to a &#8220;Frontier&#8221; model (high-capability) to maintain the quality of the output.</li>
</ul>



<h4 class="wp-block-heading">A robust system operates on a defined execution order that balances these two pillars, for example:</h4>



<ol class="wp-block-list">
<li>Primary model (default, lowest cost, primary provider)</li>



<li>Upgraded model (same provider, higher capability)</li>



<li>Legacy model (same provider, maintained for fallback)</li>



<li>Cross-provider model (alternative infrastructure, eliminates single point of failure)</li>



<li>Last-resort model (emergency fallback, minimal cost)</li>
</ol>



<p>When a model returns an HTTP 429 (rate limit) or a 5xx server error, the system triggers a <strong>Circuit Break </strong>pattern. The failing model enters a quarantine window, starting at 10 minutes and utilizing <strong>Exponential Backoff</strong> in production-grade systems, during which the system automatically routes requests to the next model in the sequence. After the cooldown period, the original model is retested automatically, since many failures are transient.</p>



<p><strong>Critical distinction: not every error type warrants a fallback.</strong> When input exceeds a model&#8217;s context window, routing to a smaller model will produce the same failure — smaller models have narrower context limits, not wider ones. In these cases, the correct response is a clear user-facing message with a meaningful next step, such as opening a new conversation.</p>



<p>Multi-provider architecture adds a qualitatively different layer of resilience. By distributing across two independent infrastructure providers (for example, AWS Bedrock as primary and Groq as fallback), the system eliminates its single point of failure. If one provider goes down entirely, traffic shifts automatically without any user interruption.</p>



<figure class="wp-block-pullquote"><blockquote><p>The principle that guides this entire layer: <strong>the &#8220;magic&#8221; of an AI product is not that the model is always perfect — it is that the product never stops working.</strong></p></blockquote></figure>



<p>From a product perspective, fallback is also a pricing conversation. When model pricing changes without notice — which LLM providers do regularly — teams without fallback architecture face a binary choice: absorb the cost increase or break the product. Teams with a tested fallback chain can absorb that disruption in minutes.</p>



<h3 class="wp-block-heading">Layer 3: Financial observability: you cannot price what you cannot measure</h3>



<p>One of the most consequential gaps in early-stage AI products is the absence of cost visibility at the operational level. LLM-based systems have dynamic, per-token pricing across multiple models and providers. Without deliberate tracking, costs accumulate invisibly until an invoice makes the problem undeniable.</p>



<p>Financial observability means tracking cost not just per API call, but per operation type — per feature, per workflow, per interaction. Every distinct product action should have its cost attributed individually: chat messages, task planning, tool selection, automation runs, and report generation.</p>



<p>This granularity transforms how product and business decisions get made.</p>



<p><strong>A real consequence of implementing this:</strong> When a team enabled operation-level cost tracking on an automation feature, they discovered the feature was costing $4 to 10 per execution — significantly more than the monthly subscription price they had been planning to charge.</p>



<p>Without that data, they would have launched a feature that actively eroded margins. With it, they redesigned the pricing model, shifting from monthly to weekly billing, to align the user-facing price with the actual delivery cost.</p>



<h4 class="wp-block-heading">What to track per operation:</h4>



<ul class="wp-block-list">
<li>Input and output token counts</li>



<li>Model used and provider</li>



<li>Operation type and feature context</li>



<li>Estimated cost per call</li>



<li>Number of agent turns to complete the task</li>
</ul>



<p><strong>Infrastructure consideration:</strong> reporting queries should not compete with production traffic. A practical implementation logs token usage to a primary operational database (for real-time tracking) while syncing to a dedicated analytics replica on write. This ensures reporting never degrades the user experience.</p>



<p>Prompt caching adds a complementary cost reduction lever. For long, static, frequently repeated prompts — such as those describing available tools, system configurations, or data models — caching can reduce token costs by up to 90% by serving stored results rather than re-invoking the model. This is particularly valuable for automation workflows where the same system context is sent repeatedly across different user sessions.</p>



<p>Financial observability is not just cost control infrastructure. It is the data layer that makes a pricing strategy possible.</p>



<h3 class="wp-block-heading">Layer 4: AI pricing strategy: charge for value, not for tokens</h3>



<p>How an AI product prices externally should reflect how it is structured internally. And the most common structural mistake is pricing based on token consumption.</p>



<p>Token-based pricing has a predictable failure mode: it transfers the complexity and unpredictability of model economics directly to the user. Non-technical audiences — which is most end users — cannot evaluate whether a 2,000-token response represents good value. They do not know what a token is, and they should not need to. Exposing that complexity creates friction, reduces adoption, and misaligns perceived value with actual product utility.</p>



<p><strong>Value-based pricing replaces token consumption with task completion as the billing unit.</strong> Users pay for what they receive: outcomes, reports, automations, and summaries.</p>



<h4 class="wp-block-heading">Real cost data from production systems illustrates the pricing math:</h4>



<p>For a task with 2,000 input tokens and 500 output tokens:</p>



<ul class="wp-block-list">
<li>Claude Sonnet 4.5: ~$0.0135 per task</li>



<li>Claude Haiku 4.5: ~$0.0045 per task (3x cheaper)</li>



<li>GPT-OSS 120B via Groq: ~$0.0006 per task (22x cheaper)</li>
</ul>



<p>An automation that runs once per business day, using a premium model, costs approximately $5-10 per execution; $100-200 per month at full usage. That unit economics reality should drive how the feature is packaged and priced before launch, not after users start complaining about unexpected charges.</p>



<h3 class="wp-block-heading">Practical pricing principles for AI products:</h3>



<ul class="wp-block-list">
<li>Price by task, outcome, or workflow completion, not by token count or API call</li>



<li>Build in a <strong>20-30% cost buffer</strong> to absorb model pricing changes without margin erosion</li>



<li>Review pricing quarterly and whenever a provider updates its rate structure</li>



<li>When users can select model quality (fast vs. best), communicate the cost difference explicitly at the point of selection</li>



<li>Consider frequency packaging: weekly billing for high-cost daily automations often converts better than monthly billing at the same total price</li>
</ul>



<p>The core principle: the price of a feature should reflect the value it delivers — the task resolved, not the cost of the infrastructure that processed it.</p>



<h3 class="wp-block-heading">Layer 5: Guardrails and trust: where safety becomes product quality</h3>



<p>Guardrails are the layer that makes AI products safe to use in production — for users, for the business, and for compliance purposes. They operate in two directions simultaneously.</p>



<p><strong>Input guardrails</strong> intercept problematic requests before they reach the model. This includes filtering out PII that should not be sent to external LLM providers, blocking queries outside the product&#8217;s defined scope (avoiding unnecessary token spend on out-of-scope requests), and enforcing rate limits at the user and organization level to prevent margin erosion from power users.</p>



<p><strong>Output guardrails</strong> validate what the model returns. This means checking for policy violations, inappropriate content, data that should not be surfaced, and brand consistency failures. A guardrail that catches a competitor&#8217;s name appearing in a brand&#8217;s customer-facing chatbot response is not a minor technical feature — it is reputation protection.</p>



<p>A second model call can serve as an automated self-check: a separate invocation that evaluates response quality and compliance without the context of the original conversation. This LLM-as-a-judge pattern enables scalable quality auditing that would be impossible to do manually at any meaningful volume.</p>



<p><strong>Guardrail telemetry is as important as the guardrails themselves.</strong> Teams should track:</p>



<ul class="wp-block-list">
<li>Block rate by reason (safety violations vs. budget limits vs. scope violations)</li>



<li>False positive rate (legitimate requests incorrectly blocked)</li>



<li>Context limit hits (users running into conversation length ceilings)</li>



<li>Data leak incidents</li>
</ul>



<p>The user-facing side of guardrails matters as much as the technical implementation. When a limit is reached, the product should explain what happened and offer a meaningful alternative — not show a generic error. &#8220;You&#8217;ve reached the context limit for this conversation. Open a new chat to continue&#8221; is a product experience. A blank screen or an unexplained error is a trust problem.</p>



<p>Budget guardrails also create the conditions for transparent pricing. When users understand that each interaction costs a defined number of credits, and when limits are communicated clearly before they are reached, the pricing model feels fair rather than arbitrary.</p>



<h2 class="wp-block-heading"><strong>The performance vs. quality trade-off: what teams rarely discuss honestly</strong></h2>



<p>There is a real and unavoidable trade-off in AI model selection that product teams often avoid: <strong>higher-quality models are slower, and that slowness is not accidental — it is structural.</strong></p>



<p>When a model enters &#8220;thinking mode&#8221; — the extended reasoning process that produces higher-quality outputs — it is, by design, taking more time. The quality is inversely proportional to the speed of token generation. Asking a team to find a model that is simultaneously the cheapest, fastest, and highest-quality is asking for something that does not exist today.</p>



<p>This creates a genuine product decision: which tasks justify the latency cost of a premium model, and which tasks are better served by a fast, cheap model that responds in under two seconds?</p>



<p>The answer is rarely &#8220;use the premium model for everything.&#8221; The answer is intelligent routing, tested and calibrated against real usage data — starting with the best model available, stepping down until quality degrades unacceptably, and locking that configuration in code.</p>



<p>The teams that get this right do not debate model selection philosophically. They instrument their systems, measure outcomes, and let data drive the routing policy.</p>



<h2 class="wp-block-heading"><strong>Common anti-patterns that undermine AI product sustainability</strong></h2>



<p>The same failure modes appear repeatedly across AI product teams, and most of them are architectural decisions made too early or not made at all.</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2026/03/product-framework-1-1200x430.png" alt="Anti-Pattern
What It Costs
Better Practice
Always using the best model
Inflated costs, high latency for simple tasks
Intelligent routing: right model for each task type
Token-based pricing
User confusion, poor adoption, misaligned value
Value-based pricing by task or outcome
Hiding fallback failures
Eroded trust, perceived instability
Transparent microcopy: &quot;ensuring a fast response.&quot;
No budget limits per user or team
Single power-user drains the margin
Hard and soft limits per workspace
No logs or replay capability
Cannot debug hallucinations or optimize prompts
Full observability: input, output, model, cost" class="wp-image-13535"/></figure>



<p>Avoiding these patterns at the architecture phase is dramatically cheaper than refactoring around them after a product is in the hands of paying customers.</p>



<h2 class="wp-block-heading"><strong>Key Takeaways</strong></h2>



<ul class="wp-block-list">
<li><strong>Model fallback is a product decision</strong>, not just a reliability pattern, but it directly determines whether pricing is sustainable when infrastructure fails or changes</li>



<li><strong>Intelligent routing at 20x cost variance</strong> is the difference between a product with healthy margins and one that bleeds token costs at scale</li>



<li><strong>Financial observability at the operation level</strong> is what makes pricing strategy possible — without it, teams price on assumptions and discover the reality in their cloud bills</li>



<li><strong>Value-based pricing outperforms token-based pricing</strong> for adoption, retention, and margin sustainability across every user segment</li>



<li><strong>Guardrails protect brand trust and compliance</strong>, not just infrastructure costs, and their UX matters as much as their technical implementation</li>



<li><strong>Robust architecture is not just about reducing cost</strong>: it is a lever for revenue, retention, and long-term product viability</li>
</ul>



<h2 class="wp-block-heading"><strong>Building a Private AI Notetaking Platform That Powers Secure Workflows: Knapsack case</strong></h2>



<p>Cheesecake Labs partnered with Knapsack to re-architect their AI platform — evolving it from a fully local prototype to a hybrid, compliance-first system ready for enterprise scale.</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2026/03/product-framework-2-1200x554.jpg" alt="" class="wp-image-13539"/></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>&#8220;We couldn&#8217;t have solved some of the complex problems to deliver this product without the support of Cheesecake Labs&#8217; team.&#8221;</em></p>



<p></p>



<p>Mark Heynen — Co-Founder &amp; Chief Product Officer, Knapsack</p>
</blockquote>



<figure class="wp-block-image size-full"><a href="http://cheesecakelabs.com/services" target="_blank" rel=" noreferrer noopener"><img decoding="async" src="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2026/03/product-framework-4.png" alt="" class="wp-image-13543"/></a></figure>



<h2 class="wp-block-heading"><strong>Build AI products that last</strong></h2>



<p>The gap between an AI prototype and a production-grade AI product comes down to decisions made about model fallback, routing, observability, and pricing—long before most teams even consider them.</p>



<p>At Cheesecake Labs, we help product teams make these decisions right from the start by building AI systems that are resilient, cost-aware, and designed to scale sustainably.</p>



<figure class="wp-block-image size-large"><a href="https://cheesecakelabs.com/services/ai-development" target="_blank" rel=" noreferrer noopener"><img decoding="async" src="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2023/06/legacy-app-ckl-1200x409.jpg" alt="" class="wp-image-13491"/></a></figure>



<p></p>
<p>The post <a rel="nofollow" href="https://blog-stg.cheesecakelabs.com/17000-characters/">17000 characters</a> appeared first on <a rel="nofollow" href="https://blog-stg.cheesecakelabs.com">Cheesecake Labs</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How to use Stellar’s Soroban to write a bond smart contract</title>
		<link>https://blog-stg.cheesecakelabs.com/how-to-use-stellars-soroban-to-write-a-bond-smart-contract/</link>
		
		<dc:creator><![CDATA[Salatiel Silva de Queiroz Lima]]></dc:creator>
		<pubDate>Tue, 11 Apr 2023 19:49:47 +0000</pubDate>
				<category><![CDATA[Engineering]]></category>
		<guid isPermaLink="false">https://blog-stg.cheesecakelabs.com/</guid>

					<description><![CDATA[<p>Stellar&#8217;s new smart contracts platform, Soroban, gives the Stellar network more flexibility to support various use cases. With it, it’s possible to implement custom business logic on-chain that was previously limited to classic operations. In this post, we’ll show you how to create a Stellar smart contract and discuss how best to use Stellar’s Soroban [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://blog-stg.cheesecakelabs.com/how-to-use-stellars-soroban-to-write-a-bond-smart-contract/">How to use Stellar’s Soroban to write a bond smart contract</a> appeared first on <a rel="nofollow" href="https://blog-stg.cheesecakelabs.com">Cheesecake Labs</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Stellar&#8217;s new smart contracts platform, <a href="https://soroban.stellar.org/">Soroban</a>, gives the <a href="https://cheesecakelabs.com/blog/stellar-network/" target="_blank" rel="noreferrer noopener">Stellar network</a> more flexibility to support various use cases. With it, it’s possible to implement custom business logic on-chain that was previously limited to classic operations. </p>



<p>In this post, we’ll show you how to create a Stellar smart contract and discuss how best to use Stellar’s Soroban and its flexible features.</p>



<h2 class="wp-block-heading">Table of Contents</h2>



<ol class="wp-block-list">
<li>asd</li>



<li>asd</li>



<li>asd</li>



<li>asd</li>



<li>asd</li>



<li></li>
</ol>



<h2 class="wp-block-heading" id="Bond-tokens"><strong>Bond tokens</strong></h2>



<ul class="wp-block-list">
<li>asd</li>



<li>asd</li>



<li>asd</li>



<li>asd</li>



<li>asd</li>



<li></li>
</ul>



<p>In finance, bonds are securities in which the issuer owes the holder a debt. After a period of time, the bond issuer pays all holders the bond&#8217;s value and the interest rate.</p>



<p>This is beneficial for the users, who profit from the purchase of bonds, and for the issuer, who can conduct business using the money used to buy the bonds before they’re paid out.</p>



<p>For our use case, we will treat the bonds as tokens, which users can buy and trade.</p>



<h2 class="wp-block-heading" id="ERC-20-Tokens"><strong>ERC-20 Tokens</strong></h2>



<p>The ERC-20 is a popular standard of Fungible Tokens used to ensure that each token is created using the same methods as another token.</p>



<p>It is an essential tool for interoperating with other contracts because it allows integration with the token without needing to know the details of its implementation.</p>



<p>For our use case, it will represent our bond token and the payment token, which will be used to buy bonds and pay debts.</p>



<p>The Soroban interface based on the ERC-20 token standard can be found in the official<a href="https://soroban.stellar.org/docs/common-interfaces/token" target="_blank" rel="noreferrer noopener"> Soroban documentation</a>. We are using this compiled interface, which can be found in the <a href="https://github.com/stellar/soroban-examples/blob/main/soroban_token_spec.wasm" target="_blank" rel="noreferrer noopener">Soroban examples repository</a>.</p>



<h2 class="wp-block-heading" id="Writing-the-smart-contract"><strong>Writing the smart contract</strong></h2>



<p>Before we begin, let&#8217;s take a look at the logic of our smart contract.</p>



<p>There are two types of users: the <strong>Admin</strong>, who manages the contract, and the <strong>Users</strong>, who can buy the bonds and cash out when allowed.</p>



<p>The administrator is responsible for managing the contract and determining when a bond can be bought, how long it will appreciate in value, and when users can withdraw their money.</p>



<p>Some extra management actions are also allowed, like managing which users can buy the bonds or pausing purchases temporarily. Finally, the admin can also withdraw the money received to pay the bonds.</p>



<p>The users can perform two actions — purchasing a bond and cashing out. They can only perform these actions can in the periods set by the admin and if they have the necessary authorization.</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2023/04/image-1200x346.jpg" alt="" class="wp-image-11237"/></figure>



<p>The appreciation of the bond occurs over a period determined by the administrator, bound by the start date and the end date. The purchase period of the bond is not directly linked to this period and can occur at different intervals.</p>



<p>Contract attributes like which tokens will be used, interest rate, interest type, and interest time interval are customizable and are set at initialization. We will discuss this in more detail in the following sections.</p>



<h3 class="wp-block-heading" id="Initialization"><strong>Initialization</strong></h3>



<p>The<em> initialize</em> function sets the <code>contract</code> attributes right after its deployment. We won&#8217;t go too deep into its implementation, but it is essential to understand the parameters it receives.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%"><pre class="wp-block-code" aria-describedby="shcb-language-1" data-shcb-language-name="Rust" data-shcb-language-slug="rust"><span><code class="hljs language-rust"><span class="hljs-keyword">impl</span> BondTrait <span class="hljs-keyword">for</span> Bond {
	...
	<span class="hljs-function"><span class="hljs-keyword">fn</span> <span class="hljs-title">initialize</span></span>(
      e: Env,
      admin: Identifier,
      payment_token_id: BytesN&lt;<span class="hljs-number">32</span>&gt;,
      bond_token_name: Bytes,
      bond_token_symbol: Bytes,
      bond_token_decimals: <span class="hljs-built_in">u32</span>,
      price: <span class="hljs-built_in">i128</span>,
      fee_rate: <span class="hljs-built_in">i128</span>,
      fee_days_interval: <span class="hljs-built_in">u64</span>,
      fee_type: InterestType,
      initial_amount: <span class="hljs-built_in">i128</span>,
  ) {
		...
	}
}</code></span><small class="shcb-language" id="shcb-language-1"><span class="shcb-language__label">Code language:</span> <span class="shcb-language__name">Rust</span> <span class="shcb-language__paren">(</span><span class="shcb-language__slug">rust</span><span class="shcb-language__paren">)</span></small></pre></div>
</div>



<p>Some considerations about these parameters:</p>



<ul class="wp-block-list">
<li></li>
</ul>



<p>Next, we will dive a little deeper into some of the core components of the contract, starting with the <code>buy</code>.</p>



<h3 class="wp-block-heading" id="Buy-bonds"><strong>Buy bonds</strong></h3>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%"><pre class="wp-block-code" aria-describedby="shcb-language-2" data-shcb-language-name="Rust" data-shcb-language-slug="rust"><span><code class="hljs language-rust"><span class="hljs-keyword">impl</span> BondTrait <span class="hljs-keyword">for</span> Bond {
	...
	<span class="hljs-function"><span class="hljs-keyword">fn</span> <span class="hljs-title">buy</span></span>(e: Env, amount: <span class="hljs-built_in">i128</span>) {
	    <span class="hljs-keyword">if</span> read_state(&amp;e) != State::Available {
	        panic_with_error!(&amp;e, Error::NotAvailable)
	    }
	    <span class="hljs-keyword">if</span> !check_user(&amp;e, &amp;(e.invoker().into())) {
	        panic_with_error!(&amp;e, Error::UserNotAllowed)
	    }
	    increase_supply(&amp;e, amount);
	    <span class="hljs-comment">// Total will be the Bond amount multiplied by Bond price</span>
	    <span class="hljs-keyword">let</span> total = current_price(&amp;e) * amount;
	    ...
	}
}</code></span><small class="shcb-language" id="shcb-language-2"><span class="shcb-language__label">Code language:</span> <span class="shcb-language__name">Rust</span> <span class="shcb-language__paren">(</span><span class="shcb-language__slug">rust</span><span class="shcb-language__paren">)</span></small></pre></div>
</div>



<p>For a user to be able to buy a bond, the purchase must be available, and the administrator must authorize the user. If the user satisfies these requirements, the supply (the amount of bond sold) increases by the amount the user intends to buy.</p>



<p>After this, it is necessary to calculate the bond&#8217;s current price. This is because the bond starts at a certain price but gets more expensive as time passes. Let&#8217;s look at the <code>current_price</code><em> </em>function that performs this calculation.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%"><pre class="wp-block-code" aria-describedby="shcb-language-3" data-shcb-language-name="Rust" data-shcb-language-slug="rust"><span><code class="hljs language-rust"><span class="hljs-function"><span class="hljs-keyword">fn</span> <span class="hljs-title">current_price</span></span>(e: &amp;Env) -&gt; <span class="hljs-built_in">i128</span> {
    <span class="hljs-keyword">let</span> <span class="hljs-keyword">mut</span> end_time = read_end_time(&amp;e);
    <span class="hljs-keyword">let</span> now = e.ledger().timestamp();
    <span class="hljs-comment">// If the end date has not passed yet</span>
    <span class="hljs-keyword">if</span> now &lt; end_time {
        end_time = now;
    }
    <span class="hljs-keyword">let</span> initial_price = read_price(&amp;e);
    <span class="hljs-comment">// Calculates the amount of time intervals that have passed</span>
    <span class="hljs-keyword">let</span> time = (end_time - read_init_time(&amp;e)) / read_fee_interval(&amp;e);
    <span class="hljs-comment">// If no time interval has passed, the price does not change</span>
    <span class="hljs-keyword">if</span> time == <span class="hljs-number">0</span> {
        <span class="hljs-keyword">return</span> initial_price;
    }
    <span class="hljs-keyword">let</span> fee_type = read_fee_type(e);
    <span class="hljs-keyword">match</span> fee_type {
        InterestType::Simple =&gt; {
            <span class="hljs-keyword">return</span> initial_price + (initial_price * (time <span class="hljs-keyword">as</span> <span class="hljs-built_in">i128</span>) * read_fee_rate(&amp;e)) / <span class="hljs-number">1000</span>;
        }
        InterestType::Compound =&gt; {
            <span class="hljs-keyword">let</span> fees = <span class="hljs-number">1000</span> + read_fee_rate(&amp;e);
            <span class="hljs-keyword">return</span> initial_price * (fees.pow(time <span class="hljs-keyword">as</span> <span class="hljs-built_in">u32</span>)) / <span class="hljs-number">1000_i128</span>.pow(time <span class="hljs-keyword">as</span> <span class="hljs-built_in">u32</span>);
        }
    }
}</code></span><small class="shcb-language" id="shcb-language-3"><span class="shcb-language__label">Code language:</span> <span class="shcb-language__name">Rust</span> <span class="shcb-language__paren">(</span><span class="shcb-language__slug">rust</span><span class="shcb-language__paren">)</span></small></pre></div>
</div>



<p>Here we need to calculate how much time has elapsed between the bond’s start date and now unless the end date has already passed, in which case, we will calculate the time between the start date and the end date.</p>



<p>With the time calculated, we need to determine how many time intervals have passed. For example, if our interval is one week, and 40 days have passed since the starting date, this value will be equal to 40 mod 7 = 5. <strong>In Soroban, all divisions are integer divisions</strong>, so we don&#8217;t have to worry about the modulo.</p>



<p>Our contract gives the flexibility to apply simple or compound interest, depending on the choice made at initialization. The calculation for each type of interest follows the standard logic of the mathematical interest formula, except for the 1000 factor. The factor 1000 added in each of the operations neutralizes our interest rate, which is multiplied by this value.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%"><pre class="wp-block-code" aria-describedby="shcb-language-4" data-shcb-language-name="Rust" data-shcb-language-slug="rust"><span><code class="hljs language-rust"><span class="hljs-keyword">impl</span> BondTrait <span class="hljs-keyword">for</span> Bond {
	...
	<span class="hljs-function"><span class="hljs-keyword">fn</span> <span class="hljs-title">buy</span></span>(e: Env, amount: <span class="hljs-built_in">i128</span>) {
	    ...
	    <span class="hljs-comment">// Total will be the Bond amount multiplied by Bond price</span>
	    <span class="hljs-keyword">let</span> total = current_price(&amp;e) * amount;
	    <span class="hljs-keyword">let</span> invoker: Identifier = e.invoker().into();
	    transfer_from_account_to_contract(&amp;e, &amp;read_payment_token(&amp;e), &amp;invoker.clone(), &amp;total);
	    transfer_from_contract_to_account(&amp;e, &amp;read_bond_token_id(&amp;e), &amp;invoker.clone(), &amp;amount);
	}
}</code></span><small class="shcb-language" id="shcb-language-4"><span class="shcb-language__label">Code language:</span> <span class="shcb-language__name">Rust</span> <span class="shcb-language__paren">(</span><span class="shcb-language__slug">rust</span><span class="shcb-language__paren">)</span></small></pre>


<p>Returning to the buy function, after calculating the bond&#8217;s current price and multiplying it by the amount the user wants to buy, we get the number of payment tokens the contract should receive from the user.</p>



<p>The function <code>transfer_from_account_to_contract</code> performs the <code>transfer_from</code> token function from the user account to the contract account.</p>



<p>This implies the user must have allowed the contract to take this payment token amount from them. Otherwise, an error will be issued, and the user will not succeed in buying the bonds.</p>



<p>After the contract receives the user&#8217;s payment tokens, it sends the purchased bonds from their balance to the user&#8217;s account using the function <code>transfer_from_contract_to_account</code>.</p>



<h3 class="wp-block-heading" id="Withdraw"><strong>Withdraw</strong></h3>



<p>The contract allows the administrator to withdraw user payment tokens to their account. The admin can use these tokens as they wish while cash out is not enabled.</p>


<pre class="wp-block-code" aria-describedby="shcb-language-5" data-shcb-language-name="Rust" data-shcb-language-slug="rust"><span><code class="hljs language-rust"><span class="hljs-keyword">impl</span> BondTrait <span class="hljs-keyword">for</span> Bond {
	...
	<span class="hljs-function"><span class="hljs-keyword">fn</span> <span class="hljs-title">withdraw</span></span>(e: Env, amount: <span class="hljs-built_in">i128</span>) {
	    check_admin(&amp;e, &amp;Signature::Invoker);
	    <span class="hljs-keyword">if</span> read_state(&amp;e) == State::CashOutEn {
	        panic_with_error!(&amp;e, Error::AlreadyCashOutEn)
	    }
	    transfer_from_contract_to_account(
	        &amp;e,
	        &amp;read_payment_token(&amp;e),
	        &amp;e.invoker().clone().into(),
	        &amp;amount,
	    );
	}
}</code></span><small class="shcb-language" id="shcb-language-5"><span class="shcb-language__label">Code language:</span> <span class="shcb-language__name">Rust</span> <span class="shcb-language__paren">(</span><span class="shcb-language__slug">rust</span><span class="shcb-language__paren">)</span></small></pre>


<h3 class="wp-block-heading" id="Enable-cash-out"><strong>Enable cash out</strong></h3>



<p>Certain state conditions must be met to enable cash out, and the bond&#8217;s valuation period must be over. But the most important requirement here is that the contract must have in its balance the payment tokens needed to pay all the users who have purchased bonds with the bond&#8217;s current price.</p>



<p>Therefore, the administrator must pay the contract the required amount before calling this function. This can be done via the transfer function of the payment token contract.</p>



<p>Once this state is enabled, the payment tokens in the contract can no longer be withdrawn by the admin.</p>


<pre class="wp-block-code" aria-describedby="shcb-language-6" data-shcb-language-name="Rust" data-shcb-language-slug="rust"><span><code class="hljs language-rust"><span class="hljs-keyword">impl</span> BondTrait <span class="hljs-keyword">for</span> Bond {
	...
	<span class="hljs-function"><span class="hljs-keyword">fn</span> <span class="hljs-title">en_csh_out</span></span>(e: Env) {
	    check_admin(&amp;e, &amp;Signature::Invoker);
	
	    <span class="hljs-keyword">let</span> state = read_state(&amp;e);
	    <span class="hljs-keyword">if</span> state != State::Available &amp;&amp; state != State::Paused {
	        panic_with_error!(&amp;e, Error::NotAvailable)
	    }
	
	    <span class="hljs-comment">// Check if end time has passed</span>
	    <span class="hljs-keyword">if</span> e.ledger().timestamp() &lt; read_end_time(&amp;e) {
	        panic_with_error!(&amp;e, Error::EndTimeNotPassed)
	    }
	
	    <span class="hljs-comment">// Check if the contract has the amount of payment tokens to</span>
	    <span class="hljs-comment">// pay the users</span>
	    <span class="hljs-keyword">let</span> amount_payment = current_price(&amp;e) * read_supply(&amp;e);
	    <span class="hljs-keyword">let</span> contract_balance = token_balance(
	        &amp;e,
	        &amp;read_payment_token(&amp;e),
	        &amp;Identifier::Contract(e.current_contract()),
	    );
	
	    <span class="hljs-keyword">if</span> contract_balance &lt; amount_payment {
	        panic_with_error!(&amp;e, Error::NotEnoughTokens)
	    }
	
	    write_state(&amp;e, State::CashOutEn);
	}
}</code></span><small class="shcb-language" id="shcb-language-6"><span class="shcb-language__label">Code language:</span> <span class="shcb-language__name">Rust</span> <span class="shcb-language__paren">(</span><span class="shcb-language__slug">rust</span><span class="shcb-language__paren">)</span></small></pre></div>
</div>



<p>After the conditions are met, the contract state is changed to allow cash out.</p>



<h3 class="wp-block-heading" id="Cash-out"><strong>Cash out</strong></h3>



<p>The cash out is performed by reading the user&#8217;s balance and checking how many bonds they have on their account. The amount of payment tokens transferred from the contract to the user&#8217;s account is the number of bonds they own multiplied by the bond&#8217;s current value.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%"><pre class="wp-block-code" aria-describedby="shcb-language-7" data-shcb-language-name="Rust" data-shcb-language-slug="rust"><span><code class="hljs language-rust"><span class="hljs-keyword">impl</span> BondTrait <span class="hljs-keyword">for</span> Bond {
	...
	<span class="hljs-function"><span class="hljs-keyword">fn</span> <span class="hljs-title">cash_out</span></span>(e: Env) {
	    <span class="hljs-keyword">if</span> read_state(&amp;e) != State::CashOutEn {
	        panic_with_error!(&amp;e, Error::NotCashOutEn)
	    }
	
	    <span class="hljs-keyword">let</span> invoker: Identifier = e.invoker().into();
	
	    <span class="hljs-comment">// Get the user Bond Token balance</span>
	    <span class="hljs-keyword">let</span> bond_balance = token_balance(&amp;e, &amp;read_bond_token_id(&amp;e), &amp;invoker.clone());
	    <span class="hljs-comment">// Calculates amount of payment token</span>
	    <span class="hljs-keyword">let</span> total_payment = bond_balance * current_price(&amp;e);
	    <span class="hljs-comment">// Decrease supply</span>
	    decrease_supply(&amp;e, bond_balance);
	    <span class="hljs-comment">// Transfer amount of payment tokens from contract to user</span>
	    transfer_from_contract_to_account(
	        &amp;e,
	        &amp;&amp;read_payment_token(&amp;e),
	        &amp;invoker.clone(),
	        &amp;total_payment,
	    );
	    <span class="hljs-comment">// Burn all the Bond tokens from user</span>
	    burn_token(
	        &amp;e,
	        &amp;read_bond_token_id(&amp;e),
	        &amp;Signature::Invoker,
	        &amp;invoker,
	        &amp;bond_balance,
	    );
	}
}</code></span><small class="shcb-language" id="shcb-language-7"><span class="shcb-language__label">Code language:</span> <span class="shcb-language__name">Rust</span> <span class="shcb-language__paren">(</span><span class="shcb-language__slug">rust</span><span class="shcb-language__paren">)</span></small></pre></div>
</div>



<p>This implies that no matter how much the user paid for the bond, they will always get their money back at a higher price. For example, if user A bought 100 bonds and user B bought 100 bonds a few months later, both users will receive the same number of payment tokens at the cash-out.</p>



<p>The key difference is that the profit of user A will be higher as they paid less for the bond initially than user B.</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2023/04/image-1-918x1200.jpg" alt="" class="wp-image-11239"/></figure>



<p>After transferring the payment, the user&#8217;s bonds are burned. This transaction is only possible because the current contract is the admin of the bond token contract.</p>



<h2 class="wp-block-heading" id="Learn-more-about-the-blockchain-with-Cheesecake-Labs"><strong>Learn more about the blockchain with Cheesecake Labs</strong></h2>



<p>This post has outlined the core components of a bond sales contract. If you would like to explore the rest of the functions in more depth, <strong><a href="https://github.com/CheesecakeLabs/soroban-poc/tree/main/bond" target="_blank" rel="noreferrer noopener">you can take a look at the source code.</a></strong></p>



<p>You can learn more about <a href="https://cheesecakelabs.com/blog/future-stellar-network/">the Stellar network</a>, <a href="https://cheesecakelabs.com/blog/cryptocurrency-wallet-development/">cryptocurrency wallet development</a>, and <a href="https://cheesecakelabs.com/blog/blockchain-guide-getting-started-blockchain-app/">the basics of blockchain</a> on the Cheesecake Labs blog. And sign up for the Cheesecake Labs newsletter to get the latest updates delivered to your inbox.</p>



<style>
  .libutton {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
  }
  .libutton > a {
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 7px;
    text-align: center;
    outline: none;
    text-decoration: none !important;
    color: #ffffff !important;
    width: 300px;
    height: 40px;
    border-radius: 0px;
    background-color: #0157FF;
    font-family: "Poppins", bold;font-size: 20px;
  }
</style>
<div class="libutton">
<a href="https://www.linkedin.com/build-relation/newsletter-follow?entityUrn=7036416590715707392" target="_blank" rel="noopener">Subscribe on LinkedIn</a>
</div>



<p>As a <a href="https://cheesecakelabs.com/services/blockchain/" target="_blank" rel="noreferrer noopener">Stellar Integration Partner</a>, Cheesecake Labs is an excellent choice to help you bring your ideas for blockchain projects to life.</p>



<p><a href="https://cheesecakelabs.com/contact/" target="_blank" rel="noreferrer noopener">Get in touch</a> and tell us about your project!</p>



<figure class="wp-block-image size-large"><a href="https://cheesecakelabs.com/contact/" target="_blank" rel="noreferrer noopener"><img decoding="async" src="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2023/01/stellar-integration-partner-1200x628.png" alt="four men of ckl's team at the stellar annual conference" class="wp-image-11025"/></a></figure>
<p>The post <a rel="nofollow" href="https://blog-stg.cheesecakelabs.com/how-to-use-stellars-soroban-to-write-a-bond-smart-contract/">How to use Stellar’s Soroban to write a bond smart contract</a> appeared first on <a rel="nofollow" href="https://blog-stg.cheesecakelabs.com">Cheesecake Labs</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How to create borderless, blockchain payment systems</title>
		<link>https://blog-stg.cheesecakelabs.com/create-blockchain-payment-systems/</link>
		
		<dc:creator><![CDATA[Mayara Cristine Wandall]]></dc:creator>
		<pubDate>Tue, 02 Nov 2021 20:55:33 +0000</pubDate>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Engineering]]></category>
		<guid isPermaLink="false">https://blog-stg.cheesecakelabs.com/?p=7857/</guid>

					<description><![CDATA[<p>Despite the turbulent history they’ve had until 2021, it certainly seems like cryptocurrencies are here to stay. Likewise, a core piece of tech underpinning cryptocurrency, blockchain, is not only sticking around but working its way into a variety of sectors.&#160;In this guide, we’re going to cover one of the most practical blockchain applications: blockchain payment [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://blog-stg.cheesecakelabs.com/create-blockchain-payment-systems/">How to create borderless, blockchain payment systems</a> appeared first on <a rel="nofollow" href="https://blog-stg.cheesecakelabs.com">Cheesecake Labs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><span style="font-weight: 400;">Despite the turbulent history they’ve had until 2021, it certainly seems like cryptocurrencies are here to stay. Likewise, a core piece of tech underpinning cryptocurrency, blockchain, is not only sticking around but working its way into a variety of sectors.&nbsp;</span><span style="font-weight: 400;">In this guide, we’re going to cover one of the most practical blockchain applications: blockchain payment systems.&nbsp;</span></p>
<p><span style="font-weight: 400;">But first, let’s start with the fundamentals.&nbsp;</span></p>
<p><span id="more-7857"></span></p>
<h2><b>What is blockchain?</b></h2>
<p><span style="font-weight: 400;">Blockchain is, in essence, a ledger technology. It keeps a record of, well, whatever you want. And it holds that record using tech that is extremely secure, flexible, transparent, and straightforward.</span></p>
<p><span style="font-weight: 400;">It can help to visualize a blockchain as a row of wooden blocks lined up in a row. Let’s say that each time you want to add a new wooden block to this row, you also want to preserve the order that the blocks are already in. Each time you add a new block to the row, you take a marker and draw a unique image on the seam where the last block and the new block meet. When you separate the two blocks, half of the image remains on each block.&nbsp;</span></p>
<p><span style="font-weight: 400;">If each block has part of an overlapping image connecting it to its adjacent blocks, then you won’t be able to remove or replace any of these blocks. You’ll instantly recognize that they’ve been tampered with because the images won’t make sense anymore.&nbsp;</span></p>
<p><span style="font-weight: 400;">In essence, this is how blockchain works. It’s also where the name comes from. You can use blockchain to keep track of different file versions, people walking into a building, medical records, and financial transactions.&nbsp;</span></p>
<p><span style="font-weight: 400;">Not only can you not rearrange the data stored in a blockchain (making it immutably chronological), but you can also trust that it is immensely secure. Blockchains are very well encrypted and can be centralized for the private sector or decentralized for the public sector.&nbsp;</span></p>
<h2><b>What are blockchain payment systems?</b></h2>
<p><span style="font-weight: 400;">That brings us to blockchain payment systems. Blockchain payment systems are just one of the applications of blockchain technology.</span><b>&nbsp;In this instance, a new block is added to the blockchain every time a transaction takes place.&nbsp;</b></p>
<p><span style="font-weight: 400;">Since these blocks can’t be rearranged, edited, or removed, you can have nearly total confidence that the record of transactions is accurate. This is one reason that cryptocurrencies like Bitcoin are trusted. While you don’t have physical money to hold onto, the Bitcoin blockchain proves, immutably, that you have the money your account says you do.&nbsp;</span></p>
<p><span style="font-weight: 400;">You can, of course, use blockchain payment systems to support a cryptocurrency. But you can also use them in other financial sectors. There’s no reason why Venmo, Visa, PayPal, or even your local bank can’t use blockchain to keep a record of transactions. In fact, doing so could be an improvement, reducing the chances of fraud and error.&nbsp;</span></p>
<h3><b>Examples of blockchain payment systems</b></h3>
<ul>
<li style="font-weight: 400;"><b>Bitcoin.</b><span style="font-weight: 400;">&nbsp;Bitcoin is synonymous with blockchain technology, and that&#8217;s because Bitcoin is the progenitor of blockchain. The Bitcoin blockchain keeps a record of every new Bitcoin created and follows the journey of that Bitcoin from one individual to the next.&nbsp;</span></li>
<li style="font-weight: 400;"><b>Ethereum.</b><span style="font-weight: 400;">&nbsp;Similar to Bitcoin, Ethereum is a cryptocurrency that relies on blockchain. However, Ethereum benefited from coming after and has incorporated interesting features like executable code, improved security, and programmatic contracts.</span></li>
<li style="font-weight: 400;"><b>Stellar.</b><span style="font-weight: 400;">&nbsp;Stellar is a unique blockchain payment system. It allows you to easily create your own form of stablecoin (a cryptocurrency that doesn&#8217;t fluctuate wildly in price) and distribute it however you like. You can use this to create cryptocurrencies tied to fiat currency, used within a specific business (&#8220;Google Coin&#8221; does not currently exist!), or just a tradable asset for you and your friends.&nbsp;</span></li>
<li style="font-weight: 400;"><b>Mastercard Blockchain.</b><span style="font-weight: 400;">&nbsp;Mastercard has developed Start Path, a fast-track solution for businesses and organizations to create their own cryptocurrency and blockchain solution.&nbsp;</span></li>
</ul>
<h2><b>How to create a blockchain payment platform: You have two options</b></h2>
<p><span style="font-weight: 400;">As you can see from the examples above, blockchain payment platforms are no longer just for “diamond hands” crypto fans or tech savants. There are many uses for blockchain technology, and any business (or motivated individual) can put the tech to use.&nbsp;</span></p>
<p><span style="font-weight: 400;">Today, there are two routes you can go down if you want to create your own blockchain solution.&nbsp;</span></p>
<h3><b>Build your own cryptocurrency</b></h3>
<p><span style="font-weight: 400;">The first option that probably comes to mind is creating your own unique cryptocurrency. After all, it’s the route that most have gone down in blockchain’s infancy. Building your own cryptocurrency and blockchain to back it up is the traditional route, primarily because blockchain technology is still finding its footing.&nbsp;</span></p>
<p><span style="font-weight: 400;">To do this, you need to either create a blockchain and cryptocurrency from scratch or create a new crypto token based on an existing cryptocurrency/currency.&nbsp;</span></p>
<p><span style="font-weight: 400;">Then, you need to ensure that your crypto/blockchain solution is secure, compliant, and tradable with existing cryptocurrencies (assuming that is your goal).&nbsp;</span><b>Unsurprisingly, this can be extremely difficult and can require an abundance of serious development talent.</b><span style="font-weight: 400;">&nbsp;</span></p>
<h3><b>Use an existing cryptocurrency</b></h3>
<p><span style="font-weight: 400;">Alternatively, you could just create a blockchain payment system that works with an existing cryptocurrency.&nbsp;</span><b>It’s no surprise that this is a far easier solution, though it does mean you’ll have less control over the cryptocurrency.</b><span style="font-weight: 400;">&nbsp;And your blockchain will need to conform to the crypto rather than the other way around.&nbsp;</span></p>
<p><span style="font-weight: 400;">If this is the option you choose, you can compare it to a platform like PayPal or Venmo. Neither created its own currency and for a long time, neither even offered traditional banking services. They were just a means of quickly sending money over the internet.&nbsp;</span></p>
<p><span style="font-weight: 400;">Blockchain payment systems can work similarly. They can act as a middleman for cryptocurrency, adding unique features that make it easier and more efficient.&nbsp;</span></p>
<h2><b>Steps to implement blockchain payment processing in your enterprise</b></h2>
<h3><b>Step 1: Project planning</b></h3>
<p><span style="font-weight: 400;">The first step in launching your blockchain payment processing system is to plan out your project.&nbsp;</span></p>
<p><span style="font-weight: 400;">Are you going to create a new blockchain and/or cryptocurrency from scratch? Or are you going to make an overlay/fork of an existing solution?</span></p>
<p><span style="font-weight: 400;">Is your platform going to be web-based, or will it be launched as a mobile app? Maybe a combination of the two is right for your business?</span></p>
<h3><b>Step 2: Onboard a development team</b></h3>
<p><span style="font-weight: 400;">Once you’ve got an idea of how you want to proceed, you’re going to need a development team. Development teams for blockchain payment systems can be challenging to find, especially reliable ones because the technology is new.&nbsp;</span></p>
<p><span style="font-weight: 400;">Additionally, the newness of the tech means that you won’t just have a hard time finding knowledgeable talent, but capable talent, too. In total, you’ll need to find:</span></p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">A project manager</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">An IT architect</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Blockchain developers</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Web developers (if building a web app)</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">iOS and Android developers (if developing a mobile app)</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Testers</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">DevOps engineers</span></li>
</ul>
<h4><b>Or partner with a team of development experts</b></h4>
<p><span style="font-weight: 400;">If you don’t want to go through the trouble of tracking down all of this talent,&nbsp;</span><b>you could always partner with an existing and trusted team of development experts.&nbsp;</b></p>
<p><span style="font-weight: 400;">You can find such a team right here at&nbsp;</span><a href="https://blog-stg.cheesecakelabs.com/"><span style="font-weight: 400;">Cheesecake Labs</span></a><span style="font-weight: 400;">. Our developers and software engineers are highly experienced and educated. This simplifies the process of finding a team substantially and reduces the chance that you’ll run into errors and complications down the line.&nbsp;</span><a href="https://blog-stg.cheesecakelabs.com/br/contato/"><span style="font-weight: 400;">Reach out</span></a><span style="font-weight: 400;">&nbsp;to discuss your options!</span></p>
<h3><b>Step 3: Project execution and tracking</b></h3>
<p><span style="font-weight: 400;">The third step of building a blockchain payment platform is execution. Here, you’ll work with your team to realize the vision you created during the project planning phase.&nbsp;</span></p>
<p><span style="font-weight: 400;">Below are a few of the routes your project could end up going down during development.&nbsp;</span></p>
<h4><b>Route A: Creating a new blockchain and cryptocurrency</b></h4>
<p><span style="font-weight: 400;">When building your blockchain payment platform, the first route you could take is to create a new blockchain and cryptocurrency. This requires:</span></p>
<ul>
<li style="font-weight: 400;"><b>An IaaS solution (like AWS).</b><span style="font-weight: 400;">&nbsp;This is what will host the original software, coins, and back-end tech for operating your blockchain payment system.&nbsp;</span></li>
<li style="font-weight: 400;"><b>A Peer-to-Peer trading network.</b><span style="font-weight: 400;">&nbsp;A P2P trading network will allow individuals to use your platform/cryptocurrency without the need for a centralized hub (like a bank).&nbsp;</span></li>
<li style="font-weight: 400;"><b>A consensus algorithm.</b><span style="font-weight: 400;">&nbsp;Consensus algorithms are critical to a successful blockchain. The consensus algorithm confirms that each new block is valid.&nbsp;</span></li>
</ul>
<h4><b>Route B: Building a DAPP (Decentralized App) using Ethereum</b></h4>
<p><span style="font-weight: 400;">DAPPs are a uniquely Ethereum payment platform model in the world of cryptocurrency. They allow individuals to purchase Ethereum, store it in a wallet, then connect that wallet to a DAPP.&nbsp;</span></p>
<p><span style="font-weight: 400;">You can see examples of DAPP’s here on&nbsp;</span><a href="https://ethereum.org/en/dapps/"><span style="font-weight: 400;">Ethereum’s official website</span></a><span style="font-weight: 400;">. Some examples include investing Ethereum into art, swapping Ethereum tokens with ease, and mobile games based around Ethereum.&nbsp;</span></p>
<h4><b>Route C: Using existing Bitcoin or Ethereum payment gateways</b></h4>
<p><span style="font-weight: 400;">Alternatively, you could build an app on top of an existing crypto payment gateway with an API. Coinbase, CoinGate, and Shopify all have APIs that you can use to facilitate the transfer of cryptocurrency.&nbsp;</span></p>
<p><b>Building an app on top of these existing APIs is a fast way to get a creative idea out in the world.&nbsp;</b><span style="font-weight: 400;">Just be aware that changes to these existing platforms and APIs could disrupt your service. So this route might be best treated as a starting point and not an ending point for your blockchain payment platform.&nbsp;</span></p>
<h4><b>Route D: Use Ripple, Stellar, or other existing blockchain payment systems</b></h4>
<p><span style="font-weight: 400;">If you don’t want to tie yourself to the cryptocurrency world, you can instead use an existing blockchain payment system infrastructure that isn’t exclusively for crypto trading.&nbsp;</span></p>
<p><a href="https://www.stellar.org/?locale=en"><span style="font-weight: 400;">Stellar</span></a><span style="font-weight: 400;">, for example, uses blockchain technology to facilitate decentralized transactions in any currency. Your team could build an app on top of Stellar, adding unique features and selling points without being held to the cryptocurrency market.&nbsp;</span></p>
<h2><b>Partner with Cheesecake Labs and launch your blockchain payment systems in no time</b></h2>
<p><span style="font-weight: 400;">Now that you understand what blockchain payment systems are and how to launch one yourself, it’s time to take that first step. Cheesecake Labs can help. Our team of development experts will work with you to bring your vision to life efficiently and effectively.&nbsp;</span></p>
<p><a href="https://blog-stg.cheesecakelabs.com/br/contato/"><b>Reach out today and explore your options</b></a><b>.</b></p>
<p>The post <a rel="nofollow" href="https://blog-stg.cheesecakelabs.com/create-blockchain-payment-systems/">How to create borderless, blockchain payment systems</a> appeared first on <a rel="nofollow" href="https://blog-stg.cheesecakelabs.com">Cheesecake Labs</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>What is blockchain? A guide for getting started with blockchain in your app</title>
		<link>https://blog-stg.cheesecakelabs.com/blockchain-guide-getting-started-blockchain-app/</link>
		
		<dc:creator><![CDATA[Mayara Cristine Wandall]]></dc:creator>
		<pubDate>Mon, 01 Nov 2021 22:15:09 +0000</pubDate>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Engineering]]></category>
		<guid isPermaLink="false">https://blog-stg.cheesecakelabs.com/?p=7844/</guid>

					<description><![CDATA[<p>Over the last few years, most of us have heard about a new technology known as blockchain. Usually, we hear this new word thrown around with Bitcoin and cryptocurrency, but even crypto investors tend to have a limited understanding of what blockchain is.&#160; This guide will go through the ins and outs of blockchain, answering [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://blog-stg.cheesecakelabs.com/blockchain-guide-getting-started-blockchain-app/">What is blockchain? A guide for getting started with blockchain in your app</a> appeared first on <a rel="nofollow" href="https://blog-stg.cheesecakelabs.com">Cheesecake Labs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><span style="font-weight: 400;">Over the last few years, most of us have heard about a new technology known as blockchain. Usually, we hear this new word thrown around with Bitcoin and cryptocurrency, but even crypto investors tend to have a limited understanding of what blockchain is.&nbsp;</span></p>
<p><span style="font-weight: 400;">This guide will go through the ins and outs of blockchain, answering questions like how many blockchains are there, the benefits of blockchain, and how blockchain can be applied.&nbsp;</span></p>
<p><span id="more-7844"></span></p>
<h2><b>What is blockchain?</b></h2>
<p><span style="font-weight: 400;">Blockchain is a type of decentralized database that stores data in blocks chronologically. Each block is chained together using unique fingerprint-like identifiers called hashes. The database is hosted on a decentralized computer network that constantly runs checks to ensure the data agrees across all copies of the database.</span></p>
<p><span style="font-weight: 400;">There’s a lot in that definition to break down, so let’s take a look at each part with an example. For instance, say you were writing a paper. Every few minutes, you save that paper to avoid losing any data. A blockchain would allow you to see each version of that paper you created every time you saved it.&nbsp;</span></p>
<p><span style="font-weight: 400;">These versions would be called “blocks” in the blockchain. Each block is a chronological variation of the initial version. The system verifies each block to ensure that the blocks match on every computer hosting the database. These verifications check to make sure blocks haven’t been tampered with or corrupted by an error. This is kind of like backing up your phone data to the cloud, only more secure.</span></p>
<p><span style="font-weight: 400;">That’s just one underlying aspect of a blockchain, though. Blockchains are also decentralized. So you could have multiple people working on the same document. Whenever someone saves that document, the system creates a new block in the blockchain with that version, and everyone plugged into the blockchain can see that new version. Additionally, everyone can see every past version (or past blocks) of that document.&nbsp;</span></p>
<p><span style="font-weight: 400;">Of course, there’s no reason why everyone would have to be working on the same document to share a blockchain. For instance, a school could use a blockchain to keep track of every student’s essays for all time. Every time someone saves an assignment, the system creates a new block. So there are hundreds of versions of hundreds of documents, all stored in chronological order.&nbsp;</span></p>
<p><span style="font-weight: 400;">This system could nearly eradicate plagiarism among students. If every version of every essay written by every student at a school is stored and secured chronologically, and every student and staff member can view this blockchain, then it would be impossible to copy another student’s work without being caught. It would also be impossible to lose the student work, keeping the record of that work safe.</span></p>
<h2><b>What are the benefits of using blockchain?</b></h2>
<h3><b>True chronological record keeping</b></h3>
<p><span style="font-weight: 400;">The primary benefit of using blockchain is, of course, also its primary function. </span><b>Blockchain is an excellent way to store records chronologically.</b><span style="font-weight: 400;"> And since it’s so versatile, you can use it for virtually any kind of record-keeping.&nbsp;</span></p>
<p><span style="font-weight: 400;">Software people who have worked with Git can likely see the similarities between Git and blockchain. Blockchain is so powerful because it applies the underlying principle of a version control system to nearly any kind of information — plagiarism protection, financial transactions, law-keeping, medical record storage, financial investments and so on.&nbsp;</span></p>
<h3><b>Blockchain is incredibly secure</b></h3>
<p><span style="font-weight: 400;">Blockchain is also incredibly secure. </span><b>It’s hard to overstate this.</b><span style="font-weight: 400;"> The fingerprint-like hashes that link each new block to the previous block in the chain create nearly unbreakable security. They can’t be separated or shifted around, which makes fraud and tampering almost impossible.&nbsp;</span></p>
<p><span style="font-weight: 400;">Consensus reinforces blockchain’s security. Since a network of computers shares a blockchain and updates every record when adding each new block, it’s impossible to edit, add to, or otherwise alter the blockchain without others seeing those changes.&nbsp;</span></p>
<p><span style="font-weight: 400;">Likewise, each change has to be “verified” by every other user of that blockchain. This means that each person’s copy of the blockchain must check and validate that blocks added by different users are legitimate. So nobody can falsely add new blocks.</span></p>
<h3><b>It’s a decentralized way to store records</b></h3>
<p><span style="font-weight: 400;">Lastly, blockchain was initially conceived to be decentralized. Like cryptocurrency (or even the internet), blockchain technology often exists outside of centralized moderation. </span><b>When a blockchain is decentralized, it can’t be controlled or tampered with by governing bodies or corporate interests.</b><span style="font-weight: 400;">&nbsp;</span></p>
<p><span style="font-weight: 400;">Not only does this aid in building trust in blockchain record-keeping, but it also makes blockchain more accessible to everyone. Everyone using a blockchain also has their own copy of that blockchain, democratizing its use and keeping everything secure.&nbsp;</span></p>
<h2><b>How many blockchains are there?</b></h2>
<p><span style="font-weight: 400;">In short, there are a lot of blockchains. People create new types of blockchains every day. It’s a flexible technology term, like SaaS, and you can apply it in just as many ways.&nbsp;</span></p>
<p><span style="font-weight: 400;">There are four main types of blockchain, though. And most of today’s blockchains can be categorized under these types.</span></p>
<h3><b>1. Public</b></h3>
<p><span style="font-weight: 400;">The first and most common type of blockchain today is the public blockchain. These are blockchains that anyone can access and use. </span><b>Most cryptocurrencies use public blockchains.</b><span style="font-weight: 400;">&nbsp;</span></p>
<p><span style="font-weight: 400;">Public blockchains are fully decentralized and immutable, so anyone in the world can access them without disrupting them. These blockchains are anonymous, too, so everyone can see the activity on the blockchain without knowing whose activity they’re viewing. This transparency makes blockchain perfect for cryptocurrency —&nbsp; the transactions are publicly visible without giving away personal information.</span></p>
<h3><b>2. Private</b></h3>
<p><span style="font-weight: 400;">A private blockchain is one in which a single organization or individual has total control over the blockchain. You can think of this as a “proprietary” blockchain. A school, business, government agency, or even a person could control a private blockchain.&nbsp;</span></p>
<p><span style="font-weight: 400;">Since a limited group of people uses this blockchain, it can run faster than a public blockchain. It also has the benefit of being more private and scalable.&nbsp;</span></p>
<h3><b>3. Hybrid</b></h3>
<p><span style="font-weight: 400;">Hybrid blockchains are, as the name implies, combinations of public and private blockchains. They pull elements of each together in unique ways, keeping things confidential and proprietary without closing out the rest of the world.</span></p>
<p><span style="font-weight: 400;">For example, the real estate industry could use a hybrid blockchain to keep track of house sales. Only real estate businesses would have access to the blockchain, but it wouldn’t be limited to any specific real estate business, either.&nbsp;</span></p>
<h3><b>4. Consortium/Federated</b></h3>
<p><span style="font-weight: 400;">Similar to a hybrid blockchain, federated or consortium blockchains combine elements of private and public blockchains. </span><b>Federated blockchains keep certain features just for enterprise and share other elements with the public.&nbsp;</b></p>
<p><span style="font-weight: 400;">For instance, a bank wouldn’t want to use a blockchain that is publicly available and usable. However, a bank would like customers to use a blockchain when making purchases and ATM transactions. So at certain times, the public can use the blockchain, while the bank exclusively manages the blockchain under different use cases.&nbsp;</span></p>
<h2><b>Notable and potential uses for blockchain technology</b></h2>
<p><span style="font-weight: 400;">Throughout this guide, we’ve touched on a few use cases for blockchain technology. Real-world applications are nearly always the best way to understand how and why a piece of tech works. So let’s look at a mix of theoretical and real-world uses for blockchain.&nbsp;</span></p>
<h3><b>Bitcoin and cryptocurrency transactions</b></h3>
<p><span style="font-weight: 400;">Kicking this list off is the use case that we’re all familiar with, Bitcoin and cryptocurrency transactions.&nbsp;</span></p>
<p><span style="font-weight: 400;">Bitcoin relies on public blockchains, allowing everyone making Bitcoin transactions to ensure that the transaction is valid. There’s no need for government oversight, corporate or banking validation, etc. As long as two individuals have a medium for making transactions, they can and know that it’s valid.&nbsp;</span></p>
<h3><b>Verifying elections</b></h3>
<p><span style="font-weight: 400;">An interesting application for blockchain is election verification. Though most elections still rely on traditional voting methods, blockchain voting is appearing more frequently, </span><a href="https://www.govtech.com/products/utah-county-makes-history-with-presidential-blockchain-vote.html"><span style="font-weight: 400;">including in the 2020 presidential election in Utah County.</span></a><span style="font-weight: 400;">&nbsp;</span></p>
<p><span style="font-weight: 400;">In this use case, governments use a blockchain to keep track of each person’s vote. Blockchain voting has the potential to prevent issues like double-voting, lost ballots, voting by illegitimate individuals (e.g., deceased individuals), and so on.&nbsp;</span></p>
<p><span style="font-weight: 400;">While voting systems could use private or hybrid blockchain systems, a federated blockchain would likely be the ideal solution. It would allow for the blockchain to be overseen and controlled by a governing body while also allowing individuals to interact with it when casting their votes.&nbsp;</span></p>
<h3><b>Managing medical records</b></h3>
<p><span style="font-weight: 400;">An excellent possibility for private blockchain is in the healthcare sector. Specifically, hospitals could use a private or hybrid blockchain to keep track of every patient’s medical records.&nbsp;</span></p>
<p><span style="font-weight: 400;">This would allow doctors to easily and quickly share medical data with hospitals all across your healthcare network. It would also provide doctors with an accurate and reliable medical history, allowing for more precise and prompt treatment.&nbsp;</span></p>
<h3><b>Filing taxes securely</b></h3>
<p><span style="font-weight: 400;">On a federal level, individuals could use blockchain to file taxes. Along with being a substantial upgrade/overhaul to the tax system in many countries, this would also boost security and remove the widespread fraud that often affects large-scale tax systems.&nbsp;</span></p>
<p><span style="font-weight: 400;">The transparency of blockchain would make it impossible to hide fraud from government agencies. And the security of the system would be a boon to citizens.&nbsp;</span></p>
<h3><b>Tracking cattle</b></h3>
<p><span style="font-weight: 400;">One unique use for blockchain technology is as a means for tracking cattle. There has been an issue of tick-infected cattle undermining Zimbabwe’s beef exports in Zimbabwe, jeopardizing a valuable market for the country. External buyers want assurance that beef isn’t coming from infected cows. When they don’t get that guarantee, they’re buying beef elsewhere.&nbsp;</span></p>
<p><span style="font-weight: 400;">To solve this, Zimbabwe has partnered with </span><a href="https://www.ledgerinsights.com/e-livestock-mastercard-blockchain-beef-traceability-zimbabwe/"><span style="font-weight: 400;">E-Livestock Global</span></a><span style="font-weight: 400;"> to track the medical history of cows using blockchain technology. Since this medical history is immutable, farmers can prove that a tick hasn’t infected a cow before a sale, reassuring buyers that the beef they’re purchasing is safe.&nbsp;</span></p>
<h3><b>Safe marriage certifications</b></h3>
<p><a href="https://nordddb.com/case/marriage-unblocked/"><span style="font-weight: 400;">Marriage Unblocked</span></a><span style="font-weight: 400;"> is another unique use case for blockchain. It uses public blockchain technology to allow couples to recite vows and marry one another, regardless of their orientation, gender, race, or other discriminated factors.&nbsp;</span></p>
<p><span style="font-weight: 400;">Their marriage is validated and stored on the blockchain, where it will remain unchanged and unremoved, forever on the internet. For LGBTQ+ and inter-racial couples in discriminatory regions, this provides a safe alternative to state-owned marriage ceremonies.&nbsp;</span></p>
<h3><b>Reduce counterfeit wine</b></h3>
<p><span style="font-weight: 400;">Like the farmers in Zimbabwe, </span><a href="https://forkast.news/blockchain-fraud-wine-industry/"><span style="font-weight: 400;">wineries are using blockchain tech</span></a><span style="font-weight: 400;"> to verify the authenticity of batches of wine. This blockchain helps reduce counterfeit wine, which is a growing problem in the industry.&nbsp;</span></p>
<h2><b>How can you use blockchain in apps?</b></h2>
<p><span style="font-weight: 400;">Of course, blockchain use isn’t limited to any of these sectors or cases. The only thing limiting how you use blockchain is your imagination, including in your apps.&nbsp;</span></p>
<p><span style="font-weight: 400;">For app developers and businesses that want to invest in building an app, blockchain can increase your apps’ security, transparency, and stability in an unprecedented fashion. It can also help you craft experiences and solutions like no other.&nbsp;</span></p>
<p><span style="font-weight: 400;">To learn more about how your brand can use blockchain and get help putting it all together, </span><a href="https://blog-stg.cheesecakelabs.com/contact/"><span style="font-weight: 400;">reach out to the team at Cheesecake Labs today</span></a><span style="font-weight: 400;">. </span></p>
<p>The post <a rel="nofollow" href="https://blog-stg.cheesecakelabs.com/blockchain-guide-getting-started-blockchain-app/">What is blockchain? A guide for getting started with blockchain in your app</a> appeared first on <a rel="nofollow" href="https://blog-stg.cheesecakelabs.com">Cheesecake Labs</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How to architect delightful Flutter projects</title>
		<link>https://blog-stg.cheesecakelabs.com/architect-flutter-projects/</link>
		
		<dc:creator><![CDATA[Mayara Cristine Wandall]]></dc:creator>
		<pubDate>Tue, 27 Jul 2021 02:35:13 +0000</pubDate>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[mobile app development]]></category>
		<guid isPermaLink="false">https://blog-stg.cheesecakelabs.com/?p=7762/</guid>

					<description><![CDATA[<p>Flutter is a Google framework used to build natively compiled applications for mobile, web, desktop and embedded devices with a single codebase. You can easily start a new Flutter project by following the guide: Getting started &#8211; Flutter. Cheesecake Labs is currently the TOP #10 Mobile and Web App Development Company Worldwide and has delivered [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://blog-stg.cheesecakelabs.com/architect-flutter-projects/">How to architect delightful Flutter projects</a> appeared first on <a rel="nofollow" href="https://blog-stg.cheesecakelabs.com">Cheesecake Labs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Flutter is a Google framework used to build natively compiled applications for mobile, web, desktop and embedded devices with a single codebase. You can easily start a new Flutter project by following the guide: <a href="https://flutter.dev/docs/get-started/install" target="_blank" rel="noopener noreferrer">Getting started &#8211; Flutter</a>.</p>
<p>Cheesecake Labs is currently the <a href="https://blog-stg.cheesecakelabs.com/blog/technology-gold-winners-top-10-worldwide/">TOP #10 Mobile and Web App Development Company Worldwide</a> and has delivered awesome digital products to our clients including Flutter apps.<br />
<span id="more-7762"></span></p>
<p>When discussing architecture on Flutter apps, there are many ways to structure your code and widgets. The main goal of this proposal is to make your project easy to scale and keep everything organized at same time.</p>
<p>On this post, we&#8217;ll use the following packages:</p>
<ul>
<li><a href="https://pub.dev/packages/dio" target="_blank" rel="noopener noreferrer">Dio</a>: A powerful HTTP client for Dart</li>
<li><a href="https://pub.dev/packages/get_it" target="_blank" rel="noopener noreferrer">GetIt</a>: A simple service locator for Flutter and Dart</li>
<li><a href="https://pub.dev/packages/flutter_bloc" target="_blank" rel="noopener noreferrer">Flutter BLoC</a>: A package that helps implement the BLoC pattern</li>
</ul>
<h2>Creating a base structure</h2>
<p>When you start a new project from scratch, you may have a project structure like this:</p>
<pre class="language-swift"><code class="language-swift">.
├── android
├── assets
├── build
├── ios
├── lib
├── test
├── README.md
├── analysis_options.yaml
├── pubspec.lock
├── pubspec.yaml</code></pre>
<p>So let&#8217;s start setting up our directories in the lib folder as below:</p>
<pre class="language-swift"><code class="language-swift">.
├── components
├── constants
├── core
├── interfaces
├── middlewares
├── modules
├── utils
├── main.dart
└── routes.dart</code></pre>
<p>Now our basic structure is set up! Don&#8217;t worry about all those folders and files, throughout the next topics we&#8217;ll cover the purpose of each one and why we need all of them.</p>
<h2>Components: Atomic Widgets</h2>
<p>Like React/React Native projects here at Cheesecake Labs, we work with Atomic System/Components to make our widgets more reusable and organized.</p>
<p><img fetchpriority="high" decoding="async" class="size-full wp-image-7764 aligncenter" src="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/07/flutter-Atomic-Widgets.jpg" alt="" width="1024" height="768" srcset="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/07/flutter-Atomic-Widgets.jpg 1024w, https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/07/flutter-Atomic-Widgets-768x576.jpg 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>
<p style="text-align: center;"><em>source: Brad Frost (2016)</em></p>
<p>In essence, we structure the components as:</p>
<ul>
<li><strong>Atoms:</strong> The fundamental components like custom texts, buttons, icons and typography.</li>
<li><strong>Molecules:</strong> Basically, they are groups of atoms. One example is a list tile.</li>
<li><strong>Organisms:</strong> They are an association of molecules, like a custom list or a form.</li>
<li><strong>Templates:</strong> They are the final structure composed by organisms. Our pages/screens will use a template instance to set the real content.</li>
</ul>
<p>Considering the information above, we can organize the components folder like:</p>
<pre class="language-swift"><code class="language-swift">.
├── atoms
├── molecules
├── organisms
└── templates</code></pre>
<p>If you want to dive into Atomic System, we recommend the following articles:</p>
<ul>
<li><a href="https://blog-stg.cheesecakelabs.com/blog/rethinking-atomic-design-react-projects/">Rethinking Atomic React</a></li>
<li><a href="https://bradfrost.com/blog/post/atomic-web-design/" target="_blank" rel="noopener noreferrer">Atomic Design by Brad Frost</a></li>
</ul>
<h2>What are constants?</h2>
<p>Constants are the code that is immutable in your application. The following can be considered a constant:</p>
<ul>
<li>Colors</li>
<li>Styles</li>
<li>Specific numbers</li>
</ul>
<p>For example, if you need to change the color of the application or the size of the font that you are using, you&#8217;ll need to replace the old constant value in one file only.</p>
<h2>The application core</h2>
<p>The core layer is responsible for the services which the app will use all along its lifecycle. There are two core services we usually set up:</p>
<h3>Dependency Injection</h3>
<p>We can create a dart file and register our instances as the following:</p>
<pre class="language-swift"><code class="language-swift">
GetIt getIt = GetIt.instance;

void startGetItModules() {
  _networkModules();
  ...
}

void _networkModules() {
  getIt.registerSingleton&lt;Dio&gt;(
    HttpHelper(dotenv.env['BASE_URL']!).addInterceptor(AuthInterceptor()).dio,
  );
}
...</code></pre>
<p>It will allow us to provide dependencies to our classes, keep the instances easy to change for different implementations, and help separate the module layers.</p>
<h3>Navigation</h3>
<p>To help us work with navigation more efficiently, let&#8217;s create a custom navigator:</p>
<pre class="language-swift"><code class="language-swift">
class RouteNavigator {
  static final GlobalKey&lt;NavigatorState&gt; navigatorKey = 
       GlobalKey&lt;NavigatorState&gt;();

  static Future&lt;dynamic&gt;? pushReplacementNamed&lt;Arguments&gt;(
  {required String routeName, Arguments? arguments}) {
    return navigatorKey.currentState
        ?.pushReplacementNamed(routeName, arguments: arguments);
  }

  static void pop() {
    navigatorKey.currentState?.pop();
  }
  ...
}</code></pre>
<p>And to start using this navigator, you need to pass the navigatorKey to your<br />
MaterialApp.</p>
<pre class="language-swift"><code class="language-swift">
class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'My App',
      navigatorKey: RouteNavigator.navigatorKey,
      onGenerateRoute: (routeSettings) {
         return MaterialPageRoute(builder: routes[routeSettings.name]!);
      },
      ...
    );
  }
}</code></pre>
<p>By using this class, we&#8217;ll be able to navigate through the app with no context required, just by calling:</p>
<pre class="language-swift"><code class="language-swift">
RouteNavigator.pushNamed(...).
</code></pre>
<h2>Interfaces</h2>
<p>When we develop an app, we usually need to communicate with an API or some external resource, such as a local database and sensors. So, the interfaces folder is the place where you store the files that will help you with this communication.</p>
<p>A common example is the creation of a Dio instance to work with HTTP Requests:</p>
<pre class="language-swift"><code class="language-swift">
class HttpHelper {
  final String _url;
  late final BaseOptions _options;
  late final Dio _dio;
  Dio get dio =&gt; _dio;

  HttpHelper(this._url) {
    _buildBaseOptions();
    _buildHttp();
  }

  void _buildBaseOptions() {
    _options = BaseOptions(
      baseUrl: _url,
      responseType: ResponseType.json,
    );
  }

  void _buildHttp() {
    _dio = Dio(_options);
  }

  HttpHelper addInterceptor(Interceptor interceptor) {
    _dio.interceptors.add(interceptor);

    return this;
  }
}</code></pre>
<h2>Middlewares</h2>
<p>Middlewares are responsible for providing an extension to an event or action from your application. This can be an HTTP request interceptor, a logger or something similar.</p>
<p>Here you can see an example of a middleware that throws a custom error when the request to an API returns the status code 401:</p>
<pre class="language-swift"><code class="language-swift">
class AuthInterceptor extends Interceptor {
  @override
  void onError(DioError err, ErrorInterceptorHandler handler) {
    if (err.response != null) {
      if (err.response?.statusCode == 401) {
        throw UnauthorizedException();
      }
    }
    handler.next(err);
  }
}</code></pre>
<h2>Modules: A hexagonal architecture approach</h2>
<p>This folder is the most important, as it contains all modules that implement our features and its business rules. Here we&#8217;ll use an hexagonal architecture approach in a way that allows us to separate our application layer from the domain layer and the infrastructure layer. So, every module will be structured according to the following architecture:</p>
<p><img decoding="async" class="size-full wp-image-7765 aligncenter" src="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/07/flutter-hexagonal-architecture.png" alt="" width="851" height="631" srcset="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/07/flutter-hexagonal-architecture.png 851w, https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/07/flutter-hexagonal-architecture-768x569.png 768w" sizes="(max-width: 851px) 100vw, 851px" /></p>
<p>With this architecture, the code will be more organized, but we also need to modularize it to make it easy to add a new feature, modify the old ones and make the code more reusable.</p>
<p>So, we suggest you structure the modules as:</p>
<pre class="language-swift"><code class="language-swift">.
└── feature
  ├── blocs
  │
  ├── data
  │ └── datasource //abstract datasources
  │ └── repositories //implementation of abstract repositories
  │
  ├── datasource //implementation of abstract datasources
  │
  ├── domain
  │ └── entities
  │ └── repositories //abstract repositories
  │
  └── screens</code></pre>
<p>Separating the modules this way allows us to use different implementations for every layer. We can, for example, create multiple different screens with the same domain logic or even change all the data source providers without affecting the entire application. For example, our app is separated into independent pieces which are able to work individually.</p>
<p>Moreover, this approach supports testability, which is a good point for building a reliable project and improving code quality.</p>
<h2>Conclusion</h2>
<p>When you are dealing with complex projects that contain many features, this architecture is a lot of help when it comes to keeping everything organized, easy to modify, and extremely simple to maintain and to test the code along the development process.</p>
<p>This is just an efficient way we&#8217;ve come up with to structure our Flutter projects here at Cheesecake Labs and we hope it helps you as well.</p>
<p>Would you like to know more about how to use Flutter to get your project off the drawing board? Contact us!!</p>
<h2>References</h2>
<ul>
<li><a href="https://martinfowler.com/bliki/PresentationDomainDataLayering.html" target="_blank" rel="noopener noreferrer">https://martinfowler.com/bliki/PresentationDomainDataLayering.html</a></li>
<li><a href="https://resocoder.com/2020/03/09/flutter-firebase-ddd-course-1-domain-driven-design-principles/" target="_blank" rel="noopener noreferrer">https://resocoder.com/2020/03/09/flutter-firebase-ddd-course-1-domain-driven-design-principles/</a></li>
<li><a href="https://bloclibrary.dev/#/architecture" target="_blank" rel="noopener noreferrer">https://bloclibrary.dev/#/architecture</a></li>
<li><a href="https://medium.com/flutterdevs/explore-clean-architecture-in-flutter-3fff83e0f1f2" target="_blank" rel="noopener noreferrer">https://medium.com/flutterdevs/explore-clean-architecture-in-flutter-3fff83e0f1f2</a></li>
</ul>
<p>The post <a rel="nofollow" href="https://blog-stg.cheesecakelabs.com/architect-flutter-projects/">How to architect delightful Flutter projects</a> appeared first on <a rel="nofollow" href="https://blog-stg.cheesecakelabs.com">Cheesecake Labs</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Apps built with Flutter — 6 great examples</title>
		<link>https://blog-stg.cheesecakelabs.com/apps-built-flutter-6-great-examples/</link>
					<comments>https://blog-stg.cheesecakelabs.com/apps-built-flutter-6-great-examples/#respond</comments>
		
		<dc:creator><![CDATA[Mayara Cristine Wandall]]></dc:creator>
		<pubDate>Fri, 09 Jul 2021 19:29:52 +0000</pubDate>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Opinion]]></category>
		<category><![CDATA[mobile app development]]></category>
		<category><![CDATA[mobile app developer]]></category>
		<category><![CDATA[iOS development]]></category>
		<guid isPermaLink="false">https://blog-stg.cheesecakelabs.com/?p=7715/</guid>

					<description><![CDATA[<p>Considering using Flutter to build your next mobile app? That’s a great choice. After all, Flutter is backed by Google and used by some of the biggest apps in the world. In this blog post, we’ll explore what’s so powerful about Flutter as a cross-platform framework and which apps you can draw inspiration from for [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://blog-stg.cheesecakelabs.com/apps-built-flutter-6-great-examples/">Apps built with Flutter — 6 great examples</a> appeared first on <a rel="nofollow" href="https://blog-stg.cheesecakelabs.com">Cheesecake Labs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Considering using Flutter to build your next mobile app? That’s a great choice.</p>
<p>After all, Flutter is backed by Google and used by some of the biggest apps in the world. In this blog post, we’ll explore what’s so powerful about Flutter as a cross-platform framework and which apps you can draw inspiration from for your upcoming development project.<br />
<span id="more-7715"></span></p>
<h2>What is Flutter?</h2>
<p><img decoding="async" class="aligncenter wp-image-7718" src="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/07/flutter-logoblue-1.png" alt="" width="535" height="150" srcset="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/07/flutter-logoblue-1.png 946w, https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/07/flutter-logoblue-1-768x215.png 768w" sizes="(max-width: 535px) 100vw, 535px" /></p>
<p>Flutter is a cross-platform mobile app development framework. It includes a set of tools to help developers make high-quality apps for iOS and Android with great ease and speed.</p>
<p>Flutter was released by Google in 2018. It&#8217;s still one of the newer cross-platform development tools, but it has quickly gained traction — and is now what powers many of your favorite apps.</p>
<p>Its speed, simplicity of use, and flexibility make it a popular choice for developers and app owners alike.</p>
<h2>What makes Flutter a great choice for mobile app development?</h2>
<p>Google created Flutter with a single-minded goal: to provide a toolset for developers to build cross-platform mobile applications easily. In its short time since launch, Flutter has continued to grow and has released even more features to improve and streamline the app development process.</p>
<p>While other cross-platform frameworks like <a href="https://blog-stg.cheesecakelabs.com/blog/react-native-examples-innovative-brands/">React Native</a> can also provide this functionality, there are a few things that set Flutter apart from its competition.</p>
<blockquote><p><strong>You may also like:<br />
</strong><a href="https://blog-stg.cheesecakelabs.com/blog/flutter-vs-react-native-development/">Getting you up to speed on Flutter vs React Native vs native development</a></p></blockquote>
<h3>Flutter compiles to native code (rather than interpreting)</h3>
<p>Cross-platform frameworks empower developers to quickly and efficiently create mobile apps. And while that’s a huge benefit of cross-platform development on the whole, Flutter and its fellow cross-platform framework — React Native — does so in different ways.</p>
<p>Many cross-platform frameworks, like React Native, use an interpreter to run applications. An interpreter is like a medium between your application code and a smartphone. It translates your application&#8217;s instructions in real-time to a smartphone, so it functions correctly for your users.</p>
<p>As you can imagine, this is an additional step — and comes at the cost of development speed, however negligible but impactful on time to market.</p>
<p>Flutter, on the other hand, compiles its code directly to a smartphone’s native code. It skips the interpretation step, and as a result, you get a faster application. While you can get similar performance with other cross-platform tools, you have to do some extra work to get there.</p>
<h3>Flutter keeps your options open in terms of cross-platform UI (user interface)</h3>
<p>You know how important a seamless, consistent digital experience is — no matter what device your user has in their hand. With Flutter, you’ve got options for how you make this happen. You can roll out the same user interface across Android and iOS, or you can create different designs from one platform to the next.</p>
<p>Having the same user interface on every device means you know for sure your brand is consistent everywhere. It doesn’t matter how old a device is or what operating system your users are working with — your UI and experience will always appear the same.</p>
<p>That said, sometimes it makes more sense to have custom experiences for Android users and iOS. And in those instances, Flutter is still a great choice for your development framework.</p>
<h3>Flutter has plugin infrastructure</h3>
<p>The Flutter framework supports a large plugin ecosystem, providing developers access to add native functionality by importing code to their projects. These features can be anything from Bluetooth access to GPS locations — improving your app’s experience and delivering more value to your users (and business).</p>
<p>Many of these plugins are created and maintained by Google too, so you know you&#8217;re getting great quality software for your app.</p>
<h3>Flutter goes <em>beyond</em> mobile</h3>
<p>For many cross-platform development frameworks, mobile is the stopping point. If you want to build on desktop computers or another platform, you’ll need another codebase. But that’s not the case with Flutter.</p>
<p>Google&#8217;s newest version of Flutter gives developers the ability to use their Flutter code <a href="https://flutter.dev/docs/development/tools/sdk/release-notes/supported-platforms" target="_blank" rel="noopener noreferrer">on other devices</a>, including <a href="https://flutter.dev/web" target="_blank" rel="noopener noreferrer">web</a>. You can now use one codebase for mobile, Windows, macOS, and Linux devices — further adding to Flutter’s cost-effectiveness and flexibility.</p>
<h2>6 of our favorite apps built using Flutter</h2>
<p><a href="https://flutter.dev/docs/resources/faq#:~:text=Flutter%201.0%20was%20launched%20on,hundreds%20of%20millions%20of%20devices." target="_blank" rel="noopener noreferrer">More than 100,000 apps</a> use Flutter, reaching millions of mobile devices. The question is, how many big-name companies use Flutter to make their software run? And what can we learn from them?</p>
<p>Below are just a few of our favorite examples of Flutter in the wild&#8230;</p>
<h3>1. eBay Motors</h3>
<p><img decoding="async" class="aligncenter wp-image-7720 size-full" src="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/07/ebay-motors-flutter-e1625859275798.png" alt="" width="1299" height="690" srcset="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/07/ebay-motors-flutter-e1625859275798.png 1299w, https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/07/ebay-motors-flutter-e1625859275798-768x408.png 768w, https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/07/ebay-motors-flutter-e1625859275798-1280x680.png 1280w" sizes="(max-width: 1299px) 100vw, 1299px" /></p>
<p>The first app we’ll take a look at is eBay Motors.</p>
<p>eBay needed a way to provide a great shopping experience for its users looking to buy cars online. Sure, a web browser may have been the first choice a few years ago, but now — with the rise of mobile — that’s not what users are after. Instead, the app needed to utilize a smartphone’s in-built features; managing listings, uploading media, and finding vehicles to purchase on the fly.</p>
<p>Flutter allowed eBay Motors to provide a seamless vehicle shopping experience online. eBay Motors<a href="https://tech.ebayinc.com/product/ebay-motors-accelerating-with-fluttertm/" target="_blank" rel="noopener noreferrer"> put the pedal to the metal with Flutter 1.0</a> — delivering the first beta version of their app within just three months.</p>
<p>Download eBay Motors for Android <a href="https://play.google.com/store/apps/details?id=com.ebay.motorsapp&amp;hl=en_GB&amp;gl=US" target="_blank" rel="noopener noreferrer">here</a>, and iOS <a href="https://apps.apple.com/us/app/ebay-motors-buy-sell-cars/id1456156090" target="_blank" rel="noopener noreferrer">here</a>.</p>
<h3>2. Nubank</h3>
<p><img decoding="async" class="aligncenter wp-image-7719 size-full" src="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/07/nubank-flutter-app-example-e1625859308405.png" alt="" width="1309" height="755" srcset="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/07/nubank-flutter-app-example-e1625859308405.png 1309w, https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/07/nubank-flutter-app-example-e1625859308405-768x443.png 768w" sizes="(max-width: 1309px) 100vw, 1309px" /></p>
<p>Nubank has been a mobile-first company since day one. At their start in 2013, they relied on Kotlin and Swift to create their mobile experiences. But as the company grew, it needed to expand its capabilities.</p>
<p>Nubank turned to Flutter to meet the growing demands of its app. Flutter allowed Nubank to expand on its app&#8217;s capabilities without writing the whole app from scratch. As time goes on, most of the codebase will migrate to Flutter as the rest of the codebase phases out.</p>
<p>Download Nubank for Android <a href="https://play.google.com/store/apps/details?id=com.nu.production&amp;hl=en_GB&amp;gl=US" target="_blank" rel="noopener noreferrer">here</a>, and iOS <a href="https://apps.apple.com/gb/app/nubank/id814456780" target="_blank" rel="noopener noreferrer">here</a>.</p>
<h3>3. Grab</h3>
<p><img decoding="async" class="aligncenter wp-image-7721 size-full" src="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/07/grab-flutter-app-e1625859337308.png" alt="" width="1309" height="674" srcset="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/07/grab-flutter-app-e1625859337308.png 1309w, https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/07/grab-flutter-app-e1625859337308-768x395.png 768w" sizes="(max-width: 1309px) 100vw, 1309px" /></p>
<p>Grab is a platform that allows local restaurants to deliver food straight to their customer’s doors. Users head to the app to order their food online and wait for a delivery driver to deliver their meal. But we don’t need to explain the online food delivery model to you — with a <a href="https://beambox.com/townsquare/food-delivery-service-statistics" target="_blank" rel="noopener noreferrer">year on year growth of 20.2%</a>, there’s no doubt you’ve experienced it for yourself.</p>
<p>To help merchants take advantage of this growing market, Grab needed to create a mobile app that gave restaurant owners control over their delivery business.</p>
<p>Powered by Flutter, merchants can track orders, view reports, add team members, and everything else needed to manage their deliveries with ease.</p>
<p>Download Grab for Android <a href="https://play.google.com/store/apps/details?id=com.grabtaxi.passenger&amp;hl=en&amp;gl=US" target="_blank" rel="noopener noreferrer">here</a>, and iOS <a href="https://apps.apple.com/us/app/grab-grabtaxi/id647268330" target="_blank" rel="noopener noreferrer">here</a>.</p>
<h3>4. Topline &#8211; Abbey Road Studios</h3>
<p><img decoding="async" class="aligncenter wp-image-7722 size-full" src="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/07/topline-flutter-app-e1625859375718.png" alt="" width="1309" height="736" srcset="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/07/topline-flutter-app-e1625859375718.png 1309w, https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/07/topline-flutter-app-e1625859375718-768x432.png 768w" sizes="(max-width: 1309px) 100vw, 1309px" /></p>
<p>Topline is an app developed by Abbey Road Studios to help musicians save song ideas while they’re on the go — whenever inspiration strikes! Just a few taps on the app and lyrics, audio, and other files are saved instantly on the cloud. Once there, these thoughts and visions can be shared and synced across their team.</p>
<p>Abbey Road Studios took advantage of Flutter to build their app in just 10 weeks. It was featured in Google I/O 2018 and won <a href="https://www.miquido.com/blog/the-spectacular-success-of-abbey-road-studios-topline-app-at-uk-app-awards-2018/" target="_blank" rel="noopener noreferrer">two awards in the UK App Awards 2018</a>.</p>
<p>Download Topline for Android <a href="https://play.google.com/store/apps/details?id=com.abbeyroadandroid&amp;hl=en_GB&amp;gl=US" target="_blank" rel="noopener noreferrer">here</a>, and iOS <a href="https://apps.apple.com/gb/app/topline/id1270125833" target="_blank" rel="noopener noreferrer">here</a>.</p>
<h3>5. Hamilton</h3>
<p><img decoding="async" class="aligncenter wp-image-7723 size-full" src="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/07/hamilton-flutter-app-example-e1625859404307.png" alt="" width="1309" height="687" srcset="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/07/hamilton-flutter-app-example-e1625859404307.png 1309w, https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/07/hamilton-flutter-app-example-e1625859404307-768x403.png 768w" sizes="(max-width: 1309px) 100vw, 1309px" /></p>
<p>Broadway theatre and emerging tech doesn’t always go hand in hand. But the app for stage-sensation, Hamilton, is an exception to the rule. The stage show’s official app connects theatre-lovers to exclusive content, merchandise, and even daily giveaways.</p>
<p>Speaking about how Flutter improved the process, Hamilton’s digital design partner <a href="https://blog.goposse.com/rise-up-the-story-of-how-the-hamilton-app-uses-flutter-to-do-more-for-its-fans-1d9cd76f95f1" target="_blank" rel="noopener noreferrer">said</a>: “Flutter made it possible to deliver more and at a higher level of quality. If we had developed two independent fully native apps, we never would have shipped the feature set we had at launch.”</p>
<p>Download the Hamilton app for Android <a href="https://play.google.com/store/apps/details?id=com.hamilton.app&amp;hl=en_GB&amp;gl=US" target="_blank" rel="noopener noreferrer">here</a>, and iOS <a href="https://apps.apple.com/us/app/hamilton-the-official-app/id1255231054" target="_blank" rel="noopener noreferrer">here</a>.</p>
<h3>6. MGM Resorts</h3>
<p><img decoding="async" class="aligncenter wp-image-7724 size-full" src="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/07/mgm-flutter-app-example-e1625859436122.png" alt="" width="1309" height="693" srcset="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/07/mgm-flutter-app-example-e1625859436122.png 1309w, https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/07/mgm-flutter-app-example-e1625859436122-768x407.png 768w" sizes="(max-width: 1309px) 100vw, 1309px" /></p>
<p>MGM is one of the biggest names in US hospitality, with venues and experiences in Las Vegas, Detroit, Massachusetts, and elsewhere across the States.</p>
<p>In a sector where speed and seamlessness are key ways to outshine the competition, MGM’s Flutter-built Android and iOS apps support digital room access, personalized entertainment recommendations, and real-time dinner reservations.</p>
<p>Download the MGM app for Android <a href="https://play.google.com/store/apps/details?id=com.mgmresorts.mgmresorts" target="_blank" rel="noopener noreferrer">here</a>, and iOS <a href="https://apps.apple.com/us/app/mgm-resorts-international/id366518979" target="_blank" rel="noopener noreferrer">here</a>.</p>
<h2>Start your next Flutter application today — and count on Cheesecake Labs to deliver results</h2>
<p>In a world where being nimble and adaptable is essential to stay competitive, you can’t afford to work with older, slower development methods. Flutter won’t only help you launch your next app in less time, but it will also help you maintain your app in the future.</p>
<p>Are you thinking about using Flutter to build your new app? <a href="https://blog-stg.cheesecakelabs.com/contact/">Reach out to the Cheesecake Labs team</a> and talk to the group of experts who can make it happen.</p>
<p>The post <a rel="nofollow" href="https://blog-stg.cheesecakelabs.com/apps-built-flutter-6-great-examples/">Apps built with Flutter — 6 great examples</a> appeared first on <a rel="nofollow" href="https://blog-stg.cheesecakelabs.com">Cheesecake Labs</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog-stg.cheesecakelabs.com/apps-built-flutter-6-great-examples/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Getting you up to speed on Flutter versus React Native versus native development</title>
		<link>https://blog-stg.cheesecakelabs.com/flutter-vs-react-native-development/</link>
		
		<dc:creator><![CDATA[Mayara Cristine Wandall]]></dc:creator>
		<pubDate>Fri, 28 May 2021 18:16:44 +0000</pubDate>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Engineering]]></category>
		<guid isPermaLink="false">https://blog-stg.cheesecakelabs.com/?p=7543/</guid>

					<description><![CDATA[<p>The Cheesecake Labs team’s goal is to provide you with the best version of your digital product. And there’s no one way of getting that right. The good news is we now have plenty of options to choose from. And, at CKL, we’re fully trained and ready to go using a range of different programming [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://blog-stg.cheesecakelabs.com/flutter-vs-react-native-development/">Getting you up to speed on Flutter versus React Native versus native development</a> appeared first on <a rel="nofollow" href="https://blog-stg.cheesecakelabs.com">Cheesecake Labs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><span style="font-weight: 400;">The Cheesecake Labs team’s goal is to provide you with the best version of your digital product. And there’s no </span><i><span style="font-weight: 400;">one</span></i><span style="font-weight: 400;"> way of getting that right.</span></p>
<p>The good news is we now have plenty of options to choose from. And, at CKL, we’re fully trained and ready to go using a range of different programming languages and frameworks — whichever is the best approach for your project. All that remains to resolve is which is better for your app when it comes to Flutter versus React Native versus native development.<br />
<span id="more-7543"></span></p>
<h2><span style="font-weight: 400;">Flutter versus React Native versus native apps — what’s the difference?</span></h2>
<p><span style="font-weight: 400;">You have two main options when developing mobile apps: cross-platform and native development.&nbsp;</span></p>
<p><span style="font-weight: 400;">In native development, you take advantage of the tools provided by the device&#8217;s operating system:</span></p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">For </span><b>Android</b><span style="font-weight: 400;"> devices, you use </span><b>Kotlin</b><span style="font-weight: 400;"> programming language with the</span><b> Android SDK.</b></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">For </span><b>iOS</b><span style="font-weight: 400;"> devices, you use </span><b>Swift alongside the iOS SDK</b><span style="font-weight: 400;">.</span></li>
</ul>
<p><span style="font-weight: 400;">Things are a little different with <a href="https://blog-stg.cheesecakelabs.com/blog/apps-built-flutter-6-great-examples/">Flutter </a>and <a href="https://blog-stg.cheesecakelabs.com/blog/react-native-examples-innovative-brands/">React Native</a>. Instead of using the native tools provided by the device&#8217;s operating system, you use cross-platform tools to create one codebase for your whole app.</span></p>
<p><span style="font-weight: 400;">In simple terms&#8230;</span></p>
<ul>
<li style="font-weight: 400;"><b>React Native</b><span style="font-weight: 400;"> is a framework for building native iOS and Android applications using JavaScript. It&#8217;s based on the same concepts as React, but uses native components to render a user interface (UI).</span></li>
<li style="font-weight: 400;"><b>Flutter</b><span style="font-weight: 400;">, on the other hand, uses the </span><b>Dart</b><span style="font-weight: 400;"> programming language to compile the native application, re-implementing native components with identical UI and experience.</span></li>
</ul>
<p><span style="font-weight: 400;">While React Native and Flutter can be used to create the same result — a delightful digital experience — there are quite a few differences in how they work. So let’s unpack each in a bit more detail.</span></p>
<blockquote><p><strong>You may also like:<br />
</strong><a href="https://blog-stg.cheesecakelabs.com/blog/react-native-examples-innovative-brands/">Here&#8217;s how the world&#8217;s most innovative brands use React Native (+5 great examples)</a></p>
<p><a href="https://blog-stg.cheesecakelabs.com/blog/apps-built-flutter-6-great-examples/">Apps built with Flutter — 6 great examples</a><strong><br />
</strong></p></blockquote>
<h2><span style="font-weight: 400;">React Native versus Flutter: a visual overview</span></h2>
<p><strong>React Native:</strong></p>
<ul>
<li>A cross-platform framework using native components to render a user interface (UI)</li>
<li>Released on March 2015</li>
<li>Created by&nbsp;Facebook</li>
<li>JavaScript (a very popular programming language)</li>
</ul>
<p><strong>Flutter:</strong></p>
<ul>
<li>A cross-platform framework that compiles to native code, using identical replicas of native components on the UI</li>
<li>Released on December 2018</li>
<li>Created by&nbsp;Google</li>
<li>Dart (a type safe programming language, benefiting from fewer runtime errors)</li>
</ul>
<h2><span style="font-weight: 400;">What is React Native?</span></h2>
<p><span style="font-weight: 400;">React Native is a development framework created by Facebook in 2015. It was conceived as an extension to Facebook&#8217;s original React framework, extending its capability to mobile.</span></p>
<p><span style="font-weight: 400;">React Native developers rely on the JavaScript language to build their apps. It provides a set of building blocks that let developers quickly and easily build mobile apps. These building blocks wrap a mobile device’s native code, meaning developers can easily create cross-platform apps that match a phone’s native user interface.</span></p>
<h3><b>Pros of React Native</b></h3>
<h4><b><br />
Tons of talent</b></h4>
<p><span style="font-weight: 400;">React Native uses JavaScript — </span><a href="https://insights.stackoverflow.com/survey/2020#technology-programming-scripting-and-markup-languages" target="_blank" rel="noopener noreferrer"><span style="font-weight: 400;">the most popular programming language</span></a><span style="font-weight: 400;"> for the eighth year in a row! That means you’ll have your pick of great developers to help build your React Native app (particularly versus Flutter, which uses Dart — a language that isn’t half as popular in 2021). And while you </span><i><span style="font-weight: 400;">can</span></i><span style="font-weight: 400;"> find great people with other frameworks, it’s hard to find the same abundance of talent as you would with a popular programming language like JavaScript.</span></p>
<h4><b><br />
A vast and growing community</b></h4>
<p><span style="font-weight: 400;">React is also one of the most popular JavaScript frameworks out there. There’s a large community and plenty of training for React Native developers to take advantage of.</span></p>
<p><span style="font-weight: 400;">Better still, React is also </span><a href="https://insights.stackoverflow.com/survey/2020#technology-most-loved-dreaded-and-wanted-web-frameworks-wanted2" target="_blank" rel="noopener noreferrer"><span style="font-weight: 400;">the most “wanted” framework</span></a><span style="font-weight: 400;"> according to the Stack Overflow Developer Survey 2020, meaning we should see even greater adoption and talent development in the future.</span></p>
<h3><b>Cons of React Native</b></h3>
<h4><b><br />
Fewer native components</b></h4>
<p><span style="font-weight: 400;">React Native provides a lot of power to its developers. It lets them create custom UI components and apply them across their application. However, this also means you need to make all those components from scratch.</span></p>
<p><span style="font-weight: 400;">React Native comes with fewer off-the-shelf components versus Flutter and its alternatives. If you want to get up and running quickly, working with a framework that contains more components might be a better option. </span><i><span style="font-weight: 400;">Or</span></i><span style="font-weight: 400;"> you could use React Native + a UI framework like </span><a href="https://github.com/xotahal/react-native-material-ui" target="_blank" rel="noopener noreferrer"><span style="font-weight: 400;">Material UI</span></a><span style="font-weight: 400;"> or </span><a href="https://wix.github.io/react-native-ui-lib/" target="_blank" rel="noopener noreferrer"><span style="font-weight: 400;">RNUI</span></a><span style="font-weight: 400;">. The final result won’t be </span><i><span style="font-weight: 400;">super</span></i><span style="font-weight: 400;"> customized, but it’ll help you achieve a sweet spot between bespoke builds and speedy time-to-market.</span></p>
<h4><b><br />
More likely to break with new OS versions</b></h4>
<p><span style="font-weight: 400;">Your React Native app uses the phone’s native styling when rendering your UI. On one hand, this means your app will look great on devices where you know how the styling works. But on the other, every now and then you’ll be met with problems as operating systems update and change their styling.</span></p>
<p><span style="font-weight: 400;">You&#8217;ll need to test your app’s user interface every time a new OS version is released. Google and Apple also change how their phone&#8217;s UI works at times, so you&#8217;ll need to adapt quickly to those changes too.</span></p>
<h4><b><br />
Abandoned packages</b></h4>
<p><span style="font-weight: 400;">Versus Flutter, the React Native ecosystem is enormous and provides a lot of pre-built packages for developers. While this lets them produce apps more quickly, it becomes a problem when a package developer stops updating their software.</span></p>
<p><span style="font-weight: 400;">React Native has many abandoned packages in the wild. Your developers will need to make sure they&#8217;re using software that&#8217;s likely to stay updated in the future (if there is such a thing!) and make sure everything they currently use still gets updates.</span></p>
<h2><span style="font-weight: 400;">What is Flutter?</span></h2>
<p><span style="font-weight: 400;">Flutter is newer to the cross-platform development scene versus React Native. Google released the framework in 2018 and it’s grown</span><i><span style="font-weight: 400;"> a lot</span></i><span style="font-weight: 400;"> in recent years.</span></p>
<p><span style="font-weight: 400;">Google’s Flutter makes use of the Dart programming language to build mobile apps. Unlike React Native and other popular cross-platform tools, Flutter compiles down to the same native app code that native apps use to run.</span></p>
<p><span style="font-weight: 400;">So what do you stand to gain — and what can hold you back — when choosing Flutter versus React Native?</span></p>
<h3><b>Pros of Flutter</b></h3>
<h4><b>Apps with better performance</b></h4>
<p><span style="font-weight: 400;">Speed is a common concern with frameworks based on JavaScript. These applications need to jump through hoops to run code native to mobile devices. Lower performance isn&#8217;t an issue in most cases, but can cause problems if you have a performance-intensive app idea.&nbsp;</span></p>
<p><span style="font-weight: 400;">Flutter frees you from such limitations.</span></p>
<p><span style="font-weight: 400;">Since Flutter compiles to native code, there’s less friction when running these applications. This means Flutter apps that are built right see better performance than other development frameworks, assuming your app will have a single view for both Android and iOS devices.</span></p>
<h4><b><br />
The same UI on all platforms</b></h4>
<p><span style="font-weight: 400;">It’s tough to manage varying UIs on different platforms. You need to always be on your guard against new updates to make sure nothing in your UI breaks. But since the Flutter UI appears the same on every device, this simply isn’t an issue.</span></p>
<p><span style="font-weight: 400;">The Flutter UI you build will work the same on every mobile OS and every version of those systems. This conformity means less testing and fewer bugs for your developers to deal with.</span></p>
<h4><b><br />
Out of the box components</b></h4>
<p><span style="font-weight: 400;">If speed is vital for launching your app, Flutter is a great cross-platform choice. It provides more out-of-the-box native components than other competing frameworks.</span></p>
<p><span style="font-weight: 400;">These components will help your developers prototype and </span><a href="https://blog-stg.cheesecakelabs.com/blog/screw-the-mvp/"><span style="font-weight: 400;">get to an MVP</span></a><span style="font-weight: 400;">. You won’t need to wait on your team to create the custom React Native components you need.</span></p>
<h3><b>Cons of Flutter</b></h3>
<h4><b><br />
Fewer developers (as it stands today)</b></h4>
<p><span style="font-weight: 400;">Having the features of Flutter isn’t worth much if you can’t find people to build your app or help maintain it. Flutter’s developer community is modest </span><a href="https://medium.com/flutterdevs/the-growth-of-flutter-development-3years-after-the-birth-of-alpha-78baee809dff" target="_blank" rel="noopener noreferrer"><span style="font-weight: 400;">but growing</span></a><span style="font-weight: 400;">, so as it stands today you may encounter a talent shortage when developing your app with Flutter versus React Native and other frameworks (although not at Cheesecake Labs).</span></p>
<p><span style="font-weight: 400;">Before starting a Flutter app, you&#8217;ll need to ensure you have the people available to deliver your vision. You could also face challenges onboarding new talent since there aren&#8217;t as many resources available to learn the programming language.</span></p>
<p><span style="font-weight: 400;">You simply need to </span><a href="https://blog-stg.cheesecakelabs.com/contact/"><span style="font-weight: 400;">pick your partners wisely</span></a><span style="font-weight: 400;">.</span></p>
<h4><b><br />
Fewer third-party libraries</b></h4>
<p><span style="font-weight: 400;">An abundance of third-party libraries awaits when working with popular programming languages, like JavaScript. These libraries help you get apps up and running quicker than creating everything from scratch.&nbsp;</span></p>
<p><span style="font-weight: 400;">Flutter and the Dart programming language aren’t </span><i><span style="font-weight: 400;">quite</span></i><span style="font-weight: 400;"> there yet.</span></p>
<p><span style="font-weight: 400;">The Flutter community is still small, so there aren’t as many resources available to build more complex app functionality. If your app needs more done than native components can provide, this can increase your development time.</span></p>
<h2><span style="font-weight: 400;">Cross-platform vs. Native: what should you choose for your app?</span></h2>
<p><img decoding="async" class="aligncenter wp-image-7546" src="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/05/choose.png" alt="Cross-platform vs. Native Mobile app development" width="599" height="389" srcset="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/05/choose.png 818w, https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/05/choose-768x500.png 768w" sizes="(max-width: 599px) 100vw, 599px" /></p>
<p><span style="font-weight: 400;">Now that you know what React Native and Flutter can do, the question is: should you pick one of these cross-platform development frameworks over native applications?</span></p>
<p><span style="font-weight: 400;">A native app requires you to use the programming language native to your phone. For Android phones, that programming language is Kotlin. For iOS devices, you’ll use Swift. If you want an app that runs on every phone type, you’ll need to write your code from scratch for each one —&nbsp;and maintain each codebase separately.</span></p>
<p><span style="font-weight: 400;">Things work differently with cross-platform apps. A cross-platform development framework lets you use one codebase for both Android and Apple devices. And therein lies the benefit, if you ask us.</span></p>
<h3><b>Working with one, cross-platform codebase&#8230;</b></h3>
<h4><b><br />
Reduces time to market</b></h4>
<p><span style="font-weight: 400;">Speed is a crucial component in the development of some apps. If you&#8217;re in a competitive market, launching your app quickly is vital to stay one step ahead of your rivals. If you need to create two codebases for your app, it&#8217;s harder to make this a reality.</span></p>
<p><span style="font-weight: 400;">A single codebase lets you launch your app on every device at the same time. Cross app frameworks are optimized for both devices, so you&#8217;ll spend less time coding and fighting device-specific software bugs, too.</span></p>
<h4><b><br />
Is easier to maintain</b></h4>
<p><span style="font-weight: 400;">As we discussed in our post about the </span><a href="https://blog-stg.cheesecakelabs.com/blog/building-app-phase-4-product-optimization/"><span style="font-weight: 400;">Product Optimization phase</span></a><span style="font-weight: 400;">, the app development process of a successful product never ends. There’s always updates to adapt to, bugs to squash, and evolving user demands your app needs to meet.</span></p>
<p><span style="font-weight: 400;">A single codebase is easier to maintain since the Android and iOS versions will share much of the same code. You can make changes quickly and launch updates on every phone at the same time.</span></p>
<h2><span style="font-weight: 400;">Four examples that show you what’s possible with cross-platform development</span></h2>
<p><span style="font-weight: 400;">These four apps — one that we built, and three that we love — are a great indication of what cross-platform development can do.</span></p>
<h3><b>Power Play Rewards by exMox</b></h3>
<p><img decoding="async" class="aligncenter wp-image-7310" src="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/03/powerplayrewards-exmox-app-react-native-example.png" alt="" width="981" height="600" srcset="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/03/powerplayrewards-exmox-app-react-native-example.png 1310w, https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/03/powerplayrewards-exmox-app-react-native-example-768x470.png 768w" sizes="(max-width: 981px) 100vw, 981px" /></p>
<p><span style="font-weight: 400;">Cheesecake Labs created the </span><a href="https://blog-stg.cheesecakelabs.com/portfolio/exmox/"><span style="font-weight: 400;">exMox app</span></a><span style="font-weight: 400;"> to provide a performance marketing network dedicated to gaming. </span><b>React Native</b><span style="font-weight: 400;"> was chosen to offer a seamless experience across <a href="https://play.google.com/store/apps/details?id=com.powerplayrewardsapp" target="_blank" rel="noopener noreferrer">Android</a> and iOS devices.</span></p>
<p><span style="font-weight: 400;">The exMox software provides game publishers with a way to keep players engaged. It gives personalized incentives and rewards, the latter of which can be used on in-app purchases, and dencourages players to invite their friends.</span></p>
<h3><b>Instagram</b></h3>
<p><img decoding="async" class="aligncenter wp-image-7558" src="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/05/instagram-mobile-app-ux-design.png" alt="" width="1343" height="600" srcset="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/05/instagram-mobile-app-ux-design.png 2010w, https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/05/instagram-mobile-app-ux-design-768x343.png 768w" sizes="(max-width: 1343px) 100vw, 1343px" /></p>
<p><span style="font-weight: 400;">What better example of a cross-platform app than one of the largest one in the world? Instagram makes use of</span><b> React Native</b><span style="font-weight: 400;"> to provide a great experience for users on any device.</span></p>
<p><span style="font-weight: 400;">Instagram’s developers use React Native to push updates to all devices at the same time. It simplified their codebase, allowing them to expand Instagram’s features and protect their stake in the competitive landscape.</span></p>
<h3><b>Grab</b></h3>
<p><img decoding="async" class="aligncenter wp-image-7559" src="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/05/grab-mobile-app-screens.png" alt="" width="1221" height="600" srcset="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/05/grab-mobile-app-screens.png 2862w, https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/05/grab-mobile-app-screens-768x377.png 768w" sizes="(max-width: 1221px) 100vw, 1221px" /></p>
<p><span style="font-weight: 400;">The Grab app was created for </span><a href="https://apps.apple.com/ph/app/grabmerchant/id1282271764" target="_blank" rel="noopener noreferrer"><span style="font-weight: 400;">Android</span></a><span style="font-weight: 400;"> and </span><a href="https://apps.apple.com/ph/app/grabmerchant/id1282271764" target="_blank" rel="noopener noreferrer"><span style="font-weight: 400;">iOS</span></a><span style="font-weight: 400;"> devices to give food delivery businesses an easy-to-use mobile app to manage their business. Grab used </span><b>Flutter</b><span style="font-weight: 400;"> to provide a consistent experience across every device the app runs on.</span></p>
<p><span style="font-weight: 400;">This app allows merchants to view the data about their store in one place. They can see sales, view refunds, manage employees, and manage menus.</span></p>
<h3><b>BMW</b></h3>
<p><img decoding="async" class="aligncenter wp-image-7561" src="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/05/my-bmw-app-ux-design2.jpg" alt="" width="1062" height="600" srcset="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/05/my-bmw-app-ux-design2.jpg 1280w, https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/05/my-bmw-app-ux-design2-768x434.jpg 768w" sizes="(max-width: 1062px) 100vw, 1062px" /></p>
<p><span style="font-weight: 400;">BMW </span><a href="https://www.press.bmwgroup.com/global/article/detail/T0328610EN/the-my-bmw-app-new-features-and-tech-insights-for-march-2021" target="_blank" rel="noopener noreferrer"><span style="font-weight: 400;">took advantage of </span><b>Flutter</b></a><span style="font-weight: 400;"> to build their mobile app for car management. The app connects to BMW vehicles through bluetooth to give their drivers a dashboard to manage their vehicles.</span></p>
<p><span style="font-weight: 400;">A driver can check on their vehicle’s health, locate their vehicle, find fueling stations, and much more. Flutter allowed BMW to do all this from one codebase instead of creating a separate version for Android and iOS devices.</span></p>
<h2><span style="font-weight: 400;">Cross-platform development sounds great…. So why does </span><i><span style="font-weight: 400;">anyone</span></i><span style="font-weight: 400;"> go native?</span></h2>
<p><span style="font-weight: 400;">Cross-platform development offers a lot of benefits compared to native development. </span><i><span style="font-weight: 400;">However</span></i><span style="font-weight: 400;">, that doesn&#8217;t mean native development isn&#8217;t worth pursuing </span><i><span style="font-weight: 400;">if it leads to a better app for you.</span></i></p>
<p><span style="font-weight: 400;">Some developers are wary of relying on big companies to maintain their frameworks. React Native is maintained by Facebook, while Google keeps up Flutter. If either of those companies decides it doesn&#8217;t make business sense to support those frameworks anymore, anyone using them is out of luck.</span></p>
<p><span style="font-weight: 400;">But let’s be honest: Facebook and Google are two of the biggest tech companies out there, so the chance of that happening is minimal. Even if it does, these projects are free and open-source — there will always be a way for the community to continue its development, the same way it happens with other popular programming languages and frameworks.&nbsp;</span></p>
<p><span style="font-weight: 400;">And beyond the cons of cross-platform frameworks covered above, native apps have a few other benefits to consider…</span></p>
<h3><b>The benefits of native development</b></h3>
<h4><b><br />
Native apps are fast</b></h4>
<p><span style="font-weight: 400;">React Native and Flutter both do a great job at giving users a great experience, but neither can measure up to the speed of native apps. While you can make high-performing apps with React Native and Flutter, native apps make it easier.</span></p>
<p><span style="font-weight: 400;">While Flutter is faster than React Native in this regard, it still doesn&#8217;t match native speeds. If your app needs as much performance as you can give it — for a high-demand CPU or a low-latency app like 2D/3D gaming experiences —&nbsp;then native is likely the best choice.</span></p>
<h4><b><br />
Easy access to native phone functions</b></h4>
<p><span style="font-weight: 400;">Mobile phones come with a lot of cool features these days —&nbsp;with everything from facial recognition to GPS built right in. In the past, it hasn&#8217;t always been easy for cross-platform apps to access these functions.</span></p>
<p><span style="font-weight: 400;">And while things have improved, cross-platform still has some way to go. You need to add several layers of components to Flutter and React Native if you want your app to use a device’s advanced in-built features, like AR and Machine Learning. With native development, you have easy access to everything a phone can do.</span></p>
<h2><span style="font-weight: 400;">Trust Cheesecake Labs to deliver the solution you need</span></h2>
<p><span style="font-weight: 400;">While you can use any of the tools above to deliver you the app you’re looking for, one of them might be a better choice for your specific needs.&nbsp;</span></p>
<p><span style="font-weight: 400;">It&#8217;s also important not to let the hype get in the way of intelligent decision-making. Sometimes a new technology like Flutter can seem like the next best thing, but it isn&#8217;t always the right choice for your business.</span></p>
<p><span style="font-weight: 400;">Our 7+ years in mobile development have taught us this fact. That’s why the Cheesecake Labs team will look at the pros and cons of each development methodology, present the information back to you, and help you choose the one that’ll do the job best. Our team knows Flutter, React Native, and native development — so there’s never any compromise on quality.</span></p>
<p><span style="font-weight: 400;">If you’re ready to sit down with a mobile expert and learn more about your options, then you know </span><a href="https://blog-stg.cheesecakelabs.com/contact/"><span style="font-weight: 400;">where to find us</span></a><span style="font-weight: 400;">.</span></p>
<p>The post <a rel="nofollow" href="https://blog-stg.cheesecakelabs.com/flutter-vs-react-native-development/">Getting you up to speed on Flutter versus React Native versus native development</a> appeared first on <a rel="nofollow" href="https://blog-stg.cheesecakelabs.com">Cheesecake Labs</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Quality assurance — the CKL way</title>
		<link>https://blog-stg.cheesecakelabs.com/quality-assurance/</link>
		
		<dc:creator><![CDATA[Mayara Cristine Wandall]]></dc:creator>
		<pubDate>Wed, 14 Apr 2021 20:30:38 +0000</pubDate>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Engineering]]></category>
		<category><![CDATA[mobile development]]></category>
		<guid isPermaLink="false">https://blog-stg.cheesecakelabs.com/?p=7425/</guid>

					<description><![CDATA[<p>Quality assurance refers to the guarantee that when a software application is used, it performs as expected without causing harm or error. And, as you’d imagine, quality is the ultimate goal of every app in development. But what exactly are we referring to, when we say “quality”? Understanding true quality in application development At a [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://blog-stg.cheesecakelabs.com/quality-assurance/">Quality assurance — the CKL way</a> appeared first on <a rel="nofollow" href="https://blog-stg.cheesecakelabs.com">Cheesecake Labs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Quality assurance refers to the guarantee that when a software application is used, it performs as expected without causing harm or error. And, as you’d imagine, quality is the ultimate goal of every app in development.</p>
<p>But what exactly are we referring to, when we say “quality”?<br />
<span id="more-7425"></span></p>
<h2>Understanding true quality in application development</h2>
<p>At a minimum, a quality app is one that allows its users to accomplish their goals without anything going wrong. Their experience should be bug-free and have no unexpected behavior. Without great QA, you run the risk of releasing buggy applications and wrecking your company’s reputation.</p>
<p>Accomplishing this isn’t only important for users, either. It’s critical for app owners too. An app that has minimal bugs costs less to maintain and fix — you’ll spend less money in maintenance mode and more time in development adding new features that help meet your business goals.</p>
<p>That’s the hidden benefit of masterful QA. And it’s why, at Cheesecake Labs, we view quality as way more than technical viability and functionality.</p>
<p>Let us tell you more&#8230;</p>
<h2>Quality assurance baked in at Cheesecake Labs</h2>
<p>At Cheesecake Labs, quality assurance isn&#8217;t only about finding bugs and fixing them — although we’ll obviously do that too!</p>
<p>Large applications are complex, and a lot can go wrong. Not everything bad will appear as a bug. Our QA team&#8217;s job is to find and resolve these issues, delivering a product that meets the needs of the client and the end user.</p>
<p>Spotting and resolving bugs is just one responsibility of the Cheesecake Labs QA team though. In our house, QA has the same level of input to the total development process as designers and developers. They participate in each of a project’s weekly meetings, are active in Slack chats and have a direct communication line with our customers. They&#8217;re there to make a meaningful difference in every part of the app development journey.</p>
<p>Your QA team is also there to make sure your app meets all the business requirements. At Cheesecake Labs, QA operates as part of the ‘Project’ team — that is, they are active during every one of your product’s design and development cycles, end-to-end.</p>
<h3>Where the QA process kicks off</h3>
<p>Quality assurance isn’t an afterthought at Cheesecake Labs. Our QA team joins the project at the start of the <a href="https://blog-stg.cheesecakelabs.com/blog/building-app-phase-2-product-design/">Design phase</a> where, at this point, they’ll learn about your company and the goals of your application.</p>
<p>Knowing this helps our QA team understand who your customers are, how they want to use your app, and how to deliver feedback that leads to great results. It isn&#8217;t always easy to prioritize features efficiently from the get-go. But since our QA team knows your app&#8217;s goal and what your users need, they can test your app to make sure the user interface functions well for everyone and provides that delightful experience.</p>
<h3>Moving to development</h3>
<p>Once we move out of the <a href="https://blog-stg.cheesecakelabs.com/blog/building-app-phase-2-product-design/">Design phase</a>, the QA team starts their work with the development team. As the development team releases your app&#8217;s early builds, the QA team will be there to test everything. They&#8217;ll perform functional and usability tests to make sure everything works as intended.</p>
<p>They’ll use their findings to provide constant feedback to developers. This iterative approach helps your engineers deliver quality code and gets your app in-hand more quickly. QA will keep this focus on continuous improvement through both <a href="https://blog-stg.cheesecakelabs.com/blog/building-app-phase-3-product-development/">Development</a> and <a href="https://blog-stg.cheesecakelabs.com/blog/building-app-phase-4-product-optimization/">Optimization</a>.</p>
<h2>The quality assurance tests your product needs</h2>
<p>If you ask us, there isn’t one type of QA test that covers all the bases. If you want a quality application, you’ll need several testing methods to get you there. That’s why we’ll apply a series of different approaches and test suite cases to your project, depending on its needs.</p>
<p>The QA tests we rely on vary from unit tests to end-to-end tests, and more in-between. But let&#8217;s look at three quality assurance tests that Cheesecake Labs uses regularly and why they add value.</p>
<h3>Smoke test</h3>
<p>A smoke test is rolled out when you’re almost ready to release your app for further manual tests. You can think of it as a verification test to make sure everything is operating correctly.</p>
<p>Smoke tests contain a small set of manual tests that you run on each software build. These tests cover the most critical parts of your application — and if there are any significant issues with your software, these tests will find them.</p>
<h3>Regression test</h3>
<p>Just because a feature is working now, doesn’t mean it will continue working in the future. As time goes on — and more features are added — there’s always the chance that previous functionality breaks when you introduce new code.</p>
<p>That&#8217;s where regression testing comes in; looking at previous features of your project when new builds are released. Your testers and developers will have created a set of test cases for those features, and those tests are rerun to make sure nothing breaks and old bugs aren&#8217;t reintroduced.</p>
<h3>Integration test</h3>
<p>Your app features don’t exist independently. Many parts of your app will need to communicate between the other parts, and integration testing helps isolate any issues.</p>
<p>An integration test looks at your whole application, from top to bottom. It tests both your frontend and backend code to ensure your entire app flows seamlessly.</p>
<h2>How does Cheesecake Labs make these tests happen?</h2>
<p>These tests can happen in two ways: manual or automated. Manual tests are more often applied to the user interfaces for your software. These tests make sure your users see what you want them to see, so it’s tough to automate that process.</p>
<p>Manually testing every part of a large application isn’t always feasible, though. So that’s where automated tests, like unit tests and UI tests, are added in.</p>
<p>Unit tests are applied to test small pieces of code in your product’s backend; whether it’s a function, module, procedure, or object, running an automated unit test will ensure everything’s working as expected.</p>
<p>UI tests, on the other hand, are used to mimic user behavior. An automated UI test works through your app completing tasks as a genuine end user would — navigating workflows, validating buttons, inputting data, and so on. Performed automatically, this helps us test long customer journeys — and isolate issues — more quickly.</p>
<h2>Keeping you in the loop through QA</h2>
<p>The entire Cheesecake Labs four-phase product development process is founded on collaboration. And while QA can be technical, we’ll never work in a silo or isolation.</p>
<p>Our QA team will keep you updated every week. You’ll know how many bugs we discovered and fixed, why those bugs occurred, and unexpected program behavior. Plus, when you work with our QA team from the very beginning, you’ll get a program with fewer bugs and an app with all its major features working correctly — and that saves time for everybody!</p>
<h3>What happens if you create parts of your app in-house?</h3>
<p>Are you using Cheesecake Labs to create your app’s frontend while you handle the backend code yourself? No problem!</p>
<p>Our team is more than happy to work with your in-house developers and have done this with many clients. We understand that issues can come up when working with two separate codebases — and that, in most cases, those issues will show up on the frontend of your app.</p>
<p>Should this occur, our QA team will work with your team to find any issues and resolve them. Your success is our success, so we&#8217;ll do everything we can to get to the root.</p>
<h2>Let’s prioritize quality, together</h2>
<p>Building an app is a team sport. By bringing QA into the process at the Design phase, your testers, designers, and developers can stay on the same page. This is even more important in today&#8217;s world where much of the workforce has gone remote.</p>
<p>Your Cheesecake Labs QA team is also there to help create guidelines and documentation. Everyone will know what to do, they’ll be aligned on your product vision, and can work seamlessly together to achieve your business goals.</p>
<p><a href="https://blog-stg.cheesecakelabs.com/contact/">Schedule a consultation</a> today to get the process started.</p>
<p>The post <a rel="nofollow" href="https://blog-stg.cheesecakelabs.com/quality-assurance/">Quality assurance — the CKL way</a> appeared first on <a rel="nofollow" href="https://blog-stg.cheesecakelabs.com">Cheesecake Labs</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The biggest benefits of Python, according to CKL</title>
		<link>https://blog-stg.cheesecakelabs.com/biggest-benefits-of-python/</link>
		
		<dc:creator><![CDATA[Mayara Cristine Wandall]]></dc:creator>
		<pubDate>Fri, 09 Apr 2021 21:05:20 +0000</pubDate>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Engineering]]></category>
		<guid isPermaLink="false">https://blog-stg.cheesecakelabs.com/?p=7390/</guid>

					<description><![CDATA[<p>It isn’t easy to pick a technology for your new application idea. Everyone acts like the language they use is the best one out there (including us!). It’s hard for business owners to sift through the noise and figure out what tool is the right one for the job. At Cheesecake Labs, we cut through [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://blog-stg.cheesecakelabs.com/biggest-benefits-of-python/">The biggest benefits of Python, according to CKL</a> appeared first on <a rel="nofollow" href="https://blog-stg.cheesecakelabs.com">Cheesecake Labs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>It isn’t easy to pick a technology for your new application idea. Everyone acts like the language they use is the best one out there (including us!). It’s hard for business owners to sift through the noise and figure out what tool is the right one for the job.</p>
<p>At Cheesecake Labs, we cut through the noise.</p>
<p>We’re clear about why we use Python — the benefits it brings to application development and the drawbacks too.&nbsp;We know what the benefits of Python are, the advantages and disadvantages, and why, in our opinion, Python is so great.<br />
<span id="more-7390"></span></p>
<p>If you want to learn more about Python, the good and the not-so-good, keep reading below.</p>
<h2>What are 3 benefits of Python?</h2>
<p>There aren’t enough words to describe all the benefits the Python programming language brings.&nbsp;And that very fact helps illustrate why Python is so popular with engineers.</p>
<p>That said, there are a few advantages to using Pytho that stand out from the rest:</p>
<h3>Benefits of Python: Simplicity and readability</h3>
<p>If you asked several Python programmers to create an application to handle a specific task, you would think that you would see vastly different coding styles and structures. In some languages, this is common. Python, on the other hand, keeps developers on the same page.</p>
<p>Python adopts the view that programming code should be readable and straightforward. There aren’t too many ways to accomplish tasks, and Python wants its developers to handle things in a certain way.</p>
<p>While some programmers might find this constraining, it makes life easier for others — including their clients.</p>
<p>Having simple and consistent programming code means that any engineer can look through Python code and understand what’s happening. This lets companies onboard new talent and get them up and running more quickly.</p>
<blockquote>
<h4>&#8220;As a client, this means your developers are more focused on delivering the business objectives than they are on determining which way of doing things is the best. Developers can focus on solving core business problems and launching apps efficiently.&#8221;</h4>
<p>&#8211; Douglas Gimli, VP of Business Development</p></blockquote>
<h3>Benefits of Python: Large community and ecosystem</h3>
<p>Python is an open-source project. This means that the source code for the programming language is open to everyone to read and propose changes. It’s built by developers, for developers.</p>
<p>As a result, Python is now one of the most popular programming languages on the market. Many educational institutions list it as the <a href="https://www.northeastern.edu/graduate/blog/most-popular-programming-languages/" target="_blank" rel="noopener noreferrer">number one language</a> for new developers to learn.</p>
<p>The extensive developer base has also led to many tools that make a developer’s life easier. These tools can integrate with business applications and let programmers do more with less code. <strong>You’ll get your applications developed faster and with fewer bugs too.</strong></p>
<p>The Python community is also very friendly. Developers across the world regularly share answers to complex problems, and a Python programmer working on your app can quickly find solutions to issues they face. The outcome? Greater project velocity and a smoother route to market.</p>
<h3>Benefits of Python: Versatile developer tools</h3>
<p>One of the most significant advantages of using Python is the abundance of developer tools and third-party libraries. One of the biggest time-sinks in development is creating everything from scratch, but with Python, you save time not having to build things that’ve already been built before.</p>
<p>How does Python achieve this?</p>
<p>For one, it has a lot of built-in features that make developers&#8217; lives easier. The standard library contains program functions that let developers accomplish tasks in a few lines of code, something that would otherwise take a lot more.</p>
<p>If you need something more complicated than the Python library provides, you only have to look to the open-source ecosystem. There you’ll find tools for everything from machine learning to web development, and all a Python developer needs to do is install the library and get started on their task straight away.</p>
<p>People use these tools in a large number of industries. Data scientists make heavy use of machine learning tools to get data models up and running, and web development companies use frameworks like Django to build websites quickly.</p>
<blockquote>
<h4>&#8220;Again, all of this leads to a much faster build. With the best tools close at hand, we can leverage and optimize development time. Delivering solid-rock code and, ultimately, total value to your business — all in less time, and with a tighter budget, too.&#8221;</h4>
<p>&#8211;&nbsp;Jeremy Stephan, Head of Client Engagement</p></blockquote>
<h2>Are there any downsides to Python?</h2>
<p>There’s no such thing as a perfect programming language, and the features that Python provides do come at a cost.</p>
<p>Let’s take a look at some of the downsides you’ll see when using Python as a programming language:</p>
<h3>Lower performance?</h3>
<p>Search online for Python comparisons or how-tos, and you&#8217;ll find multiple articles stating that Python is slow. But what does it mean, exactly, in the context of other programming languages? And how much of a deal-breaker is this “slow/low performance” when adopting Python for your application?</p>
<p>Without getting too deep into the technical details, “Python code” is in fact slower than code written in low-level languages, such as C/C++. Why? Because Python is what’s known as a dynamically typed and interpreted language — and there are extra steps that Python code needs to take, to turn into code that computers understand.</p>
<p>Low-level languages compile into machine code, so there’s less work to do when your software is running.</p>
<p>Note the use of &#8220;Python code&#8221; in inverted commas above, though. We did that for a reason.</p>
<p>When you’re building an app that demands high computation — for machine learning, let’s say — many of the Python tools you’ll use mostly run as C-compiled code, with a Python wrapper. This means you can get a good balance of Python&#8217;s ease of use, plus speed from C, with a small overhead.</p>
<p>For applications like web development, Python code is hardly the most common performance bottleneck. Real-world applications are complex in nature, and they have to integrate with several third-party services that have a higher chance of impacting the overall performance — database, email, messaging queues, and so on. And unless you address the main bottleneck of the application as a whole, you won&#8217;t be effective.</p>
<p>Where the bottleneck can be identified as the Python code itself, you can always integrate with other languages like Golang. Problem solved.</p>
<p>So with no issue being too big to resolve&#8230; is it actually worth undergoing all these performance workarounds just to use Python?</p>
<p>The answer, for us, is a resounding yes.</p>
<p>Successful digital products are those that ship value to their users consistently. In order to achieve that, you have to be able to prototype and implement code that represents the world closest to its real form, without getting swamped with low-level intricacies.</p>
<p>In a world where hardware gets less expensive year after year, being able to develop applications and adapt faster is the real game-changer, and Python delivers on this promise.</p>
<h3>Issues with interpretation</h3>
<p>The ease of use and development speed that Python brings as an interpreted language (and not a compiled one), has its benefits and its trade-offs.</p>
<p>In the exact same way you might use an interpreter to understand what someone else is saying in a different language to your own, Python code itself undergoes an interpretation process — each line of code is read, analyzed, and executed during application run time. And you may find an interpreted language like Python creates more runtime errors, when compared to statically compiled ones.</p>
<p>These errors can be prevented, though. A modern software development toolset with static code check, linters and automated tests bring peace of mind to Python engineers, leaving them to focus on solving real-world problems.</p>
<p>Of course, the Cheesecake Labs expert QA team is also on-hand to weed out any potential runtime errors before you hit the market.</p>
<h2>Python + Cheesecake Labs = delightful digital experiences</h2>
<p>Now that you know more about what makes Python great, the question is: how does Cheesecake Labs use Python to produce outstanding applications?</p>
<p>Essentially, the Python ecosystem lines up well perfectly with the <a href="https://blog-stg.cheesecakelabs.com/blog/building-app-phase-3-product-development/">Cheesecake Labs development process</a> and our engineering culture foundations:</p>
<h3>Quality</h3>
<p>Python is a robust language that makes sure its developers handle things the right way. This encourages dev teams to create quality code that other developers can understand. It makes applications more stable, easier to debug, and easy to enhance in the future.</p>
<p><strong>All this leads to better experiences and results for you (our customer) and the end user (your customer) too.</strong></p>
<h3>Efficiency</h3>
<p>There’s a fine line between delivering quickly and delivering quality. You don’t want to speed through the creation of an app, only to end up with a disappointing outcome. That’s never an issue with Python and Cheesecake Labs though — together we stay efficient and still deliver excellent results, focusing on the right value for your users.</p>
<blockquote>
<h4>&#8220;The Python ecosystem provides us with the tools we need to get things done and get them done well.&#8221;</h4>
<p>&#8211;&nbsp;Bernardo&nbsp;Smaniotto, Chief Operating Officer</p></blockquote>
<h3>Transparency</h3>
<p>Python makes it easy for Cheesecakes Labs to work quickly and collaboratively with clients. Once your digital product is out there in users’ hands, we’ll be assessing and exploring ways of making your app even better (that’s all part and parcel of our fourth phase of product development, <a href="https://blog-stg.cheesecakelabs.com/blog/building-app-phase-4-product-optimization/">Product Optimization</a>) — and Python facilitates the speed of that process.</p>
<p><strong>Using Python, we’re able to easily translate the real-word use case to code and deliver that benefit to your users with no wasted time.</strong></p>
<p>Python also makes it easy for us to figure out any issues that come up with your software; the Python developer tools help us find bugs and squash them. <strong>It helps us keep you updated on our progress and what’s going on with your application too.</strong></p>
<p>So before we wrap things up — and in the name of transparency as well — it needs to be said: Python won’t be right for every project. You need to find the right tool for your job, so the development team you collaborate with needs to be well-versed in all the tools available.</p>
<p>You can trust the Cheesecake Labs team to not only give their honest, expert opinion on which programming language is right for you, but we’ll also have all the resources and skill-sets required to make a success of your app: Python, Node.js, Golang, or otherwise.</p>
<h2>3 apps built by Cheesecake Labs on top of Python</h2>
<p>With all the benefits of Python, it’s no wonder Cheesecake Labs has used it for 7+ years.</p>
<p>In all that time, we’ve created some great applications for our clients. Let’s check out a few of them and talk about how Python helped make them a reality.</p>
<h3><img decoding="async" class="aligncenter wp-image-7395" title="benefits of python" src="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/04/aes-tiete-python-web-app.png" alt="benefits of python" width="801" height="475" srcset="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/04/aes-tiete-python-web-app.png 1982w, https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/04/aes-tiete-python-web-app-768x456.png 768w" sizes="(max-width: 801px) 100vw, 801px" /><br />
AES VPP</h3>
<p>The <a href="https://blog-stg.cheesecakelabs.com/portfolio/aes-vpp/">AES virtual power plant software</a> was one of Cheesecake Labs’ first ventures into the energy market. Virtual power plant software is responsible for connecting renewable energy sources into the grid for businesses, generators, and storage systems.</p>
<p>Cheesecake Labs used Python for the backend, and optimization algorithms. It helped create evolving algorithms that connect with third-party sources to create a robust environment. That data is used for data visualization that helped AES create graphs, forecast pricing, and gauge asset availability.</p>
<p><img decoding="async" class="aligncenter wp-image-7394" title="benefits of python" src="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/04/skyroam-ecommerce-python-global.png" alt="benefits of python" width="800" height="860" srcset="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/04/skyroam-ecommerce-python-global.png 1303w, https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/04/skyroam-ecommerce-python-global-768x825.png 768w" sizes="(max-width: 800px) 100vw, 800px" /></p>
<h3>Skyroam</h3>
<p><a href="https://blog-stg.cheesecakelabs.com/portfolio/skyroam/">Skyroam</a> is a global WiFi hotspot manufacturer. They saw limitations with their Shopify website and wanted to create a robust shopping experience for their customers. That’s where Django held the solution.</p>
<p>Cheesecake Labs used the Django Framework to create a custom-built eCommerce system for Skyroam. We migrated Skyroam off Shopify to a highly-scalable AWS cloud webserver that can meet Skyroam’s global expanding needs.</p>
<h3><img decoding="async" class="aligncenter wp-image-7396" title="benefits of python" src="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/04/boma-web-app-python.png" alt="benefits of python" width="800" height="581" srcset="https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/04/boma-web-app-python.png 1140w, https://ckl-website-static.s3.amazonaws.com/wp-content/uploads/2021/04/boma-web-app-python-768x558.png 768w" sizes="(max-width: 800px) 100vw, 800px" /></h3>
<h3>Boma Global</h3>
<p><a href="https://boma.global/" target="_blank" rel="noopener noreferrer">Boma Global</a> is a leader in corporate education. They provide networking opportunities for organizations and individuals that are driving some of the most innovative companies across the world.</p>
<p>Cheesecake Labs helped Boma Global by updating its website experience. We used Django to create a custom-built website to inform Boma Global’s customers about their business — connecting users with event information, and helping them sign up for updates and events, while discovering more about the Boma Global network.</p>
<h2>What could Python (and CKL) do for you?</h2>
<p>By now, you should know the benefits of Python and why it’s an excellent choice for your next application. Now all that’s left to do is put that insight into action.</p>
<p>If you want to learn more about using Python for your project, <a href="https://blog-stg.cheesecakelabs.com/contact/">get in touch</a>. Our team will gladly walk you through the development process and start bringing your business idea to life.</p>
<p>The post <a rel="nofollow" href="https://blog-stg.cheesecakelabs.com/biggest-benefits-of-python/">The biggest benefits of Python, according to CKL</a> appeared first on <a rel="nofollow" href="https://blog-stg.cheesecakelabs.com">Cheesecake Labs</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
