All projects
krealalejo/hearthstone
Shared home dashboard for household management. Tasks, inventory, shopping list, and history with real-time persistence and secure multi-user auth
gsapjose-jwtmongodbnuxt4piniavitestvue3vuetify
heartshtone
Shared home dashboard for household management — tasks, inventory, shopping list, and history — with real-time persistence and secure multi-user auth.
Stack: Nuxt 4, Vue 3, Vuetify 4, Pinia, GSAP 3, MongoDB (Mongoose 9), JWT (jose), Zod, Resend, i18n (en/es/ca), TypeScript, Vitest, Capacitor (Android)
Prerequisites
- Node.js 22+
- pnpm 11+
- MongoDB instance (local or Atlas)
Quick Start
- Clone repo and install deps
pnpm install - Copy env file and fill values
cp .env.example .env - Start dev server
pnpm dev - Open
http://localhost:3000
Commands
| Action | Command |
|---|---|
| Dev server | pnpm dev |
| Production build | pnpm build |
| Preview build | pnpm preview |
| Static generate | pnpm generate |
| Type check | pnpm typecheck |
| Run tests | pnpm test |
| Tests (watch) | pnpm test:watch |
| Tests (UI) | pnpm test:ui |
| Tests (coverage) | pnpm test:coverage |
| Android sync | pnpm android:sync |
| Android open | pnpm android:open |
| Android run | pnpm android:run |
Pages
| Path | Description | Access |
|---|---|---|
/ |
Home redirect | Public → redirects to /dashboard or /auth |
/auth |
Login / register with Google OAuth | Public only |
/reset-password |
Password reset (token-gated) | Public only |
/dashboard |
Task board with leaderboard | Protected |
/inventory |
Household inventory management | Protected |
/shopping |
Shopping list with auto-restock flow | Protected |
/history |
Checkout / restock history log | Protected |
/history/purchases |
Per-item purchase breakdown | Protected |
/history/weeks |
Week-over-week spending summary | Protected |
/household |
Household settings and member management | Protected |
API Endpoints
| Method | Path | Description | Auth |
|---|---|---|---|
POST |
/api/auth/register |
Create account, return JWT cookie | No |
POST |
/api/auth/login |
Validate credentials, return JWT cookie | No |
POST |
/api/auth/logout |
Clear JWT cookie | No |
GET |
/api/auth/me |
Current user from JWT | Yes |
POST |
/api/auth/refresh |
Refresh JWT token | Yes |
GET |
/api/auth/google |
Initiate Google OAuth flow | No |
GET |
/api/auth/google/callback |
Google OAuth callback, set JWT cookie | No |
POST |
/api/auth/forgot-password |
Send password reset email via Resend | No |
POST |
/api/auth/reset-password |
Consume reset token, update password | No |
GET/POST/PATCH/DELETE |
` |