Internal Review

Features Overview

All features built into the Apex Lab Group platform — for internal review only.

129features
14categories

Rx Wizard (Doctor Submission)(19)

Rx Wizard (13-step)

Multi-step prescription submission with autosave to localStorage, draft saving, and PDF download on completion.

My Cases Tab

Historical view of all submitted Rx cases with status badges, keyword search, refresh, and PDF download per case.

Case Status Tracking

Status pipeline: draft → submitted → received → in_production → shipped → delivered → remake.

RxStep1 – Doctor Info

Captures doctor name, email, phone, NPI, license, and practice name.

RxStep2 – Select Lab

Lab selector with live data from LabLocation entity; pre-fills from ?lab= URL param.

RxStep3 – Case Type

Selects from: fixed crown/bridge, implant, removable, guard, aligner, Snap-On Smile, Lumineers, LumiSmile, Kinder Krown, surgical guide, other.

RxStep4 – Patient Info

First name, last initial, DOB, sex, chart ID, age, phone, prep date, seating appointment date/time.

RxStep5 – Teeth & Restorations

Interactive universal tooth chart with per-tooth restoration type selection.

RxStep6 – Implants

Per-implant details capture.

RxStep7 – Removables & Appliances

Removable prosthetics and appliance options including brand upsells.

RxStep8 – Add-On Services

Additional services, enclosed items, occlusal notes, and 'please send' options.

RxStep9 – Impression

Impression type (digital/PVS/alginate/physical model), scanner type, scan link ID.

RxStep10 – Instructions

Free-text special instructions field.

RxStep11 – Due Date

Target due date with rush order toggle.

RxStep12 – Shipping

Shipping label request option.

RxStep13 – Review & Submit

Full Rx summary view with PDF export; submits to RxSubmission entity.

Rx PDF Generation (Server-Side)

Backend Deno function (generateRxPdfServerSide) generates a branded, two-column PDF matching the original Robertson Lab form layout, uploaded to storage and linked on the submission.

Doctors Resources Page

Resource hub at /doctors/resources with clinical guides, case submission instructions, training videos, and lab contact directory.

Send a Case Page

Portal at /send-a-case with submission method cards (digital, physical, walk-in) and embedded lab locator.

Dentist Portal (/doctors/portal)(11)

Cases Module

Full case history for the logged-in dentist: status filters, keyword search, case detail expand, PDF download, and remake initiation.

Approvals Module

Queue of pending lab approvals (Photo Review, 3D Render, Try-In Sign-off, Final Approval) with attachment viewer, comment field, approve/request changes/reject actions.

Lab Chat Module

Per-case threaded messaging between doctor and lab; unread badge per thread, mark-as-read, attachment support.

Billing Module

Invoice list with status badges (Open/Partial/Paid/Overdue), Pie chart of balance by status, 6-month bar chart of payment history, summary KPI cards, and invoice detail modal with Pay Now action.

Aging Report Module

Accounts receivable aging buckets (Current, 1–30, 31–60, 61–90, 90+ days) with totals, drill-down per bucket, and CSV export.

Coupons Module

Lab credit coupon wallet: available balance, expiry dates per coupon, applied and expired history, sourced from CouponLedger entity.

Remake Cases Module

Lists active remakes and allows submitting a new remake request against a previous case with reason selection.

CE Courses Module

Dentist's CE credit tracker: annual credit summary, upcoming registered courses, attended course archive with certificate download links.

Equipment Module

Practice equipment inventory: add/edit/delete items by category (Imaging, Milling, Scanning, Sterilization, Handpiece, Other), warranty tracking, service due dates, and CSV export.

Sidebar Navigation

Responsive navy sidebar with notification badges for pending approvals, unread messages, and overdue invoices; mobile hamburger toggle.

Real-Time Notifications

Loads live counts for pending approvals, unread chat messages, and overdue invoices on portal load.

Scanner Finance Program(14)

Scanner Finance Page

Public landing page at /scanner-finance with program options and apply CTA.

Scanner Apply Page

Application form at /scanner-apply for new scanner loan requests.

