Skip to main content
Caleb AlvaradoWeb developer & technical partner home

Powerlifting coachingLaunched October 2026, ongoing

Forte Strength

Free lifting calculators bring athletes in, a five-step application books the consultation call, and the coach runs the whole business from one place.

Partner to Coach Ty (Tyler Montano); I designed and built the entire platform solo and keep it running, Ty runs the coaching.

LivePartner and lead developerVisit Forte Strength (opens in a new tab)
  • Next.js 16
  • React 19
  • TypeScript
  • Tailwind CSS v4
  • shadcn/ui
  • Prisma 7 + Neon Postgres
  • Clerk auth
  • Resend + React Email
  • Twilio SMS
  • React PDF
  • Vitest
  • Vercel
fortestrength.org
Forte Strength landing page: a dark hero with the coaching headline, the red brand accent and the call to action to apply.
Client
Forte Strength
Industry
Powerlifting coaching
My role
Partner and lead developer
Timeline
Launched October 2026, ongoing
Stack
12 technologies
Status
Live

The problem

Forte Strength is the powerlifting coaching business I run with Coach Ty (Tyler Montano). In a one-coach business the product is the coach's time, and every hour that goes to admin comes straight out of coaching: reading applications, finding a time for a consultation call, keeping track of who has paid and who is about to need a new program, and putting together meet-day instructions for each lifter before a competition.

The money side lived in a spreadsheet: client payments, general income and expenses, month by month. A spreadsheet holds the numbers, but it does not chase them. It will not flag a payment that is overdue, a lifter whose program is about to run out or a meet that is a week away, and nothing connected it to the rest of the business. Staying on top of all of that was on the coach.

Growth had the same shape. New lifters arrive one at a time, and each one needs a reason to visit, a reason to trust the coaching and a simple way to get on a call with Ty. Without a system, every prospect is a conversation the coach carries by hand, from the first message to a time that works for both of them, and some of them go quiet along the way.

What I built

