MiClonThreads es una plataforma de redes sociales diseñada para facilitar la comunicación y la interacción entre usuarios a través de publicaciones breves y mensajes. Inspirada en la funcionalidad de Threads, esta aplicación permite a los usuarios compartir pensamientos, noticias, y actualizaciones en tiempo real, seguir a otros usuarios, y participar en conversaciones.
-
Registro y Autenticación:
- Los usuarios pueden crear una cuenta mediante un formulario de registro.
- Autenticación segura con correo electrónico y contraseña.
- Opción de iniciar sesión con cuentas sociales (como Google o Facebook).
-
Perfil de Usuario:
- Cada usuario tiene un perfil personal que muestra su información básica, publicaciones, y seguidores.
- Opción de editar la información del perfil y la imagen de perfil.
-
Publicaciones:
- Los usuarios pueden crear, editar y eliminar publicaciones.
- Las publicaciones pueden contener texto y enlaces.
- Se implementa un sistema de reacciones (me gusta, comentarios).
-
Feed de Publicaciones:
- Un feed que muestra las publicaciones de los usuarios a los que el usuario sigue, con la opción de ver publicaciones populares.
- Infinite scrolling para cargar más publicaciones a medida que el usuario se desplaza hacia abajo.
-
Seguimiento de Usuarios:
- Los usuarios pueden buscar y seguir a otros usuarios.
- Notificaciones sobre nuevas publicaciones de usuarios seguidos.
-
Interacciones:
- Los usuarios pueden comentar en publicaciones y ver los comentarios de otros.
- Posibilidad de responder a comentarios específicos.
-
Notificaciones:
- Sistema de notificaciones en tiempo real sobre interacciones (nuevos seguidores, comentarios, etc.).
-
Configuración de Privacidad:
- Los usuarios pueden gestionar la configuración de privacidad de su perfil y publicaciones.
-
Interfaz de Usuario:
- Diseño atractivo y responsivo utilizando Shadcn UI y Tailwind CSS.
- Navegación intuitiva con un menú de acceso rápido.
- Next.js 15
- Node.js 22
- Bun 1.1.0
- Agrega el Eslint de prettier al proyecto
bun add -D eslint-config-prettier
- Configurado el .eslintrc.json
add --dev @trivago/prettier-plugin-sort-imports
- Crea el archivo para la organizacion de los imports en el .prettierrc.json
{
"semi": true,
"singleQuote": false,
"tabWidth": 2,
"trailingComma": "es5",
"importOrder": ["^@/(.*)$", "^[./]"],
"importOrderSeparation": true,
"importOrderSortSpecifiers": true,
"plugins": ["@trivago/prettier-plugin-sort-imports"]
}
- Organizador de clases de Tailwindcss
bun install -D prettier prettier-plugin-tailwindcss
- Configurado el .prettierrc.json
{
"plugins": ["prettier-plugin-tailwindcss"]
}
- No se aceptan cambios en el archivo
.eslintrc.json
o.prettierrc.json
- No se aceptan cambios en el archivo
tailwind.config.ts
- No se aceptan cambios en el archivo
tsconfig.json
- No se aceptan cambios en el archivo
next.config.ts
- No se puede modificar los componentes de Shadcn Ui directamente
- Crear colores como variables globales en el archivo
app/globals.css
- No se usaran archivos de barrels en Next.js
@layer base {
:root {
--background: 0 0% 100%;
}
}
- Se acepta el uso de
@layer
en el archivoapp/globals.css
para crear estilos globales
.NameClass {
@apply bg-red-500;
}
-
Se acepta el uso de
@apply
en el archivoapp/globals.css
para crear estilos globales -
Se usará Kebab Case para nombrar los archivos nombre-de-la-clase.tsx
-
Se Trabajará por Features y Bug Fixes
/mi-clon-threads
├── /public
│ └── (imágenes, fuentes, etc.)
├── /src
│ ├── /components # Componentes de UI
│ │ ├── /common # Componentes reutilizables
│ │ └── /features # Componentes específicos por características
│ │ ├── /posts
│ │ │ ├── post-list.tsx
│ │ │ ├── post-item.tsx
│ │ │ └── post-form.tsx
│ │ ├── /users
│ │ │ ├── user-profile.tsx
│ │ │ └── user-list.tsx
│ │ └── /auth
│ │ ├── login-form.tsx
│ │ └── signup-form.tsx
│ ├── /hooks # Hooks personalizados
│ │ ├── use-posts.ts
│ │ ├── use-users.ts
│ │ └── use-auth.ts
│ ├── /lib # Funciones utilitarias y configuraciones
│ │ ├── api.ts # Interacciones con la API
│ │ └── constants.ts # Constantes de la aplicación
│ ├── /actions # Acciones para manejar lógica de negocio
│ │ ├── post-actions.ts
│ │ ├── user-actions.ts
│ │ └── auth-actions.ts
│ ├── /interfaces # Interfaces de TypeScript
│ │ ├── post.ts
│ │ ├── user.ts
│ │ └── auth.ts
│ ├── /app # Páginas de Next.js
│ │ ├── /api # Rutas API
│ │ ├── index.tsx
│ │ ├── login.tsx
│ │ ├── signup.tsx
│ │ └── /posts
│ │ ├── [id].tsx # Detalle de publicación
│ │ └── index.tsx # Listado de publicaciones
│ ├── /styles # Estilos globales y específicos (Tailwind CSS)
│ │ └── globals.css # Estilos globales de Tailwind
│ ├── /context # Contextos de React
│ ├── /utils # Funciones utilitarias adicionales
│ └── /types # Tipos adicionales si los necesitas
└── package.json
Agregar variables de entorno al archivo .example.env
despues clonarlo en el .env
- Se usa
NEXT_PUBLIC_
para variables globales del frontend
NEXT_PUBLIC_VALUE=""
- Se usa
PRIVATE_
para variables privadas del backend
PRIVATE_VALUE=""
- Se usa
DB_
para variables de base de datos
DB_VALUE=""