A web application inspired by the webtoon/anime "Solo Leveling", designed to gamify your daily home workouts. Complete quests, raise your stats, avoid penalties, unlock skills, and compete in the global hunter rankings.
Built with Nuxt 3, Tailwind CSS, and Firebase / Firestore.
- Randomized Quests: Every day, the system selects 4 random workouts from a pool of 28 unique home exercises.
- Rank-based Scaling: The target reps or duration scale dynamically based on your current Hunter Rank (from E-Rank at 1.0x up to S-Rank at 5.0x).
- Realistic Rewards: Rewards (EXP and Gold) are randomized per quest to keep progression engaging and dynamic.
- Exercise Unit Separation: The app handles exercises tracked by counts (reps) and time (seconds) with intuitive user guides.
- Midnight Countdown: A real-time timer counts down to local midnight (00:00).
- EXP Deduction: If you fail to complete all 4 quests before midnight, the system triggers a penalty.
- Randomized Penalty: Between 25% and 80% of your total EXP is lost (you will not level down below your current level, base capped at 0 EXP).
- Penalty Screen: A red alert overlay forces you to "Accept Defeat" (Akui Kekalahan) to resume your hunter path.
- Workout-to-Stat Progression: Stats (STR, VIT, AGI, PER) grow automatically based on the specific exercises you complete (e.g., Push-ups increase STR, Planks increase VIT).
- Precision Tracking: Stats are stored and displayed up to one decimal place for granular progression.
- Fair Play Mode: Manual stat point allocations and level-up bonus stat points are removed; you only grow by doing the actual work.
- Unlockable Skills: Dynamic Active and Passive skills fetched from Firestore.
- Level Constraints: Skills below your level requirement are locked, greyed out, and display "PERSYARATAN BELUM TERPENUHI".
- Real-time Leaderboard: A Firestore-based global rank leaderboard displaying hunters sorted by EXP.
- Shadow Seeding: Automatic injection of top-tier shadow hunters (like Liu Zhigang, Thomas Andre, etc.) to keep the rankings populated and competitive.
- Personal Highlight: Your card is prominently highlighted with a "YOU" badge showing your relative standing.
- Frontend Framework: Nuxt 3 (Vue 3)
- Styling: Tailwind CSS
- Database & Authentication: Firebase & Firestore
- Charts & Analytics: Chart.js
- Package Manager:
pnpm
Make sure you have Node.js (v18+) and pnpm installed.
Create a .env file in the root directory and add your Firebase credentials:
NUXT_PUBLIC_FIREBASE_API_KEY=your_api_key
NUXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_auth_domain
NUXT_PUBLIC_FIREBASE_PROJECT_ID=your_project_id
NUXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your_storage_bucket
NUXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_messaging_sender_id
NUXT_PUBLIC_FIREBASE_APP_ID=your_app_idpnpm installStart the development server on http://localhost:3000:
pnpm devGenerate the production bundle:
pnpm build
# or static generate
pnpm generateleveling-system/
├── assets/ # Global stylesheets and assets
├── components/ # Reusable Vue components (QuestCard, BottomNavBar, TopAppBar)
├── composables/ # Core state manager (useHunterState.js)
├── layouts/ # Page layouts
├── middleware/ # Auth guarding middleware
├── pages/ # Main app pages (Status, Login, Quests, Rank, Skills)
├── plugins/ # Firebase initialization client plugin
├── utils/ # Quest pools and helper utilities
├── .gitignore # Git exclusion rules
└── .antigravityignore # Agent search exclusion rules
This project is private and for personal workout gamification purposes.