Project

GetClauseApp

Built by Akshat Srivastava (iamkahanikaar)

A developer-first SaaS platform available on web and iOS that helps app teams generate, publish, host, version, and maintain privacy policy URLs for apps, websites, App Store listings, and onboarding flows.

Overview

GetClauseApp is a developer-first SaaS platform available on both web and iOS. It helps app teams generate policy drafts, publish hosted policy URLs, and keep policy pages manageable over time. The product is built for indie developers, small startups, and app-first teams who need privacy policy links for App Store listings, Play Store submissions, websites, onboarding flows, and product compliance pages without manually deploying or maintaining separate policy pages.

Problem

App developers often need privacy policy URLs before shipping apps, submitting to app stores, or integrating third-party services. The common workaround is messy: copying templates into Notion, static pages, random website builders, or manually hosted files. That approach becomes difficult to maintain when policies need updates, versioning, branding, contact changes, or multiple app/project-specific URLs. GetClauseApp solves this by giving developers a structured workflow to create, host, publish, and manage policy pages from one place.

My Role

I built GetClauseApp as a full product across web and iOS. On the web side, I worked on the marketing site, authenticated console, project management, public hosted policy routes, policy resolver, policy generation flow, subscription surfaces, and Appwrite-backed backend integration. On the iOS side, I built the SwiftUI client using Appwrite, including authentication, onboarding, email verification, password recovery, session handling, user bootstrap persistence, project creation, policy drafting, preview, and publish flows. I also shaped the product positioning, UX flow, legal-disclaimer boundaries, and long-term direction around policy workflows rather than legal advice.

What I Built

I built the web platform using Next.js, React, TypeScript, Tailwind CSS, and Appwrite. The web app includes a public marketing site, login/signup flows, email verification, password recovery, authenticated console, project creation, policy builder, public hosted policy pages, pricing/subscription screens, support flows, and content areas. I implemented hosted policy URLs with dynamic public routes such as user, project, policy, policy type, and version-based URL segments. The system supports latest-version resolution, version-pinned policy URLs, canonical policy URLs, API-based policy fetching, caching, ETag handling, and rate limiting. I built the iOS app with SwiftUI and Appwrite. The app includes splash/auth routing, onboarding, login, account creation, email verification, forgot password, tab-based navigation, project creation with logo selection/cropping/compression, project listing, project detail views, privacy policy drafting screens, preview generation, and publish flow. I also added product infrastructure around Appwrite TablesDB, Appwrite Storage, Appwrite Functions, user details persistence, project logos, policy templates, policy versions, hosted URLs, Firebase Cloud Messaging, Paddle subscription flows, and PostHog analytics hooks.

Technical Highlights

The web app uses Next.js App Router with React, TypeScript, Tailwind CSS v4, CSS modules, and a dark-mode-first console design. It separates marketing routes, auth routes, console routes, public hosted policy pages, and API routes. Appwrite powers authentication, database tables, storage, and functions. The product uses tables for users, projects, policies, policy versions, templates, policy sections, policy blocks, subscriptions, and content. Appwrite Storage is used for project logos, profile images, and content assets. The policy generation system separates CRUD from policy rendering logic. ProjectManager handles project and policy state, while the policy service handles preview generation, markdown rendering, publishing active policies, version creation, and resolving public policy documents. Public policy hosting supports dynamic URLs, latest-version resolution, versioned URLs, canonical slug redirects, API access, cache layers, ETag responses, and request rate limiting. This makes policy URLs stable enough to be used in app stores, websites, and product surfaces. The iOS app follows a lightweight MVVM architecture with SwiftUI views, ViewModels, shared managers, and Appwrite client setup. AuthViewModel handles account sessions, user refresh, sign out, email verification, password recovery, and user_details bootstrapping. The iOS project flow uses ProjectManager for Appwrite writes, local selection state, pagination, project logo upload, policy draft state, preview markdown, and policy publishing/versioning. The privacy policy builder is split into step-based screens for policy creation, law selection, data collection, data purpose, extra guidelines, detailed readback, final preview, and publish.

What I Learned

GetClauseApp taught me how to build a product beyond a normal portfolio project. I learned how to think about user onboarding, project creation, policy generation, hosted URLs, versioning, subscriptions, public pages, and backend-backed workflows as one connected SaaS experience. On the engineering side, I learned how to connect Next.js, Appwrite, SwiftUI, policy rendering, public API routes, caching, rate limiting, Appwrite Storage, Firebase notifications, and subscription logic into a real product. It also taught me how important clear positioning is when building around legal-adjacent workflows: GetClauseApp helps developers manage policy workflows, but it does not act as a legal firm or provide legal advice.