Scanner Program Dashboard

Doctor-facing portal at /doctors/scanner-program with loan overview, payment history, coupon wallet, and tech support.

ScannerLoan Entity

Tracks loan amount, APR (3.9%), 48-month term, monthly payment, status, and payments completed.

ScannerPayment Entity

Records individual payments with principal/interest split, coupon issuance flag, and status.

CouponLedger Entity

Tracks earned coupons with 90-day expiry; statuses: Available, Applied, Expired.

TechSupportTicket Entity

Video-call support ticket system with scheduling, status tracking, and session notes.

Coupon Wallet Component

Displays available coupon balance, expiry dates, and applied/expired history.

Scanner Stats Row

Summary stats row showing total paid, coupons earned, remaining balance.

Scanner Timeline

Visual loan timeline showing payment milestones and coupon issuance dates.

Scanner Tech Support

In-app video call request form for scanner software assistance.

issueMonthlyCoupons function

Scheduled backend function that issues lab credit coupons on each loan payment.

couponUtils.js

Centralized library for coupon math: available balance, FIFO redemption, expiry handling.

Scanner Admin Portal

Admin dashboard at /admin/scanner-program with overview, loan management, coupon controls, and support queue.

Lab Network(8)

Lab Locator

Searchable/filterable lab finder with service filters (fixed, removable, implants, guards, aligners, etc.) and scanner filters (iTero, Trios, Medit, etc.).

Geolocation / ZIP Search

Detects user location or geocodes ZIP/address via Nominatim; sorts labs by distance in miles.

List / Map Toggle

Switches between card list view and interactive Leaflet map with clickable lab pins.

Lab Map

react-leaflet map showing all labs as markers; popups with Submit Rx and Details links; auto-fits bounds.

Lab Detail Page

Per-lab profile at /labs/:slug with services, turnaround times, scanners, team lead, certifications, and reviews.

Lab Cards

Show name, city/state, phone, turnaround, scanner chips, Submit Rx and Details links.

Real Lab Locations

LabLocation entity pre-populated with verified Apex Lab Group addresses across the US; duplicates and inactive locations removed.

Labs Page (/labs)

Full searchable lab directory with list and map toggle, service/scanner filters, and distance sorting.

Product Category Pages(6)

Fixed Restorations (/products/fixed)

e.max, Zirconia, PFM, Cast Gold — service descriptions and lead capture.

Removable (/products/removable)

Dentures, partials, overdentures, and flippers.

Implants (/products/implants)

A-Zir crowns, abutments, overdentures, and All-on-X hybrids.

Guards & Appliances (/products/guards-appliances)

Night guards, sports guards, bleaching trays, and retainers.

Clear Aligners (/products/clear-aligners)

In-house aligner service with digital case planning and practice support.

ART Service (/products/art)

Artist characterization, custom staining, smile makeovers, and digital smile design.

Brand Pages(9)

Lumineers Page

Brand landing at /lumineers with product info, FAQ, and lead capture.

Snap-On Smile Page

Brand landing at /snap-on-smile with prescription-only notice and patient testimonials.

Kinder Krowns Page

Brand landing at /kinder-krowns with Shopify product grid and lead capture.

Kinder Krowns Catalog

Product catalog at /kinder-krowns/shop pulling from Shopify 'kinder-krowns' collection.

Surgical Guides Page

Brand landing at /surgical-guides with turnaround tiers, tech specs, and product grid.

Surgical Guides Catalog

Product catalog at /surgical-guides/shop.

LumiSmile Page

Brand landing at /lumismile with portal workflow and lead capture.

Brand Carousel (Home)

Auto-rotating animated carousel showcasing all 6 brands with taglines, logos, and CTAs.

Brand CSS Themes

Per-brand CSS variable overrides (kinder-krowns, lumineers, snap-on-smile, lumismile, surgical-guides).

Shopify Integration(3)

ShopifyProductGrid

Fetches products from a Shopify Storefront collection via backend function; supports search and product-type filtering.

shopifyProducts function

