App full-stack para guardar secretos de forma segura, con autenticación, CRUD completo, filtros y paginación.
- 🔐 Autenticación con email/contraseña y Google OAuth
- 📝 CRUD completo de secretos
- 🏷️ Tipos de secreto: Normal, Medio, Hard 🔥
- ⭐ Marcar secretos como favoritos
- 🔍 Búsqueda en tiempo real
- 🎛️ Filtros por tipo y favoritos
- 📅 Ordenar por fecha
- 📄 Paginación
- 📱 Mobile first
- 🍞 Notificaciones con Toastify
| Tecnología | Uso |
|---|---|
| Next.js 15 | Framework full-stack |
| Better Auth | Autenticación |
| Prisma 6 | ORM |
| Neon | PostgreSQL serverless |
| Zustand | Estado global |
| Zod | Validaciones |
| React Hook Form | Formularios |
| Tailwind CSS | Estilos |
| React Toastify | Notificaciones |
git clone https://github.com/tu-usuario/secrets-app.git
cd secrets-appnpm installCrea un archivo .env en la raíz del proyecto:
# Database (Neon PostgreSQL)
DATABASE_URL="postgresql://user:password@ep-xxx.neon.tech/neondb?sslmode=require"
# Better Auth
BETTER_AUTH_SECRET="tu-secret-aqui"
BETTER_AUTH_URL="http://localhost:3000"
NEXT_PUBLIC_BETTER_AUTH_URL="http://localhost:3000"
# Google OAuth
GOOGLE_CLIENT_ID="tu-client-id"
GOOGLE_CLIENT_SECRET="tu-client-secret"npx prisma generate
npx prisma db pushnpm run devAbre http://localhost:3000 en tu navegador.
src/
├── app/
│ ├── (auth)/
│ │ ├── login/
│ │ └── register/
│ ├── (dashboard)/
│ │ ├── dashboard/
│ │ └── secrets/
│ └── api/
│ ├── auth/
│ └── secrets/
├── components/
│ └── secrets/
│ ├── SecretCard.tsx
│ ├── SecretFilters.tsx
│ └── SecretForm.tsx
├── hooks/
│ └── useSecrets.ts
├── lib/
│ ├── auth.ts
│ ├── auth-client.ts
│ ├── prisma.ts
│ └── validations/
│ ├── auth.ts
│ └── secret.ts
├── store/
│ ├── useAuthStore.ts
│ └── useSecretsStore.ts
└── types/
└── index.ts
- Importa el repositorio en Vercel
- Agrega las variables de entorno con tu URL de producción
- Agrega la URL de producción en Google Cloud Console como redirect URI autorizado:
https://tu-app.vercel.app/api/auth/callback/google
DATABASE_URL=tu-neon-url
BETTER_AUTH_SECRET=tu-secret
BETTER_AUTH_URL=https://tu-app.vercel.app
NEXT_PUBLIC_BETTER_AUTH_URL=https://tu-app.vercel.app
GOOGLE_CLIENT_ID=tu-client-id
GOOGLE_CLIENT_SECRET=tu-client-secretPróximamente...
MIT