Bearly Defense — Feature List
A user-discoverable inventory of what the Bearly Defense platform does. Bearly Defense is a multi-brand e-commerce platform by AideaMaker. Bearly Defense, Bearly Afloat, Bearly Nature and Bearly Wilderness are BRAND names, not companies.
Storefront
- Four brand lines, one catalog — Bearly Defense (lawful self-defense & EDC), Bearly Afloat (floating water gear), Bearly Nature (garden & outdoor gear), and Bearly Wilderness (rugged outdoor & water gear), each with its own themed landing page and colour palette.
- Data-driven navigation — the header pills, brand switcher, and footer columns are built from the brands that actually have at least one active product, so a line appears and disappears on its own without a code change.
- Host-based brand context — the request host selects the active brand at the edge, so each brand's own domain serves its own themed experience from a single application.
- Shop All store page with a live product count, brand filtering, and a deep-linkable
?brand=filter. - Featured carousel on the home page.
- The Black Talon has a full design & technical write-up page of its own.
- Per-product storefront tile image — a product can nominate a dedicated card image
(
Product.cardImageUrl) that differs from the lead image on its detail page. - Colour swatches on product tiles and brand pages — rendered from each variant's stored colour, and clicking a swatch changes the tile's picture.
- Pluggable catalog backend — the
CATALOG_PROVIDERsetting selects the native Prisma database (the default) or a static in-code catalog for local development without a database. The Emporania channel is not a third backend: it pushes into the native database through the inbound API, so the storefront reads its own DB and never depends on Emporania being reachable. - Pre-launch gating — before launch the catalog is fully browsable but prices and purchasing are
hidden; price fields are stripped server-side so they never reach the page source. Admins see
prices and can buy end-to-end for testing. One flag (
STORE_LAUNCHED, an operator-set server environment variable — not a self-service admin-panel toggle) flips the whole store live, and takes effect on a restart with no rebuild. - Private-site mode — an optional holding page for all public traffic, bypassed by admins and by
invited testers holding a preview cookie. Also an operator-set environment variable
(
SITE_PRIVATE), same as above.
Product pages
- Tabbed detail page — Overview, Materials, Specs, and Availability & Compliance, with a full keyboard (arrow/Home/End) tab pattern and screen-reader labelling.
- Animated slideshow image strip — the thumbnail rail auto-advances as a marquee, can be dragged by hand, and freezes for visitors who prefer reduced motion.
- Variant picker for colour and size, with per-variant price overrides and per-variant imagery.
- Quantity stepper up to 1,000, matching the top bulk-pricing tier.
- Live dispatch estimate that scales with run size — the stated turnaround changes as the quantity crosses the make-to-order thresholds.
- Large-run notice — orders at or above 100 units are flagged as confirmed with the buyer after purchase, before production is scheduled.
- Per-visitor availability strip — a signed-in shopper with a saved address sees this product's verdict for their own state; visitors with no known state see a neutral state instead of a misleading "Available".
- Carry-caution acknowledgement — where a destination is flagged carry-caution, the buy buttons stay disabled until the shopper acknowledges it.
Shopping & checkout
- Cart — anonymous (cookie-based) or signed-in, persisted in the database, with quantity controls and a live server-side quote.
- Stripe Checkout — secure hosted payment; orders, payments, and shipments are recorded from the webhook on completion.
- Idempotent webhook handling — a replayed or duplicated Stripe event cannot double-record an order, a payment, or a refund.
- Order confirmation email and a customer order history.
- Order cancellation and refusal — an order is an offer to buy; restricted-destination orders are automatically refunded and cancelled, never fulfilled.
Pricing, discounts & tax
- Bulk / volume pricing, open to every buyer — 15% off a line at 10+, 25% at 100+, and 40% at 1,000+, applied per line item by the quantity of the same item.
- One discounted unit price everywhere — the cart quote, the Stripe line item, and the amount charged are computed from the same effective per-unit figure, so no row can disagree.
- Bulk savings shown in the cart as its own line.
- Promotional / coupon codes — percent or fixed amount, validated on our own servers, with expiry, minimum order amount, and redemption limits; applied to the bulk-discounted subtotal.
- Texas sales tax computed in-house, not by Stripe — taxable when either the billing or the shipping address is in Texas, charged on merchandise after discount plus shipping.
- Post-payment tax reconciliation — a backstop recomputes the tax from the settled order and logs any discrepancy for review rather than failing the order.
- Single-sourced shipping copy — the flat US rate and the free-ship threshold are read from the
same source of truth as the charge itself: the flat rate stays a code constant, and the free-ship
threshold is now read from the admin
SHIPPING_FREE_THRESHOLD_CENTSsetting at request time on every product card, PDP, cart, shipping page, and legality view, so changing it in Settings updates both the charged amount and the printed copy without a deploy.
Shipping & availability
- Where We Ship map — a real geographic map of the United States (all 50 states plus the District of Columbia) showing three-way availability: available, limited, or not available.
- Per-destination availability pages — every state and DC has its own page listing which products ship there and the statutes informing that decision.
- Single generated source of truth — per-product, per-destination availability is generated from the statute research and consumed by the map, the state pages, the product pages, and the vendor page, so those surfaces can never drift apart.
- Framed as shipping policy, not legal advice, on every surface that presents it.
Wholesale & vendor
- Vendor / wholesale landing page — volume tier table, reseller benefits, and a four-step onboarding path.
- Per-product ship-to counts on the vendor page, derived from the same availability source of truth rather than typed by hand.
- Resale and exemption certificate handling for tax-free wholesale purchasing, by request.
- Authorized Reseller Program (live) — a signed-agreement tier for authorized resellers that goes deeper than the public volume schedule: 20–40% on orders of 10+, 30–50% at 100+, and 50–65% at 1,000+. The rate climbs one step with each further order in the same size band, and each band climbs independently.
- Reseller pricing is measured on the whole order, not per line item, so a mixed order of several products reaches a tier that no single line would.
- Reseller application form on
/resellerfor signed-in customers, capturing business details, resale certificate number and state, estimated volume, and a recorded acceptance of the Authorized Reseller Agreement with its exact version and timestamp. Applying grants nothing on its own. - Admin reseller review queue — pending applications with approve / reject / suspend / reinstate, the applicant's full submission, and a live view of their per-tier discount ladder.
- The applied discount is snapshotted onto the order at checkout and re-read (never re-derived) when payment settles, so a ladder step advancing mid-checkout can never make the recorded order disagree with what was charged.
- Ladder steps are earned only by orders that were actually paid for — a cancelled or refunded order earns none, and a repeated payment notification cannot advance a step twice.
- Higher per-line order limit for authorized resellers, above the 1,000-unit public cap.
- One master switch — with the program off, resellers are charged the ordinary public volume rates and the application form, signing flow and agreement pages are all closed.
Electronic signing of the reseller agreement
- Sign the agreement online, built to the U.S. ESIGN Act and the Texas UETA — read the full agreement and sign it from your account, with no printing, scanning or posting.
- A separate consent step before any signature: a plain-English disclosure covering your right to a free paper copy, your right to withdraw consent at any time, and the hardware and software you need. The consent is recorded as its own dated record.
- A real act of signing — you type your full legal name and confirm an explicit statement of intent. A single tick box is not accepted as a signature.
- Tamper-evident — a SHA-256 fingerprint of the exact agreement text you saw is stored with your signature. If the agreement is ever changed, the fingerprints stop matching, both parties are told a new signature is required, and reseller pricing pauses until the current version is signed.
- A complete audit trail on every signature: signer name, account, email, UTC timestamp, IP address, browser, agreement version, document fingerprint and the linked consent record. Records are never edited — a change is always a new record on top of the old one.
- Owner countersignature — the agreement is only in force once the owner signs it, under the same typed-name-and-intent standard, and that countersignature carries its own full audit trail.
- Reseller pricing starts at countersignature, not before. Signing and applying grant nothing: until the owner countersigns, orders are charged at normal public pricing, and the reseller page, the signing page and the cart all say so.
- Download or print your executed copy at any time from your account — a single self-contained file containing the execution record, the audit trail and the agreement as executed. A free paper copy is available on request.
- Admins can retrieve any signature with its full audit trail and download the same executed copy.
Accounts
- Registration & login — first-party accounts (no third-party OAuth), email verification.
- Password reset — self-service forgot/reset, plus forced password change when required.
- Business profile — first and last name, company, job title, phone, and website, editable by the customer.
- My account — dashboard, order history, and the shipping addresses used on past orders.
- Keychain registration (Bearly Afloat, Phase 1) — a signed-in customer can register a BearlyAfloat Key Chain to their account using the unit's own claim code, for lost-and-found return.
- Caps-Lock warning on every password field sitewide — storefront login, registration, reset-password, forced-change, and profile, plus (admin-only) the Settings secret fields and the new-user / edit-user password fields.
- Session invalidation — blocking an account or changing its password invalidates every live session for that user immediately.
Admin console (admin-only)
- Dashboard — revenue, orders, and activity at a glance.
- Orders — searchable, paginated list; order detail with status management, refunds, and shipment recording.
- Payments ledger — an append-only, hash-chained record of every payment event, with the Stripe event id retained for reconciliation.
- Coupons — create, edit, and deactivate promotional codes.
- Subscribers — newsletter list with CSV export.
- Products, Brands, and Categories — full catalog management.
- Trade Shows — the owner's working book for shows worked in person, in three parts:
- Inventory & sales — every product and variant in one table. Log what is being taken before the show, what sold during it, and the difference comes home. Quantity cells have ± buttons, Enter and the arrow keys walk down a column, and the totals recompute on every keystroke.
- Financials — gross sales, line and show discounts, sales tax split back out of the tax-inclusive show price, cost of goods sold, gross and net margin, travel by either the standard mileage rate or actual gas (never both), card processing fees, break-even units, sell-through, average order value, and revenue per hour and per day. Sales tax collected is tracked against tax remitted so the outstanding liability is always visible. Itemized detail rows for meals, hotels, gas receipts, mileage log entries, and sales-tax remittances, each with its own receipt/photo attachments (stored the same way as product media — content-addressed, outside the public directory).
- Price sheet and Materials — a price sheet generated live from the catalog showing each show price split into item and tax, plus the booth signs, product sales sheets, package inserts and reseller material, all reachable from the tab and served admin-only.
- Cross-show Reports — a filterable P&L across every show worked (by date range, year, or state), with expense-category rollups, sales-tax breakdown, and units-sold-by-product.
- Packing list — a per-show page listing what to bring, generated from the show's planned inventory.
- Media upload — pick product photos straight off the operator's machine; files are stored content-addressed, outside the public directory, and served immediately without a restart. Uploading the same photo twice collapses to one file and one URL.
- Users — view and manage customer accounts, profiles, and access.
- Leads — a lightweight CRM for prospective customers and resellers met in person or via the contact form: name, contact details, source (trade show, contact form, referral, etc.), tags, notes, and business-card/attachment uploads. The contact form and trade-show detail page can create a Lead directly.
- Potential Resellers — a Lead-filtered view surfacing prospects tagged as reseller candidates, separate from the signed-agreement reseller queue above — this is the pre-application triage step.
- Sales Tax — a report and CSV export of Texas sales tax collected over a date range, itemized by order, for Comptroller filing.
- Messages — contact-form submissions with per-message detail.
- Analytics — Dashboard, Audience, Acquisition, Behavior, Performance, Health, Errors, Real-time, and AI Usage views, built on first-party pageview data.
- Settings — encrypted, admin-only configuration of Stripe, email, AI, shipping, and channel credentials, store-identity fields (name, tagline, contact email) that flow into outgoing email from-name/footer and site JSON-LD/metadata, with built-in Stripe and email test buttons.
- Features — this document, searchable in the admin console and published read-only at
/features(linked from the site footer). - Product restore — an archived product can be returned to active status through an admin-only unarchive endpoint, with the action recorded in the activity log. Site-owned products are also protected from being archived by an external channel delisting (the attempt is refused and logged).
- Activity log — searchable, capped audit trail of orders, payments, registrations, uploads, and admin actions (customer-facing outbound emails are tracked separately in the admin Email log).
- Email log — searchable, admin-only audit trail of every customer-facing order email the store sends (receipts, shipped notices, and the high-importance internal alert to orders@), with delivery status, subject, addresses, and per-message rendered body preview in a sandboxed CSP-locked iframe.
- AI Listing Assistant — generates product copy from a brief, with an admin-selectable provider and model and per-request token and cost accounting.
- Warden — IP ban management — view active IP bans, manually ban/unban an IP, and manage auto-ban rules, backed by the shared Warden daemon; protected ranges (localhost, private, Cloudflare, admin) are rejected.
Legal & compliance
- Terms of Service, Privacy Policy, Shipping Policy, and a detailed Legal & Compliance page covering product classification, lawful use, and state restrictions.
- Every order requires accepting the Terms of Service, enforced on the server rather than by the checkout page, so an order cannot be placed without it. The acceptance is stored on the order itself with the moment it happened, the exact version of the terms in force, and a fingerprint of that document — and the order is refused if the fingerprint does not match the terms the buyer was actually shown. The record travels with the payment, so months later it is still possible to say precisely which terms a given buyer agreed to.
- Compliance facts live on the product record, separate from marketing copy, so a description edit can never quietly change a compliance statement.
- State-based sales restrictions enforced at checkout by the shipping address, with a fail-closed server-side gate behind the UI.
Sales channels & integrations
- Emporania sales-channel integration — inbound API for listing publication, revision, inventory, and order sync, with drift detection and image diffing.
- Warden — shared IP-ban daemon integration for abuse control.
Platform & security
- Transactional email (verification, order confirmation, password reset, contact) through a provider-agnostic mailer supporting SMTP, Mailgun, and Mailjet; an unconfigured mailer logs instead of crashing the flow it was called from.
- Newsletter signup in the footer and on brand pages.
- Contact form with topic selection, routed to the admin Messages inbox.
- Rate limiting on registration, login recovery, email verification, contact, and newsletter endpoints.
- reCAPTCHA v2 (checkbox) bot mitigation — server-side verification wired to registration, password recovery, contact, newsletter, and keychain claim submissions; fail-open when a site key is not configured, silent (anti-enumeration-preserving) drop when a token verification fails.
- Health endpoint reporting database reachability and latency.
- Security — encrypted secret storage, credentials entered in the admin GUI rather than kept on the server, hashed passwords (PBKDF2-HMAC-SHA256), secure session cookies, edge-enforced role-gated admin, and HTTPS-only outbound links.