Backend Deno function calling Shopify Storefront GraphQL API to return products, variants, images, and pricing.

shopifyWebhook function

Webhook handler for Shopify events.

Homepage(8)

Hero Section

Animated hero with headline, CTAs (Submit Rx, Find a Lab), stats, and brand navigation bar.

Brand Carousel

Rotating full-width carousel for all Apex brands — Lumineers, Snap-On Smile, LumiSmile, Kinder Krowns, Surgical Guides, Scanner Program — with auto-play, manual nav, and Framer Motion transitions.

Why Apex Section

4-column value prop grid (USA-made, fast turnaround, low remake rate, technology); fully i18n.

Rx CTA Banner

Full-width navy call-to-action strip with Submit Rx and Find Labs buttons.

Lab Locator Preview

Embedded LabLocator on homepage with link to full /labs page.

Reviews Carousel

Rotating customer review cards filtered by brand with aggregate star rating display.

Lead Capture Form

Contact/inquiry form saving to LeadCapture entity with brand interest selector, TCPA consent (EN/ES/KO), and portal login shortcut.

Portal Login CTA

Quick-access login button to /doctors/portal embedded within the lead capture form sidebar.

Navigation & Layout(6)

Site Header

Sticky nav with dropdowns for Products, Brands, Doctor Resources; mobile hamburger menu; language switcher; top utility bar.

Site Footer

Footer with links, brand navigation, and contact info.

App Layout

Shared layout wrapper using React Router Outlet with header/footer.

Dentist Finder Page

Search page for finding dentists at /doctors/find-a-dentist from the Dentist entity.

About Page

Company overview at /about with stats, values, and CTAs.

Features Review Page

Internal review page at /features-review listing all platform features by category with live counts.

Internationalisation(3)

LanguageProvider

React context providing t() translation function; language persisted in localStorage.

Language Switcher

UI control to switch between EN, ES, and KO.

Translations

Key-value translation strings for EN/ES/KO covering all major UI copy, carousel content, nav labels, and forms.

CE Events & Education(14)

CE Events Page (/ce-events)

Public-facing page (no login required) with hero stats, upcoming events, past events archive, and local event request form.

CEEvent Entity

Full event record: title, type, status, date/time, venue, speaker, CE credits, agenda items, photos, recording URL, presentation file, and travel info.

CEEventRegistration Entity

Per-attendee registration with confirmed/waitlisted/cancelled status, attendee count, dietary restrictions, and special requests.

CEEventRequest Entity

Tracks practice-submitted Lunch & Learn requests with topics, timing preference, preferred months, and status workflow.

Upcoming Events Section

Filter tabs (All, event type, In-Person, Online), featured card + grid layout, spots-remaining indicator, 'Upcoming Soon' badge within 7 days.

Event Detail Modal

Slide-over panel with Details, Agenda timeline, Location & Travel (Google Maps embed, hotel/flight links), and Register tabs.

Registration Form

In-modal form with auto confirmed/waitlisted logic, confirmation email to attendee, and notification to info@apexlabgroup.com.

Past Events Section

Archive grid with featured most-recent card; Download Slides, Watch Recording, and photo lightbox buttons per event.

Photo Lightbox

Full-screen image gallery for event photos with prev/next navigation.

CE Event Request Form

Public form to request a local Lunch & Learn with topic multi-select, preferred months, and benefit callouts; sends confirmation emails.

CE Events Admin (/admin/ce-events)

Staff portal with event list (create/edit/delete), full event editor with agenda builder, registrations per event with CSV export, and event requests list.

Event Editor

Full form for all CEEvent fields including agenda item builder (add/remove), featured toggle, online/in-person toggle, and file URL inputs.

Registrations List

Per-event registrations with confirmed count vs. max, CSV export, manual add, and cancel actions.

Event Requests List

Sortable request list with status workflow (New → In Review → Scheduled → Declined) and one-click Convert to Event.

Staff Admin(3)

Rx Cases Dashboard (/admin/rx-cases)

Internal staff view of all RxSubmission records with status filter tabs (counts per status), keyword search, expandable case rows, inline status update, and PDF download.

