<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>ClickNBack</title><link>https://clicknback.com/</link><description>Recent content on ClickNBack</description><generator>Hugo</generator><language>en-us</language><copyright>© Jero Sanchez</copyright><lastBuildDate>Mon, 01 Dec 2025 00:00:00 +0100</lastBuildDate><atom:link href="https://clicknback.com/index.xml" rel="self" type="application/rss+xml"/><item><title>What is ClickNBack</title><link>https://clicknback.com/posts/1-what-is-clicknback/</link><pubDate>Mon, 01 Dec 2025 00:00:00 +0100</pubDate><guid>https://clicknback.com/posts/1-what-is-clicknback/</guid><description>&lt;p&gt;ClickNBack is a cashback platform built end-to-end as a real product: a native iOS app backed by a custom REST API, both developed and maintained by a single engineer.&lt;/p&gt;
&lt;p&gt;The backend is deployed and running in production. The iOS app is in active development.&lt;/p&gt;
&lt;p&gt;The platform covers standard cashback flows — authentication, offer browsing, and transaction tracking — but the goal is not to demonstrate features in isolation. The goal is to show how a product behaves as a system: how the client and backend co-evolve, how data flows across layers, how failures are handled, and how the codebase sustains itself as complexity grows.&lt;/p&gt;</description></item><item><title>iOS Mobile App</title><link>https://clicknback.com/posts/2-ios-mobile-app/</link><pubDate>Sat, 01 Nov 2025 00:00:00 +0100</pubDate><guid>https://clicknback.com/posts/2-ios-mobile-app/</guid><description>&lt;p&gt;The iOS app is built with SwiftUI and modern Swift concurrency (async/await), and is currently in active development. It is designed from the start with production standards in mind, not as a prototype.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Architecture&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The app follows a modular MVVM + Clean Architecture structure, with explicit separation between:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Presentation layer (SwiftUI views and ViewModels)&lt;/li&gt;
&lt;li&gt;Domain layer (use cases, business logic, models)&lt;/li&gt;
&lt;li&gt;Data layer (network client, repositories, caching)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each module has a clearly defined responsibility and can be developed and tested independently. This structure is not over-engineered — it reflects the minimum necessary to keep the codebase navigable and stable as new features are added.&lt;/p&gt;</description></item><item><title>Backend System</title><link>https://clicknback.com/posts/3-backend-system/</link><pubDate>Wed, 01 Oct 2025 00:00:00 +0100</pubDate><guid>https://clicknback.com/posts/3-backend-system/</guid><description>&lt;p&gt;The backend is built with Python and FastAPI, and is currently deployed and running in production on a Linux VPS. It is not a local prototype — it handles real requests, manages persistent data, and is updated through a CI/CD pipeline.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Core features&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;REST API with typed request and response schemas, versioned endpoints, and explicit error contracts&lt;/li&gt;
&lt;li&gt;JWT-based authentication with token refresh, expiration handling, and rotation&lt;/li&gt;
&lt;li&gt;PostgreSQL database with SQLAlchemy ORM, using atomic transactions to maintain data consistency&lt;/li&gt;
&lt;li&gt;Background jobs for asynchronous cashback reward processing&lt;/li&gt;
&lt;li&gt;Internal event-driven communication for decoupled domain flows&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Infrastructure&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>End-to-End Approach</title><link>https://clicknback.com/posts/4-end-to-end-approach/</link><pubDate>Mon, 01 Sep 2025 00:00:00 +0100</pubDate><guid>https://clicknback.com/posts/4-end-to-end-approach/</guid><description>&lt;p&gt;Most engineers specialize in one side of the stack. Backend engineers design APIs without full visibility into how mobile clients consume them. iOS engineers implement features without understanding the constraints of the services they depend on.&lt;/p&gt;
&lt;p&gt;The result is often friction: API contracts that don&amp;rsquo;t match client needs, workarounds in the app to compensate for server behavior, and slow iteration cycles when changes are needed on both sides simultaneously.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Building both sides changes the dynamic&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Engineering Focus</title><link>https://clicknback.com/posts/5-engineering-focus/</link><pubDate>Fri, 01 Aug 2025 00:00:00 +0100</pubDate><guid>https://clicknback.com/posts/5-engineering-focus/</guid><description>&lt;p&gt;The engineering priorities of this project reflect what matters most in production environments.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Correctness over happy paths&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Features are built to behave correctly across failure cases — authentication token expiration, network errors mid-flow, partial backend responses, empty states. The goal is to handle these situations gracefully rather than assuming everything goes as planned. Users in production don&amp;rsquo;t follow the happy path.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Testability as a structural constraint&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The architecture is designed to be testable by default. This is not a post-hoc concern — it shapes how the code is structured from the beginning.&lt;/p&gt;</description></item><item><title>Source Code</title><link>https://clicknback.com/posts/6-repositories/</link><pubDate>Tue, 01 Jul 2025 00:00:00 +0100</pubDate><guid>https://clicknback.com/posts/6-repositories/</guid><description>&lt;p&gt;Both the iOS app and the backend are open source and available on GitHub:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;iOS App&lt;/strong&gt;: &lt;a href="https://github.com/jerosanchez/clicknback-ios"&gt;https://github.com/jerosanchez/clicknback-ios&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Backend&lt;/strong&gt;: &lt;a href="https://github.com/jerosanchez/clicknback"&gt;https://github.com/jerosanchez/clicknback&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;What you will find&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The repositories are structured the way I structure real-world projects — not as a showcase of isolated patterns, but as codebases that reflect actual engineering decisions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;iOS App&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Feature modules with MVVM + Clean Architecture layering&lt;/li&gt;
&lt;li&gt;Swift Package Manager for dependency management&lt;/li&gt;
&lt;li&gt;Networking layer with typed request/response handling and JWT authentication&lt;/li&gt;
&lt;li&gt;XCTest-based test suite covering ViewModels, domain logic, and networking&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Backend&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>App Store (Upcoming)</title><link>https://clicknback.com/posts/7-app-distribution/</link><pubDate>Sun, 01 Jun 2025 00:00:00 +0100</pubDate><guid>https://clicknback.com/posts/7-app-distribution/</guid><description>&lt;p&gt;The iOS app is being prepared for distribution through TestFlight and the App Store. Distribution is not an afterthought — the project is structured for it from the start.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Environment management&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The app uses separate schemes and configurations for development, staging, and production environments, managing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API base URLs per environment&lt;/li&gt;
&lt;li&gt;Feature flags and logging levels&lt;/li&gt;
&lt;li&gt;Build and bundle identifiers&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This ensures that development builds never talk to production data, and that release builds are configured correctly without manual intervention.&lt;/p&gt;</description></item><item><title>About</title><link>https://clicknback.com/posts/9-about/</link><pubDate>Wed, 01 Jan 2025 00:00:00 +0100</pubDate><guid>https://clicknback.com/posts/9-about/</guid><description>&lt;p&gt;I&amp;rsquo;m Jero Sánchez, a senior iOS engineer with 7+ years of experience building native applications, and an additional year focused on backend systems.&lt;/p&gt;
&lt;p&gt;Most of my career has been in product-focused companies where the iOS app is a core part of the business. The most significant was &lt;strong&gt;Cabify&lt;/strong&gt; — a leading ride-hailing platform in Spain and Latin America, with millions of users and over a million daily transactions — where I worked on a high-traffic iOS app as part of a cross-functional product team.&lt;/p&gt;</description></item><item><title>Credits</title><link>https://clicknback.com/credits/</link><pubDate>Wed, 01 Jan 2025 00:00:00 +0100</pubDate><guid>https://clicknback.com/credits/</guid><description>&lt;p&gt;Credits for the images used in this site:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Chevron icon&lt;/strong&gt; created by &lt;a href="https://www.flaticon.com/free-icons/chevron"&gt;Cursor Creative - Flaticon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;iOS image: &lt;!-- raw HTML omitted --&gt;iOS icon created by Picons - Flaticon&lt;!-- raw HTML omitted --&gt;&lt;/li&gt;
&lt;li&gt;Backend system: &lt;!-- raw HTML omitted --&gt;Online server icons created by ALTOP7 - Flaticon&lt;!-- raw HTML omitted --&gt;&lt;/li&gt;
&lt;li&gt;End-to-end image: &lt;!-- raw HTML omitted --&gt;End to end icons created by Creative Avenue - Flaticon&lt;!-- raw HTML omitted --&gt;&lt;/li&gt;
&lt;li&gt;Engineering focus: &lt;!-- raw HTML omitted --&gt;Technology icons created by Freepik - Flaticon&lt;!-- raw HTML omitted --&gt;&lt;/li&gt;
&lt;li&gt;Repositories: &lt;!-- raw HTML omitted --&gt;Github icons created by Freepik - Flaticon&lt;!-- raw HTML omitted --&gt;&lt;/li&gt;
&lt;li&gt;App distribution: &lt;!-- raw HTML omitted --&gt;App icons created by Freepik - Flaticon&lt;!-- raw HTML omitted --&gt;&lt;/li&gt;
&lt;li&gt;About: &lt;!-- raw HTML omitted --&gt;User icons created by Freepik - Flaticon&lt;!-- raw HTML omitted --&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>