CleanFrame
์ผ์ฑ The Frame์ฉ ๊ฐ์ธ ํ ํ๋ฉด, ํฌํฌ์ ๋ง์ถค์ ์ํ ์์์
์ฐ๋ฆฌ์ ๊ฐ์ ๋ง์ค์ฝํธ
Nuestra mascota virtual
๋ผ์ดํ์คํ์ผTypeScript ยท JavaScriptGitHub @Antony-potato์จ๋ผ์ธ์ด์์ ๋ฏธํ์ธ
์จ ๋ณด์ จ์ด์? ํ ๋ฒ๋ง ๋๋ฌ ์ฃผ์ธ์. ๋ก๊ทธ์ธ์ ํ์ ์์ด์.
์์ง ๊ฐ์ง๋ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๋ค. GitHub ๋ฆด๋ฆฌ์ค๊ฐ ๋์ค๋ฉด ์ฌ๊ธฐ์ ๋ณด์ ๋๋ค.
๋ก๊ทธ์ธ ์ํ๋ฅผ ํ์ธํ๋ ์ค์ ๋๋ค.
๋๊ธ์ ๋ถ๋ฌ์ค๋ ์ค์ ๋๋ค.
๊ฐ์ธ ๊ณ์ ์ ๊ณต๊ฐ ์ ์ฅ์ ์์ ์๋ GitHub๋ก ๋ก๊ทธ์ธํด ์ด์์๋ฅผ ํ์ธํ๊ณ ์๊ฐ๋ฅผ ์ง์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ๊ด๋ฆฌ์ ์น์ธ์ ํ์ํ์ง ์์ต๋๋ค.
๋ก๊ทธ์ธํ ๋ค ํ์ธ ํ์ผ์ ๋ง๋ค์ด ์ด ์ ์ฅ์์ ๊ธฐ๋ณธ ๋ธ๋์น์ 30๋ถ ์์ ์ปค๋ฐํด ์ฃผ์ธ์. ๋ค๋ฅธ ๋ธ๋์น๋ ํฌํฌ์ ํ์ผ์ ์ธ์ ํ์ง ์์ต๋๋ค. ํ์ผ์ ์ฌ๋ฆฐ ๋ค ์๋์์ ํ์ธํ๋ฉด ๊ด๋ฆฌ์ ์น์ธ ์์ด ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ์๊ฒฉ์ ์ ์งํ๋ ค๋ฉด ํ์ผ์ ๋จ๊ฒจ ๋์ธ์.
๋ก๊ทธ์ธ์ด ํ์ํ๋ฉด ๋ก๊ทธ์ธ ํ๋ฉด์ผ๋ก ์ด๋ํฉ๋๋ค. ๋ก๊ทธ์ธ ํ ์ด๊ณณ์ผ๋ก ๋์์ ์ํ๋ ํ์ธ ๋ฒํผ์ ๋ค์ ๋๋ฌ ์ฃผ์ธ์.
ํ๋ก์ ํธ ํด๋์์ /nomorevibe verify๋ฅผ ์คํํ๋ฉด ์์ ๊ถ์ ํ์ธํ๊ณ ์๊ฐ๋ฅผ ์ง์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
1๋ถ ๋ง์ ํ์ธํ๊ธฐREADME ์ ์ฒด๋ฅผ ๋ถ๋ฌ์ค๋ ์ค์ ๋๋ค. ์๋๋ ์ ์ฅ๋ ๋ฐ์ท์ ๋๋ค.
๐ฐ Pocky โ Mascota Virtual para Dos Una mascota virtual compartida entre dos personas, construida con Next.js PWA + Firebase. Funciona en iPhone (Safari) y Android (APK con Capacitor), sin costo alguno.README ์ ๋ฌธ ๋ณด๊ธฐ โ
Una mascota virtual compartida entre dos personas, construida con Next.js PWA + Firebase. Funciona en iPhone (Safari) y Android (APK con Capacitor), sin costo alguno.
iPhone (PWA Safari) โโโ
โโโโ Firebase Firestore โโโ cron-job.org (cada 15 min)
Android (APK) โโโ (datos) (degrada stats)
pocky-next/
โโโ src/
โ โโโ app/
โ โ โโโ layout.tsx โ PWA meta tags
โ โ โโโ page.tsx โ pรกgina raรญz
โ โ โโโ globals.css โ Tailwind base
โ โ โโโ api/
โ โ โโโ cron/
โ โ โโโ tick/
โ โ โโโ route.ts โ endpoint de degradaciรณn (Vercel lo llama cada hora)
โ โโโ components/
โ โ โโโ PetScreen.tsx โ pantalla principal (HUD + acciones sobre la escena 3D)
โ โ โโโ scene/
โ โ โโโ World.tsx โ Canvas, cรกmara que sigue a Pocky, luces segรบn la hora
โ โ โโโ Island.tsx โ isla generada por cรณdigo (casa, รกrboles, estanque...)
โ โ โโโ Pocky.tsx โ gato hecho de piezas + animaciones + a dรณnde va
โ โ โโโ nav.ts โ puntos de paso por los que camina
โ โโโ store/
โ โ โโโ petStore.ts โ estado global + sync Firebase
โ โโโ lib/
โ โ โโโ firebase.ts โ cliente Firebase
โ โ โโโ petLogic.ts โ lรณgica pura (compartida con cron)
โ โ โโโ timeBackground.ts โ iluminaciรณn segรบn la hora
โ โโโ types/
โ โโโ pet.ts โ tipos TypeScript
โโโ public/
โ โโโ manifest.json โ PWA manifest
โ โโโ icons/ โ รญconos de la app (agregar manualmente)
โ โโโ icon-192.png
โ โโโ icon-512.png
โโโ next.config.ts
โโโ tailwind.config.ts
โโโ postcss.config.mjs
โโโ tsconfig.json
โโโ .env.example โ plantilla de variables de entorno
โโโ .gitignore
npm install
cp .env.example .env.local
Edita .env.local con tus credenciales:
# Cliente (Firebase Web) โ desde console.firebase.google.com
NEXT_PUBLIC_FIREBASE_API_KEY=...
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=...
NEXT_PUBLIC_FIREBASE_PROJECT_ID=...
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=...
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=...
NEXT_PUBLIC_FIREBASE_APP_ID=...
# Servidor (Firebase Admin) โ desde Configuraciรณn > Cuentas de servicio > Generar clave
FIREBASE_PROJECT_ID=...
FIREBASE_CLIENT_EMAIL=...
FIREBASE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----"
# Cron โ cualquier string largo y aleatorio
CRON_SECRET=pon_aqui_algo_largo_y_aleatorio
npm run dev
Pocky</> (Web) โ registrar app โ copiar config a .env.localproject_id, client_email, private_key a .env.localgit init
git add .
git commit -m "first commit"
git remote add origin https://github.com/TU_USUARIO/pocky.git
git push -u origin main
.env.localEl tick lo dispara cron-job.org cada 15 min: GET https://pocky-next.vercel.app/api/cron/tick con la cabecera Authorization: Bearer TU_CRON_SECRET. No uses los crons de vercel.json: el plan Hobby solo permite uno diario.
tudominio.comโฌPocky โ AgregarLa app aparece en tu pantalla de inicio como cualquier otra app.
Prรณximamente โ ver Fase 4 del roadmap
npm install @capacitor/core @capacitor/android
npx cap init
npm run build
npx cap add android
npx cap sync
npx cap open android # abre Android Studio para generar el APK
Prรณximamente โ ver Fase 5 del roadmap
Scriptable lee Firebase directamente y muestra el estado de Pocky en tu pantalla de inicio.
| Fase | Estado | Descripciรณn |
|---|---|---|
| 1 โ Base | โ Lista | Mascota con stats, ASCII art, animaciones, Firebase sync |
| 2 โ Deploy | ๐ | Vercel + tu dominio, cron de degradaciรณn 24/7 |
| 3 โ PWA | ๐ | Instalar en iPhone desde Safari |
| 4 โ APK Android | ๐ | Capacitor โ APK con widget nativo |
| 5 โ Widget iPhone | ๐ | Scriptable lee Firebase |
| 6 โ Notificaciones | ๐ | Firebase Cloud Messaging push 24/7 |
| 7 โ Personalizaciรณn | ๐ | Nombre, especie, accesorios, historial |
| Stat | Baja cuando... | Sube con... |
|---|---|---|
| ๐ Hambre | Con el tiempo (0.8/min) | Alimentar, golosina |
| ๐ Felicidad | Con el tiempo (0.5/min) | Jugar, pasear, golosina |
| ๐ซง Limpieza | Con el tiempo (0.3/min) | Baรฑar |
| โก Energรญa | Jugando, paseando (0.4/min) | Durmiendo |
| โค๏ธ Salud | Si 2+ stats < 20 | Cuidado constante |
cron-job.org llama a /api/cron/tick cada 15 min: aplica la degradaciรณn aunque nadie tenga la app abierta y, si Pocky necesita algo, envรญa una notificaciรณn por FCM (mรกx. una cada 4 h).
| Mood | Condiciรณn |
|---|---|
| ๐ธ Feliz | Promedio stats > 80 |
| ๐ Neutral | Promedio 60โ80 |
| ๐ฅบ Triste | Promedio 30โ60 |
| ๐ค Enfermo | Salud < 30 o promedio < 30 |
| ๐ด Durmiendo | isAsleep = true |
Edita src/lib/petLogic.ts:
export const DEFAULT_PET: PetData = {
name: 'Pocky', // โ cambia el nombre
species: 'bunny', // โ 'bunny' | 'cat' | 'dog' | 'hamster'
...
}
Todo es geometrรญa generada por cรณdigo, sin modelos externos:
src/components/scene/Island.tsx โ listas de posiciones (TREES, BUSHES, PONDS, PATHS...) y una funciรณn por pieza (House, Campfire, Bridge...).src/components/scene/Pocky.tsx โ colores en FUR/LINE/PINK, piezas en el JSX y poses en el useFrame.src/components/scene/nav.ts โ si mueves algo de la isla, ajusta los nodos y comprueba con npm run check.Edita src/lib/petLogic.ts en la funciรณn applyTick:
hunger = clamp(hunger - mins * 0.8); // โ nรบmero mรกs alto = baja mรกs rรกpido
| Variable | Dรณnde se usa | Descripciรณn |
|---|---|---|
NEXT_PUBLIC_FIREBASE_* | Cliente (browser) | Conexiรณn Firebase desde la app |
FIREBASE_PROJECT_ID | Servidor (cron) | Firebase Admin SDK |
FIREBASE_CLIENT_EMAIL | Servidor (cron) | Firebase Admin SDK |
FIREBASE_PRIVATE_KEY | Servidor (cron) | Firebase Admin SDK |
CRON_SECRET | Servidor (cron) | Protege el endpoint /api/cron/tick |
โ ๏ธ Nunca subas
.env.locala git โ ya estรก en.gitignore
Proyecto personal โ hecho con ๐ฐ y mucho amor.