I built one platform that does both jobs. The public side is a fast landing page that sells the coaching (it shows Ty's bio and record counts, which he edits himself), free tools that give lifters a reason to visit and to trust it, a public team leaderboard built from clients' real training, and a five-step application. The last step of the application is picking a consultation call time, so by the time Ty hears about a new applicant the call is already on his calendar.

Behind the login, Ty runs the business from one admin panel. Applications land in an inbox. Calls are approved, moved or cancelled from a calendar, and reminders go out by email or text on their own. A monthly finance sheet took over from his spreadsheet and flags what is due, overdue or about to run out. A meet-day checklist builder turns a lifter's meet details into a branded PDF and emails it in one click. Built-in analytics show traffic, which campaigns and QR codes bring people in, and which question applicants quit on.

Clients get a portal of their own: a dashboard with the team's latest records, a PR tracker, self-service booking for their monthly coaching calls, a mobility drill library, and it all installs on a phone like an app. The same codebase also runs as three skins (powerlifting, nutrition and bodybuilding) with palette, headlines and admin labels switching in one click: the offer to other coaches is a proven operating system that can carry their brand, not a one-off website. There is no public demo; request a walkthrough and I will show it.

What it does

Features that pay for themselves

Each one in terms of what it does for the business, not what it is made of.

  1. Free calculators that bring lifters in

    A calorie and macro calculator and a DOTS score calculator, free to anyone, each with a 'View the calculations' panel that shows every formula with the visitor's own numbers. They give lifters a reason to visit and a reason to trust the coaching, and each one carries a coaching card that points to the application.

    fortestrength.org
    The free TDEE calculator: a form for body stats and activity next to maintenance calories, bulk and cut targets and macro splits.
    Every formula is shown with the visitor's own numbers.
  2. A public leaderboard built from real training

    Clients log their personal records in a PR tracker: the chart may only climb, and a new record gets confetti. The public leaderboard is built from those records, a top-10 podium and best-lift boards by lift, age group and weight class, with names shortened to a first name and an initial. The team's progress markets the coaching on its own.

    fortestrength.org
    The PR tracker right after a new record is logged: a New personal record card for an incline dumbbell press, with the line chart climbing to the new weight.
    Behind sign-in
    A series may only climb: the chart rises to the new record the moment it is logged.
  3. An application that ends with a booked call

    Four short question steps, then the applicant picks a consultation call time as the fifth. Drafts save as they go, and the answers and the booked call are stored together so neither exists without the other. Ty gets every answer by email with a link to his inbox, the applicant gets a receipt, and they can cancel or rebook later without messaging anyone.

    fortestrength.org
    The coaching application on its first step: a question form with a progress indicator and a photo beside it.
    Step five is picking the consultation call time.
  • Calls approved, reminded and rebooked from one calendar

    Requests wait at the top of the coach's calendar. Ty approves, asks for another time or cancels with a note the person sees, and the reminders go out the morning of and an hour before by email or text. Clients book their own 20- or 60-minute coaching calls up to two weeks ahead, inside a monthly allowance the picker enforces, so nobody negotiates a time by message.

  • Analytics and QR codes that report back

    Built-in analytics with no third-party tracker: traffic and visitors, where they are on a world map, which campaigns bring them, and a funnel that shows exactly which question applicants quit on. The QR code generator designs codes in the brand, saves presets and ties each code to a campaign link, so scans from a gym flyer show up in the same reports.

  • Meet-day checklists as one-click PDFs

    Ty enters a lifter's meet details, from weigh-in and lifting times to flight and planned attempts, and gets a branded multi-page PDF with a live preview. One click emails it to the athlete as an attachment, and sent checklists stay in a history, so every lifter gets the same professional handout in minutes.

  • A finance sheet that took over from the spreadsheet

    One sheet per month of client payments, general income and expenses with running totals. It flags payments due today, overdue or missed last month, clients who need a new program and meets in their final week, and a new month rolls the sheet forward on its own. I wrote an importer so the history from the old spreadsheet came along.

  • One platform, any coach's brand

    The same product runs as three skins: the live powerlifting look, a light nutrition coaching theme and a bodybuilding theme. One click swaps the palette, headlines, service cards and admin labels, with no forked code. For a coach in another niche that means a proven operating system ready to carry their brand, not a website started from zero. There is no public demo; request a walkthrough and I will show it to you.

Engineering

Under the hood

For the partner who reads code.

  1. Double-booking is impossible at the database level

    Every booked call holds one row per 30-minute slot in a held-slot table whose primary key is the slot's start time. If two people grab the same slot at the same moment, the second insert fails on that key inside the transaction and that person is told the time was just taken. The monthly call allowance is checked inside the same transaction, and an application and its consultation call are written together, so neither can exist without the other. Emails go out after the response is sent, so a failed email never loses an application.

  2. Static where it can be, dynamic where it must

    The landing page is prerendered and served from the CDN. A signed-in visitor opening the same URL is transparently rewritten to a per-request copy, so they see their own state without the public page giving up its speed. When Ty edits his profile, the page is revalidated on demand, with an hourly refresh as a safety net.

  3. Access is checked in the page, not just the layout

    Middleware protects the account and admin areas, and the admin role lives in the database, so anyone else who asks for the admin panel gets a 404 and never learns it exists. Client-only content is gated inside the page itself, because a layout-only check would still send the locked data to the browser in the server component payload. Every server action checks again, and a custom test walks the source tree to block server-only code from leaking into client bundles before it can break production.

  4. First-party analytics that respect visitors

    Instead of a third-party tracker, a small validated beacon feeds Forte's own analytics: HTTP-only cookies, 30-minute sessions, bot filtering, visitor location from the platform's headers, and a retention window that purges old records on a schedule, with one-click erasure of a visitor's IP. The application funnel never records answers; the form reports only the step and the name of the last question touched, and tested, pure logic works out where people abandon.

  5. Three brands from one render, with no flash

    The skins are not three copies of the site. Every page renders the wording for all three niches on the server, and CSS variants keyed on a data attribute on the root element show one of them. A tiny inline script applies the saved choice before first paint, so there is no flicker and no per-user render on a page that stays static. The light nutrition theme was retrofitted onto a dark-only app by redefining the dark variant for that theme alone, without changing specificity, and even the confetti reads its palette from CSS variables at fire time.

  6. Built and tested like a product

    The codebase is 24 feature modules over 28 database models, with 136 test files covering pure logic, server actions, API routes and components. The scoring and calorie math is implemented from the published formulas and unit-tested, and the 'View the calculations' panel is built from the same result object as the answer, so the explanation cannot drift from the math. Money is handled in integer cents, every admin date and chart bucket uses the coach's Eastern time zone, the Twilio webhook verifies request signatures, and the 21 database migrations run only on production deploys, so a preview build can never touch the live database.

Gallery

Screens

  • fortestrength.org
    The DOTS calculator: total and bodyweight inputs with DOTS, age-adjusted DOTS and IPF GL scores and a step-by-step formula breakdown.
    DOTS, age-adjusted DOTS and IPF GL points, plus a reverse mode for a target score.
  • fortestrength.org
    The public team leaderboard: the Top 10 DOTS podium, three athletes shown by first name and initial, with the start of the ranked list below it and an lb/kg toggle.
    Built from clients' PR trackers; names shortened to a first name and an initial.
  • fortestrength.org
    The gallery page: a photo grid of meet days, podiums and platform lifts.
  • fortestrength.org
    The client dashboard: a greeting, the team's Fresh PRs slideshow, a sessions card with a Book a session button, the personal records panel and the tools list.
    Behind sign-in
    The team's latest PRs, session booking and the lifter's own records in one place.
  • fortestrength.org
    The admin overview: a sidebar of fourteen back-office sections next to tiles for new applications, call requests, website users and coaching clients, with the latest applications and newest sign-ups below.
    Behind sign-in
    The coach's home screen: everything that needs a decision, in one place. The user and client counts are blurred in this capture.

On a phone

  • The Forte Strength landing page hero on a phone.
  • The TDEE calculator form on a phone.
  • The team leaderboard podium on a phone.
  • The client dashboard on a phone: the greeting, the team's Fresh PRs slideshow and the Book a session card.
    Behind sign-in
    Installs to the home screen like an app.
  • The PR tracker chart on a phone after a new record.
    Behind sign-in
  • The admin overview on a phone: the section tabs scroll sideways and the stat tiles stack.
    Behind sign-in
    The same admin panel on a phone.

The admin overview, client dashboard and PR tracker are my own accounts on the live product, with other members' names blurred or shortened to a first name and an initial, as on the public leaderboard. The other screens behind sign-in were captured with demo data. The three skins are concept captures from a local build; there is no public demo.

Building something similar?

Tell me what your business needs. I will tell you what I would build, what it would take, and whether I am the right person for it.