A multi-tenant golf platform for PTRGolf.com: one master brand carrying PTR Golf Lounge, Singh Open, the PGL Inter-League Tournament and hosted third-party outings, each retaining its own identity inside a shared framework. This document sets out what is being built: the deliverables, the modules behind them, and the boundaries of the scope. Pricing, delivery dates, hosting and commercial terms are covered in the accompanying proposal.
Development fee
₹8,00,000
Deliverables
36
Modules
18
Roles
11
Duration
12 weeks
Maintenance
₹30k–40k / mo
Hosting from
₹9,120 / mo
What PTR Golf receives
At final handover
The following transfers to PTR Golf on completion of Phase 5.
Full source code
Complete front-end and back-end repository transferred to a PTR-owned Git organisation, with full commit history and no licence restrictions.
Infrastructure in your accounts
AWS and Cloudflare configured inside PTR-owned accounts from week one and retained by PTR throughout.
Administrator access
Credentials and role assignments for the CMS, database, payment dashboard and every connected service.
Architecture documentation
System architecture, database schema, API reference, deployment runbook and an operations guide written for non-developers.
Training
Two recorded live sessions: one for staff running events and leagues, one for platform administrators.
Test suite & pipeline
Automated test coverage on payment, booking and scoring paths, running in the CI pipeline you inherit.
30-day warranty
Any defect in delivered scope reported within 30 days of launch is fixed at no charge, to the service levels below.
Exit assistance
If the relationship ends, 20 hours of transition support to an incoming team, at no charge.
How the engagement runs
Governance & ways of working
Cadence & visibility
Staging environment. A live URL showing the current state of the build, updated on every merge.
Weekly written status every Friday: completed, in progress, blocked, decisions needed. Followed by a 30-minute call.
Demonstration at each phase gate, walked through on the staging environment before any sign-off is requested.
Shared issue board visible to PTR Golf for the duration of the engagement.
Decisions & change
One named decision-maker at PTR Golf for the duration, with authority to sign off a phase.
Three business days to accept or reject a phase, with written reasons. Silence past that is deemed acceptance.
Consolidated feedback — one collected set per gate rather than a rolling stream, plus the full acceptance period in Phase 5.
Change control: anything outside the 36 deliverables is quoted as a fixed price and signed before work starts.
Escalation: anything unresolved after five business days goes to the project sponsor on both sides.
Deliverables
36 items in dependency order
The 36 deliverables are grouped in the platform's dependency order. Multi-tenancy is built into the event engine in Phase 2 rather than added later, as hosted outings depend on it. Deliverables within a phase are worked in parallel.
Phase 01
Foundation & Platform Core
Weeks 1–2Value ₹1,60,000
Establish the architecture every later phase depends on, stand up production infrastructure in PTR-owned accounts, and take the Founding Member campaign live.
01
Discovery & technical designData model, information architecture, API contract and the written definition of done for each deliverable. Settled before code is written.
02
Design system & brand token architecturePTR master identity with per-property overrides, so Singh Open, PGL and hosted outings each keep their own personality inside one consistent framework.
03
Core shell, navigation & responsive frameworkHome | Golf Lounge | Events & Tournaments | Leagues | About PTR | Book. Mobile-first across phone, tablet and desktop.
04
Homepage & About PTRBrand introduction and the five conversion paths: Book a Bay, Join the Lounge, Register for a Tournament, Enter a League, Host Your Outing.
05
Identity, accounts & role modelAuthentication on Clerk, and the eleven named roles the architecture defines — Super Admin, PTR Event Manager, Location Manager, Front Desk, Coach, League Manager, Partner Organizer, Sponsor, Finance, Event Staff and Communications — each with its own dashboard and its own least-privilege boundary, established before any module needs them.
06
Cloud infrastructure & delivery pipelineProduction and staging environments in PTR-owned cloud accounts, built for high availability: delivery pipeline, monitoring, alerting, and automated backups with point-in-time recovery.
07
Founding Member / Early Access campaignReleased ahead of the rest of the membership module. Landing page, waitlist capture and tagged contact storage for the pre-opening membership drive.
Exit criteria — all must be true before sign-off
Staging environment reachable by PTR, deploying automatically from the main branch
Design system approved in writing, with both light and dark presentation reviewed
Database schema and API contract signed off by the named decision-maker
A member account can be created, verified and logged in on a phone
Founding Member campaign live and capturing real sign-ups into the contact store
Automated backup and restore demonstrated once, end to end
PTR Golf provides during this phaseBrand assets and logo files, AWS and Cloudflare account access or authority to create them, the named decision-maker, and Founding Member campaign copy and offer terms.
Phase 02
Event Platform & Multi-Tenancy
Weeks 3–4Value ₹1,60,000
Build the reusable event engine and multi-tenancy layer, then deliver Singh Open and the PGL Inter-League Tournament as the first two tenants. Every subsequent event, PTR-owned or hosted, is configured on what is built here.
08
Event template engine & year archivingOne schema covering history, description, dates, location, format, rules, registration, teams, players, schedule, pairings, results, standings, sponsors, media and past champions — with /singh-open/2026, /2027 archiving so history accumulates instead of being replaced each year.
09
Multi-tenancy & tenant branding frameworkTenant isolation, per-tenant branding and per-tenant permissions built into the event engine, so hosted outings are onboarded as configuration.
10
Events directoryFilterable index by upcoming, past, type, and PTR-owned versus hosted, replacing per-event entries in the main navigation.
11
Sponsor presentation & sponsorship salesSponsorship tiers, logo placement, sponsor pages, and sponsorship packages sold through checkout.
12
Media gallery — photo & videoPer-event and per-year galleries with automatic image optimisation, reusable across every tenant.
13
Event & team registration flowsOpen link → review event → register → pay, on a phone. Individual entry, team entry and captain-led team entry.
14
Singh Open event siteHistory, current tournament, schedule, sponsors, players and teams, results, champions, past tournaments and sponsor opportunities.
15
PGL Inter-League Tournament sitePGL branding, description, participating leagues, date and location, format, rules, team registration, player information, schedule and pairings.
16
Admin CMS & content operationsOne sign-in address serving all eleven roles as separate back offices, event and content authoring, and media and sponsor asset management with per-shelf access.
Exit criteria — all must be true before sign-off
A PTR administrator creates a complete new event, publishes it and archives a prior year without developer involvement
Singh Open and PGL pages live on staging with real content, each carrying its own branding
A test tenant is created, branded and isolated — proving hosted outings are configuration, not custom work
A golfer completes registration and payment end to end on a mobile device
A sponsorship package is purchased through checkout and appears on the event page
PTR Golf provides during this phaseSingh Open and PGL history, past results and champions, sponsor logos and tier structures, event photography, and confirmed 2026 tournament dates and formats.
Phase 03
Lounge, Booking & Commerce
Weeks 5–7Value ₹1,60,000
Deliver everything PTR Golf Lounge – Canton requires to trade from its opening day: bay reservations, memberships, coaching, event enquiries and the commerce layer behind them.
17
Lounge section & multi-location architectureSub-navigation for Play, Membership, Leagues, Coaching, Events & Parties, Food & Beverage, Book and Location. Location-scoped from day one: /lounge/canton today, /lounge/[city] for every future site.
18
Play & bay informationBay inventory across the 5,000 sq. ft. facility — 3 standard, 1 premium, 1 dedicated coaching — with rates, availability and the social lounge.
19
Booking & reservations engineSelect location → bay → time → pay. Bay-type pricing, off-peak rules, member and non-member rates, cancellation policy and no-show handling.
20
Membership tiers & member account areaPreferred reservations, member rates, included off-peak golf, league priority, tournament access, guest privileges, premium-bay access and member events — with a logged-in area for bookings and benefits.
21
Coaching & lesson bookingCoach profiles, lesson types and scheduling against the dedicated coaching bay, with its own availability rules.
22
Events, parties & Plan an EventCorporate outings, team building, client entertainment, birthdays, private parties, networking and watch parties, with enquiry capture as a primary conversion path.
23
Food & BeverageThe limited lounge menu and beverage list, with the guest-ordering policy stated clearly.
24
Payments & commerce layerOne checkout experience across bay reservations, memberships, coaching, lounge events, gift cards, tournament and league registration, team entry and sponsorships.
Exit criteria — all must be true before sign-off
A member books a premium bay, applies member pricing and pays, in under 60 seconds on a phone
A non-member completes the same booking at public rates, without an account
Membership is purchased end to end and the benefits apply immediately to the next booking
Double-booking is demonstrably impossible under concurrent load testing
Refund and cancellation paths tested against the agreed policy
A Plan an Event enquiry arrives tagged and attributed in the contact store
PTR Golf provides during this phaseFinal membership packages and pricing, bay rates and off-peak windows, opening hours, cancellation and no-show policy, coach profiles and lesson pricing, the F&B menu, and a live payment-processor account.
Phase 04
Competition Engine & Customer Data
Weeks 8–10Value ₹1,60,000
Deliver the in-house scoring and competition engine that replaces x4Golf and fringegolfers, bring the leagues onto the platform, and consolidate contacts into a single customer database. One engine serves Lounge leagues, Singh Open, the PGL Inter-League Tournament and hosted outings.
25
Scoring & competition enginePer-hole and total score entry on mobile, entered by player or scorer, with an immutable edit and dispute trail. Formats: stroke play, net, stableford, scramble, best ball, match play, and team-versus-team for PGL.
26
Handicap systemIndex storage, course and slope handicap calculation, and per-league handicap rules including caps and adjustments.
27
Live leaderboards & standingsStandings that update as cards are entered, serving league pages, Singh Open and PGL from the same engine, to the concurrency stated in the hosting tiers below.
28
Pairings, tee sheets & flightsPairing generation, flight and division assignment, and printable or shareable tee sheets issued to players.
29
League management & season administrationDescriptions, registration, teams, divisions, seasons, schedules, rules, playoffs and championship records, supporting both indoor Lounge leagues and outdoor PTR leagues in one structure.
30
Historical data migrationImport of league and event history from x4Golf and fringegolfers, reconciled and verified, so past standings and champions are retained.
31
Central customer databaseOne contact store with no per-event silos, tagged by Lounge Member, Singh Open, PGL, League Player, Corporate Event, Private Event, Coaching and Hosted Outing. Every form, registration and booking on the platform writes into it.
32
Segmented communications & consentAudience segments built from those tags, transactional and campaign email, consent capture at the point of collection, and unsubscribe handling.
Exit criteria — all must be true before sign-off
A full league night is scored end to end and standings update live for spectators
Each supported format produces results verified against a manually calculated control card
Handicap calculations reconcile against a sample set supplied by PTR Golf
Migrated historical seasons match their source records, verified line by line on an agreed sample
A score edit is traceable to a user, a timestamp and a prior value
A contact registering through three different routes appears once in the database, carrying three tags
A segmented email is composed, previewed and sent to a test audience, with consent state respected
Load test passes at the contracted concurrency target with 40% headroom remaining
PTR Golf provides during this phaseLeague rules, handicap policy and season calendars for each league; data exports from x4Golf and fringegolfers; a sample of known-correct historical results for verification; confirmed PGL match format; the tagging taxonomy; and sender domain authority for outbound email.
Phase 05
Onboarding, Hardening & Launch
Weeks 11–12Value ₹1,60,000
No new platform capability is built in this phase. It covers onboarding of the first hosted-outing tenants, hardening, the testing programme and handover.
33
Hosted outing onboarding & tenant administrationTwo pilot tenants configured end to end — branded event page, golfer and team registration, sponsorship sales, payment collection, player communications, pairings, results and gallery — plus the tenant administration tooling PTR staff use to onboard subsequent tenants.
34
Security, performance & accessibility hardeningPenetration testing of authentication and payment paths, load testing to the agreed concurrency target, Core Web Vitals optimisation, WCAG 2.1 AA accessibility pass and cross-browser verification.
35
User acceptance testing programmeScripted test scenarios for staff, a defect triage process with agreed severities and daily fix cycles.
36
Launch, cutover & handoverDNS cutover with rollback plan, monitoring and alerting confirmed, documentation delivered, two training sessions recorded, and full source-code and infrastructure transfer.
Exit criteria — all must be true before sign-off
Zero open defects at severity P1 or P2; all P3 defects triaged and either fixed or scheduled with PTR agreement
Load test passes at the contracted concurrency target with headroom intact
Penetration test findings on authentication and payment paths remediated and retested
Two hosted-outing tenants live, each administered by PTR staff without developer help
Backup restore rehearsed against the stated recovery objectives
Documentation delivered, both training sessions completed, source code and infrastructure transferred
PTR Golf provides during this phaseNamed staff testers available across both weeks, two pilot hosted-outing clients with their content, and final go-live approval.
Timeline
10 weeks build · 2 weeks acceptance
Twelve weeks from kickoff. Weeks 1–10 are development; weeks 11–12 are the acceptance programme described in Phase 5. Three things run on this calendar and all three have to hold for the date to hold: the build, the acceptance gates that release payment, and what PTR Golf supplies. The third is the one that most often moves a date, so it is shown here rather than left in the phase notes.
123456789101112
The build
Phase 01Foundation · wks 1–2
Architecture
Phase 02Event platform · wks 3–4
Tenancy, CMS
Phase 03Lounge & commerce · wks 5–7
Booking, memberships
Phase 04Competition · wks 8–10
Scoring, leagues, CRM
Phase 05Acceptance · wks 11–12
UAT, handover
Gates & payment · five invoices totalling ₹8,00,000
InvoicedAdvance on signing, then at each gate
₹1,00,000
₹2,00,000
₹2,00,000
₹2,00,000
₹1,00,000
What PTR Golf supplies — needed by the start of each block
Your inputDetail in the table below
Brand, AWS keys
Event history
Pricing & policies
Legacy exports, rules
Testers, pilots
The advance is invoiced on signing and shown at the head of the chart, where it lands. It carries the Phase 1 block, which is why the week 2 gate raises no further invoice — Phases 1 and 2 are then billed together at week 4. Every other gate is invoiced on acceptance.
Two deliverables are scheduled ahead of their phase group. The Founding Member campaign is live in week 2. The Admin CMS is delivered in week 4, giving PTR staff content control for eight weeks before launch.
Gate calendar
What is accepted, what is invoiced, what PTR must have ready
When
Gate
Invoiced
What PTR Golf must have supplied by then
On signing
Engagement starts — releases Phase 1
₹1,00,000
Signed statement of work and the named decision-maker who can approve at every gate.
Week 2
Phase 1 · Foundation & platform core
—covered by advance
Brand assets and logo files; AWS and Cloudflare account access, or written authority to create them; Founding Member campaign copy and offer terms.
Week 4
Phase 2 · Event platform & multi-tenancyPhases 1 and 2 are invoiced together here
₹2,00,000
Singh Open and PGL history, past results and champions; sponsor logos and tier structures; event photography; confirmed 2026 tournament dates and formats.
Week 7
Phase 3 · Lounge, booking & commerce
₹2,00,000
Final membership packages and pricing; bay rates and off-peak windows; opening hours; cancellation and no-show policy; coach profiles and lesson pricing; the F&B menu; and a live payment-processor account.
Week 10
Phase 4 · Competition engine & customer data
₹2,00,000
League rules, handicap policy and season calendars; data exports from x4Golf and fringegolfers; a sample of known-correct historical results for verification; confirmed PGL match format; the tagging taxonomy; sender domain authority for outbound email.
Week 12
Phase 5 · Acceptance, launch & handover
₹1,00,000
Named staff testers available across both weeks; two pilot hosted-outing clients with their content; final go-live approval.
Total development fee
Across five gates and the advance
₹8,00,000
Two dependencies decide whether twelve weeks holds, and both should be started in week 1 even though they are not needed until later. The data exports from x4Golf and fringegolfers are not due until week 8, but they are requested from third parties who have no obligation to hurry — that request should go out on day one. The live payment-processor account is not needed until week 5, but underwriting and business verification can take several working days and cannot be rushed once started. Everything else on the list is content PTR already owns.
Each gate is accepted against the written exit criteria set out in its phase above, not against opinion. Where an item PTR owes arrives late, the affected phase and every phase after it move by the same period, as set out under Payment terms — the schedule extends by the period of the delay. Nothing is invoiced for a gate that has not been accepted.
Development fee & payment schedule
Fixed price · INR
Fixed price. The figure below covers the 36 deliverables and does not move unless scope changes under the change-control terms above.
Milestone
Trigger
Amount
AdvanceKickoff — releases Phase 1
On signing
₹1,00,000
Payment 2Foundation & platform core, then the event platform & multi-tenancy — two phases cleared together
Phase 1 & 2 acceptance · wk 4
₹2,00,000
Payment 3Lounge, booking & commerce
Phase 3 acceptance · wk 7
₹2,00,000
Payment 4Competition engine & customer data
Phase 4 acceptance · wk 10
₹2,00,000
Final paymentOnboarding, hardening, UAT, launch & handover
Phase 5 acceptance · wk 12
₹1,00,000
Total development fee
₹8,00,000
₹1,00,000 — one eighth of the fee — is held back to final handover, and falls due only when Phase 5 is accepted: onboarding complete, hardening and UAT signed off, the platform live, and source code, infrastructure and administrator access transferred to PTR Golf. Nothing about that transfer is conditional on the payment — ownership vests on creation under the intellectual property terms — but the retention means the final invoice and the finished platform arrive together.
There are five payments against five phases, not six: Phase 1 acceptance in week 2 releases no invoice, because the advance already covers it. Phases 1 and 2 are then billed together at the week 4 gate. The figure shown against each phase above is what that phase is worth; the table here is when it is invoiced. Invoices are due within 14 days of acceptance, and work on the following phase continues during that window.
Commercial terms
Applies to the fee above
CurrencyFees are quoted and invoiced in Indian rupees and payable by bank transfer. Where PTR Golf elects to pay in US dollars, the amount is converted at the telegraphic transfer selling rate on the invoice date. Bank charges levied outside India are to PTR Golf's account.
TaxNo Indian GST is charged on this engagement. The supplier is not registered for GST in India, and payment originating from the United States constitutes an export of services falling outside the scope of Indian GST. Should payment instead originate from within India, or should the supplier become liable to register for GST during the engagement, GST at the prevailing rate — currently 18% — would be added to invoices issued from that date forward. Invoices already raised and settled are unaffected. Any taxes, duties or withholdings imposed outside India are to PTR Golf's account.
Payment termsInvoices fall due 14 days after phase acceptance. Amounts outstanding beyond 30 days carry interest at 1.5% per month. Where an invoice remains unpaid 30 days after its due date, work on subsequent phases may be suspended on four days' written notice, and the schedule extends by the period of suspension.
TerminationEither party may terminate this engagement on 14 days' written notice. On termination PTR Golf pays for every accepted phase in full, plus work completed on the phase in progress on a pro-rata basis against its deliverables. The supplier delivers all work product completed to that date, in the same form as the Phase 5 handover.
Intellectual propertyOwnership of all code, designs and data vests in PTR Golf on creation, as set out under Security, compliance and data ownership. This is not conditional on payment, and it survives termination.
LiabilityThe supplier's aggregate liability under this engagement is limited to the total fees paid. Neither party is liable for indirect, incidental or consequential loss, including loss of profit, revenue or anticipated savings. Nothing limits liability for fraud or wilful misconduct.
Third-party servicesCloud and third-party service fees are contracted directly between PTR Golf and each provider. The supplier configures and operates those services but is not a party to their terms and carries no liability for their pricing changes, outages or discontinuation.
ValidityThis statement of work is open for acceptance for 30 days from the issue date shown below. Hosting costs and third-party pricing are re-confirmed at signing.
Hosting: capacity & cost
Billed to PTR · not part of the fee
Built on PERN — Postgres, Express, React, Node. The application runs on Amazon Lightsail, platform data sits in Amazon RDS for PostgreSQL, media in Amazon S3, and the front end, DNS and CDN on Cloudflare. Every account is opened in PTR Golf's name and billed directly to PTR at cost, with no markup.
Infrastructure is sized against three load profiles. The platform is built to full high availability and ships at launch with parts of it switched off, because at launch there is nothing yet to lose. Redundancy is added as the business earns it — each step is a console change on infrastructure already designed for it, not a rebuild, and each has a published trigger and a known price in the ladder below.
Why this shape
What each choice trades away
The savings against a conventional EC2 build are stated per line. Each card also says plainly what PTR gives up in return, so the trade is visible rather than buried in an instance size.
Lightsail, not EC2 with a load balancer
One flat monthly price covers the server, its SSD and 4 TB of outbound transfer. On EC2 the same machine is billed by the hour, the load balancer is a separate line from the first day, and every gigabyte leaving the network is metered. The trade is fewer instance shapes to choose from — which at this size is not a constraint.
saves $45 / mo
Single-AZ database, not Multi-AZ
Point-in-time recovery across a seven-day window is retained in full. What is given up is the automatic 90-second failover to a standby: a database failure becomes a restore of roughly 30 minutes. This is the only real reduction in resilience, and it is the first thing to switch back on.
saves $77 / mo
S3 behind the Cloudflare cache
Photography and video are stored once in S3 and served from Cloudflare's edge, so S3 is charged for storage continuously but for delivery only on a cache miss. Tournament galleries are read far more often than they change, which is the access pattern a CDN is built for.
storage billed, egress largely cached
One application server, not three
Lightsail replaces a failed instance from its most recent snapshot, and deploys stay zero-downtime regardless — the app runs in cluster mode and reloads its workers one at a time. What is given up is instant survival of a hardware failure.
saves $66 / mo
Redis on the application server, not a managed cluster
Standings, availability lookups and leaderboard fan-out run from a local Redis. The cache is lost on restart and rebuilds from Postgres in seconds. It stops being sufficient the moment a second server arrives and the two need shared state.
saves $12 / mo
Cloudflare Free, not Pro
CDN, DNS, unmetered DDoS protection and TLS are on the free plan. Pro buys managed WAF rulesets, image optimisation and support response — worth having once there is a season's revenue behind the site, not on day one.
saves $20 / mo
What each tier sustains
Sized to peak at ~60% of capacity
Capacity
Launch
Growth
Expanded
Business shapeWhat the column assumes
Months 1–6Canton open · Singh Open + PGL live 1 tournament at a time
Year oneCanton daily · 3–4 leagues running 3–5 hosted outings
Year two–three3 lounges · 10+ leagues 15+ hosted outings
Registered accountsTotal members, players and past registrants in the database
5,000
25,000
100,000+
Monthly active usersPeople who log in during a given month; authentication is billed on retained users above 50,000
3,000
12,000
30,000
Concurrent users, ordinary dayThe load the platform actually carries every day, not a tournament spike
100–300
400–800
1,500–3,000
Peak concurrent visitorsPeople on the site at the same moment, tournament Saturday
600
2,500
8,000
Live leaderboard viewersOpen connections watching standings update in real time
2,000
6,000
20,000
Peak registrations per hourSustained registration throughput during an open window
150
600
2,000
Simultaneous live eventsTournaments or league nights scoring at once
1
3
10+
Bay bookings per monthCompleted reservations including payment
3,000
15,000
60,000
Sustained requests / secondOrigin traffic only. Cached pages and open leaderboard sockets are absorbed by Cloudflare and never counted here, which is why peak visitors can run far ahead of this line
60burst ~200
250burst ~700
900burst ~2,500
Outbound transfer allowanceBundled with the Lightsail plan at every tier; overage is $0.09 / GB
Media libraryTournament photography and video across all years
250 GB
1 TB
3 TB
Availability targetMeasured monthly, excluding agreed maintenance windows
99.5%~3 hr 40 min / mo
99.9%~43 min / mo
99.9%~43 min / mo
Monthly infrastructure cost
~$96
~$367
~$1,408
Approx. in rupees at ₹95 / $Rate as at 11 September 2026
₹9,120
₹34,865
₹1,33,760
Each tier is sized so that peak load consumes approximately 60% of available capacity, leaving 40% headroom. The load test at the Phase 4 gate verifies this against the contracted target. On the Launch tier, 300 concurrent users on an ordinary evening consume roughly 15% of the application server and 20% of the database — the tier is not near its limit at the load PTR expects to carry daily, and does not need changing on traffic grounds until sustained concurrency approaches 800.
Cost breakdown
USD per month, published provider rates
Service / capacity
Launch
Growth
Expanded
Amazon LightsailApplication servers and load balancing. The plan price includes the instance, its SSD and its outbound transfer allowance; the load balancer is $18 once a second server exists
$241 × 4 GB RAM 80 GB SSD
$903 × 4 GB RAM + LB 80 GB SSD each
$1983 × 8 GB + 2 × 4 GB 160/80 GB SSD + LB
Amazon RDS for PostgreSQLDatabase and provisioned storage. Single-AZ at Launch with point-in-time recovery; Multi-AZ with automatic failover from Growth
~$29db.t4g.small 50 GB · Single-AZ
~$130db.t4g.medium 150 GB · Multi-AZ
~$571db.m7g.large + replica 500 GB · Multi-AZ
Amazon S3 StandardPhotos and videos; storage only. Delivery runs through the Cloudflare cache, so S3 is charged for egress on a cache miss rather than on every view
~$6250 GB
~$241 TB
~$713 TB
Redis / ElastiCacheCache and live leaderboards. Sessions are not held here: Clerk issues stateless tokens, so a second server needs no shared session store
$0 extraon app server
~$12managed micro node
~$75medium + replica
ResendBooking and event email. The free tier caps at 100 messages a day — 3,000 bay bookings a month reaches that on confirmations alone, so a paid plan applies from launch
~$2050k emails / month
~$35100k emails / month
~$90200k emails / month
AWS operationsLambda, SQS, EventBridge and CloudWatch, plus backups and the staging environment
~$17usage allowance
~$56usage allowance
~$178usage allowance
Cloudflare + ClerkFront end, DNS, CDN and user login. Clerk is free to 50,000 monthly retained users, which covers all three tiers on volume; Cloudflare Business at Expanded is taken for the SLA
$0free plans
~$20Pro + Free
~$225Business + Pro
Monthly infrastructure
~$96
~$367
~$1,408
Approx. in rupees at ₹95 / $Rate as at 11 September 2026
₹9,120
₹34,865
₹1,33,760
Sizing is a planning allowance, confirmed through testing at the Phase 4 gate. Growth adds a worker and a load balancer; Expanded adds two workers. US East pricing assumed. S3 requests and media downloads, transfer above the bundled Lightsail allowance, domain renewal and payment-processing fees are extra. Maintenance is separate and is set out in the next section.
How the bill grows
Every increase, its trigger and its price
The Launch tier is not a stripped build that must one day be replaced — it is the full architecture with its redundancy switched off. Each line below is a console change on infrastructure already provisioned for it, made in an afternoon with no downtime and no code change. PTR is told the trigger in advance and sees it coming on the monitoring dashboard, so nothing here arrives as a surprise on an invoice.
What you will see first
What gets switched on
Added / mo
Grows with data and volume — gradual, unavoidable, small
Media library passes 250 GBRoughly two full tournament seasons of photography
Amazon S3 storage, billed per GB used
+$0.023 / GB₹2.19 / GB
Database passes 50 GBOn current assumptions, around month 18
RDS storage, expanded without downtime
+$0.115 / GB₹10.93 / GB
Outbound transfer passes the bundled 4 TBFar beyond what 100–300 concurrent users generate
Lightsail transfer overage
+$0.09 / GB₹8.55 / GB
Email passes 50,000 a monthAround 1,600 a day across bookings, registrations and league mail
Resend, 100k tier
+$15₹1,425
Retained users pass 50,000 on ClerkNot expected before year three
Clerk Pro, then per retained user above the allowance
+$25then $0.02 / user
Steps up with load — each one deliberate, each one triggered
Database CPU sustained above 60%, or its burst credit balance trending down week on weekThe first capacity signal you will hit, and it is a resize, not a migration
db.t4g.medium in place of db.t4g.small
+$24₹2,280
The first tournament where an hour of downtime costs real moneyA business decision, not a technical threshold. Recommended before the first paid Singh Open
RDS Multi-AZ — automatic failover, availability target moves to 99.9%
+$29₹2,755
Application server memory or CPU sustained above 70%Usually arrives with league scoring running on several nights a week
Lightsail 8 GB plan in place of 4 GB
+$20₹1,900
Peak concurrency passes ~500, or a single server failure becomes unacceptableWatch the tournament-Saturday peak, not the daily average
Second Lightsail server and a Lightsail load balancer
+$42₹3,990
A second server exists, or leaderboard connections pass ~2,000Two servers must share cache and fan-out state; a local Redis cannot
ElastiCache Redis, managed
+$12₹1,140
Bot traffic on registration, or scraping of member and result pagesTypically after the first tournament that gets press
Cloudflare Pro — managed WAF rulesets, rate limiting, image optimisation
+$20₹1,900
Taken together, the load-driven steps are what turns the Launch tier into the Growth tier. On the growth assumed here, the first is reached in month 12–18 and the bill sits between ₹9,000 and ₹13,000 a month for the whole of year one. What moves the number first is data and email volume, not visitors — at 100–300 concurrent users a day, traffic is not the constraint on this tier and will not be for some time.
Stripe sits outside this table: no monthly fee, 2.9% + $0.30 per transaction deducted from takings. The domain is provided and renewed by PTR Golf. Tournament SMS, if added later, runs about $0.008 per message. Figures are USD at published rates for US East, verified on 11 September 2026 against AWS, Cloudflare, Clerk and Resend published pricing. Rupee equivalents are converted at ₹95 to the dollar, the rate on the same date. Both the exchange rate and provider pricing should be re-confirmed at signing; infrastructure is billed to PTR in dollars regardless.
Maintenance & service levels
Monthly · begins after the 30-day warranty
The retainer begins when the 30-day warranty period ends. Either party may terminate it with 30 days' written notice; exit assistance applies regardless.
Standard
₹30,000
per month
Uptime monitoring and alerting
Security patches and dependency updates
Verified daily backups with quarterly restore rehearsal
Defect resolution across delivered scope, up to 4 hours
Up to 6 hours of content updates and minor changes
Business-hours response
Priority
₹40,000
per month
Everything in Standard
Defect resolution up to 6 hours, and up to 10 hours of updates and enhancements
24×7 response on critical incidents, including tournament weekends
Annual event rollover included — Singh Open and PGL moved to the new year at no charge
Quarterly performance, cost and analytics review
Change freeze windows around scheduled live events
What the retainer does each month
Where the hours go
Most of a maintenance retainer is not new work. It is the cost of a platform being looked after in a month when nothing is asked of it and nothing goes wrong — which, done properly, is most months. The table below is what happens on the platform every month whether or not PTR sends a single request.
Work
What it prevents
Standard
Priority
Happens every month regardless — the platform being kept, not changed
Security patches & dependency updates
An unpatched Node runtime, Postgres version or npm package is the most common way a platform this size is breached. Stripe and Clerk also retire SDK versions on their own schedule, not PTR's.
~3 hrs
~3 hrs
Backup verification
Taking a backup and having a backup are different things. One is restored to staging each month and checked against production, so the seven-day recovery window is a tested fact rather than a setting.
~1.5 hrs
~1.5 hrs
Monitoring & alert response
The alerting is automated; answering it is not. Includes tuning thresholds so alerts stay meaningful — an alert nobody trusts is worse than no alert.
~1 hr
~1 hr
Third-party drift
Stripe deprecates API versions, Cloudflare changes defaults, Clerk ships breaking updates. These are applied on a schedule, before they break a checkout, rather than diagnosed after one fails.
~1 hr
~1 hr
Performance & cost review
Slow queries, the database CPU credit balance and the infrastructure bill, read against the growth ladder above — so a tier change is planned a month ahead rather than discovered during a tournament.
~30 min
~30 min
Drawn on when needed — the platform being changed
Defect resolution
Faults in delivered scope found after the 30-day warranty, at the response and resolution targets set out below.
up to 4 hrs
up to 6 hrs
Content updates & minor changes
A new event page, a price change, a new sponsor tier, copy and image edits — the things staff cannot do from the CMS themselves.
up to 6 hrs
up to 10 hrs
Monthly commitment
Of which roughly seven hours happen in a month where nothing is asked and nothing breaks
up to 17 hrs₹30,000
up to 23 hrs₹40,000
Both tiers work out at roughly ₹1,750 an hour, which is the retainer rate rather than the project rate. The difference between them is not mainly hours: Priority buys 24×7 cover on critical incidents, which is what a tournament weekend actually requires, plus the annual Singh Open and PGL rollover and a change freeze around live events. Unused change hours do not roll over. A month needing more than its allowance is quoted before the work starts, never billed after it.
What sits outside the retainer
Quoted separately, never assumed
Covered by the retainer
Everything in the table above
Faults in anything delivered under the five phases
Keeping existing integrations working as their providers change
Content and configuration changes within delivered modules
Quoted as a change order
A new module or business area not in the delivered scope
A new third-party integration — a different payment, email or scoring provider
Visual redesign of delivered pages
Additional locations beyond those delivered in Phase 5
Data migration from a source not named in Phase 3
Infrastructure charges, which AWS and Cloudflare bill PTR directly
Work outside the retainer is charged at ₹2,200 an hour, or quoted as a fixed price before it starts, whichever PTR prefers. The retainer rate is lower than the hourly rate deliberately — that gap is what the commitment buys.
Severity
Definition
Response
Resolution target
P1 · Critical
Platform unavailable, payments or bookings failing, or live scoring failing during an event
1 hour24×7 on Priority
4 hours
P2 · High
A major function unavailable with no workaround — registration closed, standings not updating
4 business hrs
1 business day
P3 · Medium
A function degraded but usable, or incorrect in a way that has a workaround
1 business day
5 business days
P4 · Low
Cosmetic defects, content corrections and enhancement requests
2 business days
Next release
Availability target · Launch tier
Measured monthly, excluding agreed maintenance windows
99.5%
~3 hr 40 min / mo
Availability target · Multi-AZ onward
From the month RDS Multi-AZ and the second application server are switched on
99.9%
~43 min / mo
Recovery objectives at every tier: a recovery point of 5 minutes, using point-in-time recovery across a seven-day window. Recovery time differs by what is switched on. On the Launch tier, a failed application server is restored from its most recent Lightsail snapshot, and a database failure is a restore of about 30 minutes. Once Multi-AZ is on, database failover between availability zones is automatic and completes in 60–120 seconds, with one hour as the outer bound for a full restore from snapshot. The availability targets above follow directly from this and are the reason the Launch figure is stated at 99.5%: Amazon publishes 99.5% for a Single-AZ database and 99.95% for Multi-AZ, and PTR should not be promised a number its infrastructure cannot support.
Security, compliance & data ownership
Built in, not added later
Controls applied to member records, payment relationships and published results.
Security controls
Card data is not held on the platform. Payment is handled through provider-hosted elements. No card number is stored, processed or transmitted by platform code, keeping PTR Golf within the SAQ-A PCI-DSS self-assessment category.
Encryption in transit and at rest — TLS 1.3 on every connection, AES-256 on the database and object storage.
Role-based access control with least privilege, and multi-factor authentication required on all administrator accounts.
Immutable audit trail. Every score entry and edit, booking, refund, registration and administrator content change records the acting user, the timestamp and the previous value.
Tenant isolation so one hosted outing cannot read another's registrations, sponsors or contacts.
Secrets held in a managed secrets store, never in source code or configuration files.
Automated dependency scanning in the pipeline, with a defined patch cadence under the retainer.
Data, privacy & ownership
PTR Golf owns all data and all code from the first commit, unconditionally.
Full export on demand in open formats, at any time, without developer involvement.
Consent captured and stored at the point of collection, and enforced on every outbound segment.
Subject access and deletion handled through the admin tooling, supporting GDPR and CCPA style requests from members and registrants.
Minor participants: where junior events collect data on under-18 players, guardian consent is captured and those records are flagged and access-restricted.
Retention policy agreed during Phase 1 discovery and enforced automatically thereafter.
No developer access to production data after handover except under an explicit, logged support request.
Risk register
Reviewed at every phase gate
Risks to delivery, with the mitigation applied to each. The register is reviewed and updated at every phase gate.
Risk
Likelihood
Impact
Mitigation
Membership pricing undefined when Phase 3 beginsThe brief states packages and pricing will follow separately
High
Medium
Pricing, tiers and benefits are stored as configuration. The Lounge section can be built and launched with pricing entered by staff at any point before opening.
Historical data from x4Golf or fringegolfers is incomplete or unexportable
Medium
Medium
Export feasibility is tested in Phase 1, not Phase 4. If data cannot be extracted cleanly, the archive is scoped to what verifies and the gap is agreed in writing.
Tournament-day load exceeds the provisioned tier
Low
High
Load testing to the contracted target is a Phase 4 exit criterion, with 40% headroom required. An auto-scaling group is configured for registration surges and event weekends.
A disputed tournament result with prize money attached
Low
High
An immutable audit trail records every score entry and edit with acting user, timestamp and prior value, alongside attested scorecards.
Conflicting feedback from multiple stakeholders
Medium
Medium
A single named decision-maker with sign-off authority, and consolidated feedback per phase gate.
Scope growth driven by hosted-outing clients
Medium
Medium
Two pilot tenants are in scope. Further onboarding, and any request originating from a tenant, is quoted separately and routed through change control.
Canton opening date moves
Medium
Low
Phase ordering is independent of the opening date. Phase 3 can be resequenced ahead of Phase 4 without altering the gate structure or the fee.
Scope boundaries
What is in, and what is not
What this build covers and what it does not. Items listed as not included sit outside this scope.
Included in this build
All 36 deliverables, to their stated definition of done
Full UI and UX design for every screen
Responsive build across phone, tablet and desktop
Staging environment maintained throughout
Automated tests on payment, booking and scoring paths
Cross-browser testing and WCAG 2.1 AA accessibility pass
Load testing to the contracted concurrency target
Penetration testing of authentication and payment paths
Infrastructure setup and deployment pipeline
Migration from x4Golf and fringegolfers, verified against source records
Two pilot hosted-outing tenants onboarded
Documentation, training, source-code and infrastructure handover
30-day defect warranty and 20 hours of exit assistance
Not included
Domain purchase and renewal — provided by PTR Golf
Cloud and third-party service fees — billed to PTR-owned accounts directly, at cost
Payment processing fees, deducted from takings
Photography, videography and written content
Logo and brand identity creation — existing Singh Open and PGL marks to be supplied
Simulator hardware integration for score ingestion — the hardware exposes no API
Native iOS and Android applications
Point-of-sale, door access and F&B ordering system integration
Accounting or marketing-automation integration
Paid advertising, SEO campaigns and social media management
Golf course tee-time inventory or GPS integration for outdoor events
Legal, tax and payment-compliance advice
Decisions
Both settled · recorded for the record
Both technical decisions affecting the data model are settled and recorded here as part of the scope.
Decision A · settled · deliverables 25–28
Score capture — manual entry
The simulator hardware exposes no API, so scores are captured through the platform's own mobile scorecard: per-hole and total entry by player or scorer, with an immutable edit and dispute trail. No ingestion pipeline is built and none is priced. Score entry sits behind an internal interface, so an ingestion path could be added later as a separate engagement should hardware capability change.
Decision B · settled · deliverable 19
Booking engine — custom
Bay booking is built on the platform database rather than on a third-party reservation system. Bay inventory, pricing rules, off-peak windows and member rates are held in PTR Golf's own data, and bookings reach the central customer database directly without an integration layer. No third-party booking licence fee applies.
Technical scope
Appendix · 13 modules
The same scope in technical terms. The 36 deliverables are built from these 13 modules. Codes are identifiers, not a sequence; the phase label states where each is delivered.
SHELLPhase 1
Core Shell & Design System
The shared framework all properties are rendered within.
Global nav: Home | Golf Lounge | Events & Tournaments | Leagues | About PTR | Book
Theme tokens so each event or property overrides color, logo and hero while sharing the layout engine
Visual direction: premium, modern, golf-focused, social and community-driven
Mobile-first across phone, tablet and desktop
TMPLPhase 2
Dependency — delivered before Singh Open and PGL
Event Page Template Engine
One schema powering Singh Open, PGL, and every future or hosted outing.
Fields: history, description, dates, location, format, rules, registration, teams and players, schedule, pairings, results, standings, sponsors, media, past champions
Every form, registration and booking writes into it
Segmented email out, with consent captured at the point of collection
Integrated as each module is delivered, rather than retrofitted at the end
HOSTPhase 5
Hosted Outings Platform
Event pages hosted on PTRGolf.com for third-party outings.
Outside organizations get a PTR-hosted event page for outings run at traditional courses
Golfer and team registration, sponsorship purchase, payment collection, pairings, results, gallery, promotion
Needs per-client data isolation, an onboarding flow, and eventually a client-side editor
Tenancy is delivered in Phase 2; Phase 5 onboards the first two tenants onto it
CMSPhase 2
Admin CMS
Staff add a new year, event, league or location without a developer.
Roles: PTR admin vs. hosted-outing client
Media and sponsor asset management
Delivered in Phase 2, giving PTR staff content control for eight weeks before launch
Document control & acceptance
Version 1.0
Signature by both parties constitutes acceptance of the 36 deliverables, the phase gates, the fee and payment schedule, and the commercial terms set out above.
Document control
DocumentStatement of Work — PTRGolf.com Platform
Version1.0
Issue date11 September 2026
Valid until2 October 2026
Parties
Prepared forPTR Golf
Prepared by
Contact
Accepted for PTR Golf
Name
Title
Signature
Date
Accepted for the supplier
Name
Title
Signature
Date
The named decision-maker required under Governance should be recorded at signing, together with the project sponsor on each side for escalation purposes.