CE Events Admin (/admin/ce-events)

Manage CE events (create/edit/delete), full agenda builder, registrations per event with CSV export, and event requests list with status workflow.

Scanner Admin (/admin/scanner-program)

5-tab admin portal: Overview stats, Loans list (approve/activate/manage), Coupon controls (issue/revoke), Tech support queue, and New Loan creation form.

Data Entities(18)

LabLocation

Lab profiles: name, slug, address, lat/lng, phone, email, services, scanners, turnaround days, team lead, certifications, parent brand. Real verified Apex locations.

RxSubmission

Full prescription record: doctor info, patient info, case type, teeth, shade, impression, shipping, status, PDF URL, Salesforce case ID.

CaseApproval

Lab approval queue item: case ID, dentist ID, approval type (Photo Review / 3D Render / Try-In / Final), status, attachments, lab notes, dentist comments, due date.

CaseMessage

Per-case threaded messages between doctor and lab: sender ID, role, message body, attachments, read/unread flag.

Invoice

Invoice record: line items, subtotal, tax, coupon deduction, total, amount paid, status (Open/Partial/Paid/Overdue), payment history array.

ScannerLoan

Scanner finance loan: model, price, APR (3.9%), 48-month term, monthly payment, status, payments completed, remaining balance.

ScannerPayment

Individual loan payment: principal/interest split, coupon issuance flag, linked CouponLedger ID, status (Scheduled/Processed/Failed).

CouponLedger

Lab credit coupons: earned date, 90-day expiry, status (Available/Applied/Expired), linked loan and order IDs.

TechSupportTicket

Video call support tickets: video channel (FaceTime/Zoom/Meet/Teams), issue type, scheduling, tech assignment, session notes, recording URL.

Equipment

Practice equipment inventory: category, manufacturer, model, serial number, purchase date, warranty expiry, service dates, archive flag.

CERecord

Dentist CE record: course name, provider, type (Attended/Upcoming), date, credit hours, format, certificate URL, expiry, registration status.

Review

Customer reviews: rating, author, brand, lab_slug, featured flag, Google review ID.

LeadCapture

Inquiry leads: name, email, phone, zip, brand interest, lead type, message, source URL, Salesforce lead ID, sync status.

SalesforceConnection

Stores Salesforce OAuth tokens (access, refresh, instance URL, expiry) per dentist user.

Dentist

Dentist directory: NPI, practice, address, lat/lng, brand certifications (Lumineers, Snap-On Smile, LumiSmile, Kinder Krowns), membership tier, Google rating.

CEEvent

CE event: title, type, status, date/time, timezone, venue, speaker (name/title/bio/photo), CE credits, max attendees, cover image, event photos, agenda items, travel info, Zoom link.

CEEventRegistration

Attendee registration: linked event, name, email, practice, NPI, attendee count, dietary restrictions, status (Confirmed/Waitlisted/Cancelled).

CEEventRequest

Practice Lunch & Learn request: contact info, topics of interest, preferred timing/months, attendee count, status workflow (New → In Review → Scheduled → Declined).

Integrations & Backend(7)

generateRxPdfServerSide

Deno backend function that builds and uploads a branded two-column Rx PDF to storage, returning a permanent URL stored on the RxSubmission record.

issueMonthlyCoupons

Scheduled Deno function that creates CouponLedger records with 90-day expiry for each processed ScannerPayment that has not yet had a coupon issued.

salesforceOAuth

OAuth callback handler that exchanges a Salesforce authorization code for tokens and persists the connection to the SalesforceConnection entity.

syncLeadToSalesforce

Maps a LeadCapture record to the Salesforce Lead schema and posts it via the Salesforce REST API using the stored OAuth tokens.

shopifyProducts

Deno function calling the Shopify Storefront GraphQL API to return products, variants, images, and pricing for a given collection handle.

shopifyWebhook

Webhook handler for inbound Shopify events.

couponUtils.js

Frontend utility library for all coupon math: available balance (excluding expired), FIFO redemption ordering, UTC-safe expiry calculation.