-
Notifications
You must be signed in to change notification settings - Fork 0
Development and Deployment
Koneko edited this page Jul 29, 2026
·
1 revision
This guide provides technical instructions for local environment setup, project structure navigation, build pipelines, Oxlint static analysis, and Cloudflare Pages deployment.
- Node.js: v18.0.0 or higher
- npm: v9.0.0 or higher
- Git: v2.30.0 or higher
Create a .env file in the root directory if connecting to a custom Supabase instance:
VITE_SUPABASE_URL=https://your-supabase-project-id.supabase.co
VITE_SUPABASE_ANON_KEY=your-supabase-anon-keyIf these environment variables are omitted, Tamed automatically runs in Offline Demo Mode using local browser storage (mockBackend.js).
# 1. Clone & Install Dependencies
git clone https://github.com/NottKoneko/Tamed.git
cd Tamed
npm install
# 2. Run Local Development Server (Vite 6)
npm run dev
# 3. Build Production Bundle (Outputs to dist/)
npm run build
# 4. Preview Production Build Locally
npm run preview
# 5. Run Oxlint Static Analysis
npm run lintPetOwner Site/
βββ .github/workflows/ # GitHub Actions & CI Workflows (e.g. CodeQL)
βββ public/ # Static web assets (favicon, logo, icons)
βββ scripts/ # Utility scripts (e.g., pad_icons.ps1)
βββ src/
β βββ assets/ # Web assets and icons
β βββ components/ # Reusable UI components
β β βββ BottomNav.jsx # Navigation bar
β β βββ Calendar.jsx # Interactive status calendar
β β βββ ConfirmationModal.jsx # Generic modal dialog
β β βββ MascotAvatar.jsx # Animated pet species mascot
β β βββ PinModal.jsx # 4-digit security PIN modal
β β βββ PraiseCardModal.jsx # Praise card popover
β β βββ QuickSwitchBanner.jsx # Fast role switcher
β β βββ RemindersSection.jsx # Check-in nudges
β β βββ Toast.jsx # Notification toasts
β β βββ XPProgressBar.jsx # Level progress bar
β βββ pages/ # Top-level page views
β β βββ AuthScreen.jsx # Supabase sign-up / sign-in
β β βββ DashboardOwner.jsx # Owner schedule view
β β βββ DashboardPet.jsx # Pet schedule view
β β βββ Home.jsx # Main habit dashboard
β β βββ Onboarding.jsx # Initial profile setup
β β βββ Requests.jsx # Redemption requests
β β βββ Rewards.jsx # Store catalog & redemptions
β β βββ Settings.jsx # Profile & app configuration
β βββ services/ # Data layer interfaces
β β βββ mockBackend.js # Offline demo mode mock engine
β β βββ supabaseClient.js # Supabase client & API wrapper
β βββ store/ # State management
β β βββ useAppStore.js # Zustand 5 application store
β βββ utils/ # Core utility modules
β βββ audio.js # Web Audio API sound synthesizer
β βββ confetti.js # Canvas particle confetti
β βββ cryptoUtils.js # Web Crypto API random generator
β βββ currency.js # Currency formatting
β βββ dateUtils.js # Local date formatting
β βββ notifications.js # Browser native notifications
β βββ rateLimiter.js # Sliding window rate limiter
β βββ sanitizer.js # XSS text sanitizer
β βββ theme.js # Dynamic CSS token theme engine
β βββ xpUtils.js # Leveling & XP math functions
βββ supabase-schema.sql # Full PostgreSQL schema, RPCs & RLS policies
βββ vite.config.js # Vite 6 configuration file
Tamed is optimized for single-command static site hosting on Cloudflare Pages:
-
Build Command:
npm run build -
Build Output Directory:
dist -
Environment Variables: Set
VITE_SUPABASE_URLandVITE_SUPABASE_ANON_KEYin Cloudflare Pages dashboard settings. -
Live URL:
https://tamed.pages.dev/
Wiki Aided w/ AI cuz I can't be fkd