PageSourceSearch

https://erpratyush.me/projects/owners-committee-app/

html erpratyush.me collected 2026-10-04 01:22:41 UTC 9,664 bytes, 55 lines download raw bytes

1<!doctype html>
2<html lang="en">
3  <head>
4    <meta charset="UTF-8" />
5    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6    <meta name="theme-color" content="#08090c" />
7    <meta name="color-scheme" content="dark" />
8    <meta name="description" content="A React and Spring Boot owners-committee app for issue tracking, governance decisions, voting, action items, documents and auditable follow-up." />
9    <meta name="author" content="Pratyush Kumar" />
10    <meta name="robots" content="index,follow,max-image-preview:large,max-snippet:-1,max-video-preview:-1" />
11    <link rel="canonical" href="https://erpratyush.me/projects/owners-committee-app/" />
12    <link rel="icon" href="/favicon.svg" type="image/svg+xml" />
13    <link rel="stylesheet" href="/seo.css" />
14    <link rel="me" href="https://www.linkedin.com/in/erpratyush" />
15    <link rel="me" href="https://gitlab.erpratyush.me/pratyush" />
16    <meta property="og:site_name" content="Pratyush Kumar" />
17    <meta property="og:locale" content="en_GB" />
18    <meta property="og:type" content="article" />
19    <meta property="og:title" content="Owners Committee App — Issues, Voting &amp; Documents | Pratyush Kumar" />
20    <meta property="og:description" content="A React and Spring Boot owners-committee app for issue tracking, governance decisions, voting, action items, documents and auditable follow-up." />
21    <meta property="og:url" content="https://erpratyush.me/projects/owners-committee-app/" />
22    <meta property="og:image" content="https://erpratyush.me/og/portfolio.png" />
23    <meta property="og:image:width" content="1200" />
24    <meta property="og:image:height" content="630" />
25    <meta property="og:image:alt" content="Pratyush Kumar — Senior Tech Lead and systems builder" />
26    <meta name="twitter:card" content="summary_large_image" />
27    <meta name="twitter:title" content="Owners Committee App — Issues, Voting &amp; Documents | Pratyush Kumar" />
28    <meta name="twitter:description" content="A React and Spring Boot owners-committee app for issue tracking, governance decisions, voting, action items, documents and auditable follow-up." />
29    <meta name="twitter:image" content="https://erpratyush.me/og/portfolio.png" />
30    <title>Owners Committee App — Issues, Voting &amp; Documents | Pratyush Kumar</title>
31    
31<script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"TechArticle","@id":"https://erpratyush.me/projects/owners-committee-app/#article","headline":"Owners Committee Operations","description":"A React and Spring Boot owners-committee app for issue tracking, governance decisions, voting, action items, documents and auditable follow-up.","url":"https://erpratyush.me/projects/owners-committee-app/","mainEntityOfPage":"https://erpratyush.me/projects/owners-committee-app/","author":{"@id":"https://erpratyush.me/#person"},"publisher":{"@id":"https://erpratyush.me/#person"},"keywords":"React, TypeScript, Spring Boot, PostgreSQL, PWA","about":[{"@type":"Thing","name":"React"},{"@type":"Thing","name":"TypeScript"},{"@type":"Thing","name":"Spring Boot"},{"@type":"Thing","name":"PostgreSQL"},{"@type":"Thing","name":"PWA"}],"inLanguage":"en"},{"@type":"Person","@id":"https://erpratyush.me/#person","name":"Pratyush Kumar","url":"https://erpratyush.me/","jobTitle":"Senior Tech Lead","worksFor":{"@type":"Organization","name":"Virtusa"},"sameAs":["https://www.linkedin.com/in/erpratyush","https://gitlab.erpratyush.me/pratyush"],"knowsAbout":["Java","Spring Boot","React","TypeScript","Enterprise software","Corporate banking","KYC","Workflow automation","BPMN","Kubernetes","Proxmox","TrueNAS","OPNsense","System architecture"],"homeLocation":{"@type":"City","name":"Dubai"}},{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://erpratyush.me/"},{"@type":"ListItem","position":2,"name":"Projects","item":"https://erpratyush.me/#work"},{"@type":"ListItem","position":3,"name":"Owners Committee Operations","item":"https://erpratyush.me/projects/owners-committee-app/"}]}]}</script>
31</head>
32  <body style="margin:0;background:#08090c">
33    <div class="case-page">
34      <div class="seo-wrap">
35        <header class="seo-topbar"><a class="seo-brand" href="/"><span>PK</span><i>/</i></a><nav><a href="/#work">Work</a><a href="/#experience">Experience</a><a href="https://gitlab.erpratyush.me/pratyush">GitLab</a><a href="mailto:[email protected]">Contact</a></nav></header>
36        <nav class="case-breadcrumb" aria-label="Breadcrumb"><a href="/">Home</a><span>/</span><a href="/#work">Projects</a><span>/</span><span>Owners Committee Operations</span></nav>
37        <main>
38          <article>
39            <header class="case-hero"><div class="seo-kicker">Personal · Governance · Building Operations</div><h1>Owners Committee Operations</h1><p class="case-lead">A committee-only operating workspace for residential owners committees — bringing issues, decisions, action items, voting and documents into one auditable place instead of losing context across chat threads.</p><div class="case-meta"><span>React</span><span>TypeScript</span><span>Spring Boot</span><span>PostgreSQL</span><span>PWA</span></div></header>
40            <div class="case-grid">
41              <nav class="case-nav" aria-label="On this page"><a href="#challenge">01 / Challenge</a><a href="#build">02 / Build</a><a href="#outcome">03 / Outcome</a></nav>
42              <div class="case-content">
43                <section class="case-section" id="challenge"><div class="seo-label">01 / CHALLENGE</div><h2>The problem behind the system.</h2><p>Owners committees need to track issues, ownership, follow-ups and governance decisions over long periods. Chat is useful for conversation, but it is a poor system of record: assignments disappear in threads, documents become hard to find and it is difficult to reconstruct why a decision was made.</p></section>
44                <section class="case-section" id="build"><div class="seo-label">02 / BUILD</div><h2>How I approached it.</h2><ul><li>Started with a committee-only issue tracker covering assignment, category, priority, status, due dates, comments, photo/file attachments, activity history, search, My Issues and overdue work.</li><li>Designed the issue timeline as an auditable record: tracked changes create activity events, comments remain append-only, and supporting files stay attached to the work they relate to.</li><li>Expanded the product model beyond issue tracking into committee governance — meetings, decisions, action items and voting — so an agreed decision can become accountable follow-up work instead of another message in a group chat.</li><li>Added document-management flows so committee files can live alongside the issues, comments and decisions that give them context.</li><li>Built it as a responsive React + TypeScript PWA backed by Spring Boot, PostgreSQL and authenticated APIs, with the product intentionally scoped around committee operations rather than becoming a full property-management platform.</li></ul></section>
45                <section class="case-section" id="outcome"><div class="seo-label">03 / OUTCOME</div><h2>What the system enabled.</h2><p>The app is becoming a shared operating record for the committee: one place to see what needs attention, who owns it, what evidence or documents are attached, what the committee decided and what still needs to happen. It is also a product-design exercise in turning informal building governance into simple, traceable software workflows.</p><p class="case-note">The product is being developed iteratively for committee use. Resident, vendor and full community-management workflows are intentionally outside the initial product scope.</p><div class="case-actions"><a class="case-button" href="/#work">Back to selected work ←</a></div></section>
46              </div>
47            </div>
48          </article>
49          <section class="more-work"><div class="seo-label">/ MORE WORK</div><h2>Keep exploring.</h2><div class="more-grid"><a class="more-card" href="/work/corporate-banking-onboarding-kyc/"><small>Current · Corporate Banking · Client Lifecycle</small><h3>Corporate Banking Onboarding &amp; KYC</h3><p>Building the journeys that bring corporate clients into the bank and keep their KYC current — turning a long-running, document-heavy lifecycle into software people can navigate and operate.</p></a>
49<a class="more-card" href="/work/investment-order-management/"><small>Previous · Investments · Order Workflow</small><h3>Investment Order Management</h3><p>An order-management workflow for investment teams — carrying securities buy/sell instructions from the relationship manager through approvals, market execution and operational settlement.</p></a><a class="more-card" href="/projects/veloflow/"><small>Personal · Workflow engine</small><h3>VeloFlow</h3><p>A personal workflow project shaped by years of enterprise BPM experience — exploring how orchestration can feel lighter, clearer and more developer-friendly.</p></a><a class="more-card" href="/projects/banguardian/"><small>Personal · Security automation</small><h3>BanGuardian</h3><p>A central control plane that turns Fail2ban events into network-edge enforcement through OPNsense instead of leaving every server to defend itself in isolation.</p></a></div></section>
50        </main>
51        <footer class="seo-footer"><span>Pratyush Kumar © 2026</span><span><a href="https://www.linkedin.com/in/erpratyush">LinkedIn</a> · <a href="https://gitlab.erpratyush.me/pratyush">GitLab</a></span></footer>
52      </div>
53    </div>
54  </body>
55</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.