Una implementación robusta y moderna de autenticación en Next.js 15 utilizando Auth.js (anteriormente NextAuth) con almacenamiento en caché de sesiones mediante Upstash Redis.
git clone <url-del-repositorio>
cd <nombre-del-proyecto>
bun install
.env
en la raíz del proyecto:AUTH_SECRET="tu-secreto-seguro"
UPSTASH_REDIS_REST_URL="tu-url-de-upstash"
UPSTASH_REDIS_REST_TOKEN="tu-token-de-upstash"
bun run dev
├── app/
│ ├── api/
│ │ └── auth/
│ │ └── [...nextauth]/
│ ├── libs/
│ │ ├── auth.ts
│ │ ├── credentials.ts
│ │ ├── providers.ts
│ │ ├── redis.ts
│ │ └── types.ts
│ ├── globals.css
│ ├── layout.tsx
│ └── page.tsx
├── public/
├── .env
├── next.config.ts
├── package.json
├── tailwind.config.ts
└── tsconfig.json
Las principales rutas de autenticación del proyecto son:
/signin
- Página de inicio de sesión (app/signin/page.tsx
)/signup
- Página de registro (app/signup/page.tsx
)/profile
- Página de perfil del usuario (app/profile/page.tsx
)/dashboard
- Panel de control (app/dashboard/page.tsx
)/settings
- Configuración de cuenta (app/settings/page.tsx
)/api/auth/[...nextauth]
- Endpoints de Auth.js (app/api/auth/[...nextauth]/route.ts
)/api/auth/signin
- Iniciar sesión/api/auth/signup
- Registrar usuario/api/auth/session
- Obtener sesión actual/api/auth/signout
- Cerrar sesiónTodas las rutas bajo /dashboard/*
y /settings/*
requieren autenticación. El middleware de Auth.js (middleware.ts
) se encarga de proteger estas rutas y redirigir a los usuarios no autenticados.
El estado de autenticación se puede acceder desde cualquier componente usando los hooks de Auth.js
El proyecto utiliza Tailwind CSS con soporte para modo oscuro y claro. Los estilos principales se encuentran en:
app/globals.css
tailwind.config.ts
El proyecto está optimizado para despliegue en Vercel:
bun run build
vercel deploy
npm run dev
: Inicia el servidor de desarrollonpm run build
: Construye la aplicación para producciónnpm run start
: Inicia el servidor de producciónnpm run lint
: Ejecuta el linterLas contribuciones son bienvenidas. Por favor, sigue estos pasos:
git checkout -b feature/AmazingFeature
)git commit -m 'Add some AmazingFeature'
)git push origin feature/AmazingFeature
)Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE
para más detalles.
Tu Nombre - @Play10Never
Link del Proyecto: https://github.com/Lostovayne