html re-write
Welcome to 3dvr.tech
This is the Code Repository for our main 3dvr.tech website known as our home-page.
If you want to view or edit the code for the 3dvr.tech website, you are in the right place.
We recently re-designed to pure html, css, and java-scritpt. We were using React but found it a bit too complex and fragile for our needs.
Check it out for yourself at https://3dvr.tech
Keep 3dvr-web and 3dvr-portal on the same branch matrix so subscription links and billing routes stay consistent.
| Branch | Web domain | Portal domain | Billing mode |
|---|---|---|---|
main |
https://3dvr.tech |
https://portal.3dvr.tech |
Live Stripe |
staging |
https://staging.3dvr.tech |
https://portal-staging.3dvr.tech |
Live Stripe behind Vercel auth |
feature/* |
Vercel preview URL | Vercel preview URL | Stripe test mode |
- Use PR previews for test-mode signup, checkout, and plan-switch QA.
- Use
stagingto verify real existing subscribers before merging to production. - Do not treat a Stripe test preview as evidence about live subscribers. Test mode cannot see live customers.
- After each new
stagingdeploy, runnpm run vercel:alias-stagingfrom3dvr-portalsohttps://staging.3dvr.techandhttps://portal-staging.3dvr.techstay attached to the current staging previews. - A healthy protected staging domain returns
401from Vercel auth.404 DEPLOYMENT_NOT_FOUNDmeans the staging alias is broken.
subscribe/portal-links.js decides where billing links should go. The resolution order is:
?portalOrigin=https://...data-portal-originon<html>ormeta[name="3dvr:portal-origin"]- Known host pairings in
subscribe/portal-links.jsfor staging domains and preview-to-preview mappings - Production fallback:
https://portal.3dvr.tech
Operational rules:
mainweb pages should point tohttps://portal.3dvr.tech.stagingweb pages should point tohttps://portal-staging.3dvr.tech.feature/*previews should point to the matching portal preview, either throughportalOriginor the preview host map.- Never let preview billing links fall back to production when the target plan or billing route only exists in preview.
- If Stripe is in test mode, make sure the paired portal preview also uses Stripe test price ids instead of live
price_...values.
npm run test:e2eruns Playwright in Debianprootso browser automation stays out of native Termux.npm run playwright:installinstalls the Firefox browser used by the current Playwright setup inside Debian.- The current Playwright coverage checks the full-screen
3dvr-world/route on desktop and mobile viewports. - Playwright covers browser behavior only. Real WebXR or headset validation still needs an actual VR-capable browser or headset session.