MyUDC / MiUDC

https://miudc.netlify.app
2 stars 0 forks source link

refactor: breaking changes on dir structure #34

Closed Branyoe closed 1 month ago

Branyoe commented 1 month ago

Guía de Estructura Híbrida para el Proyecto

  1. Visión General

Nuestro proyecto utiliza una estructura híbrida que combina el App Router de Next.js con una organización basada en características. Esta estructura nos permite mantener la claridad del enrutamiento de Next.js mientras organizamos nuestro código de manera modular y escalable.

  1. Estructura de Carpetas Principal
/src
  /app
  /features
  /shared
  /lib
  auth.config.ts
  1. Desglose y Reglas

3.1. Directorio /app

Este directorio sigue la estructura del App Router de Next.js.

Reglas:

Ejemplo:

/app
  /(auth)
    /home
      page.tsx
    /user
      /interests
        page.tsx
      layout.tsx
      page.tsx
    layout.tsx
  /(public)
    /sign-in
      page.tsx
    /sign-up
      /career
        page.tsx
      /profile-type
        page.tsx
      /register
        page.tsx
    layout.tsx
  globals.css
  layout.tsx
  page.tsx

3.2. Directorio /features

Agrupa la lógica relacionada con características específicas de la aplicación.

Reglas:

Ejemplo:

/features
  /auth
    /components
      SignInForm.tsx
      SignOutButton.tsx
    /actions
      signIn.ts
      signOut.ts
      signUp.ts
    /types
      AuthTypes.ts
  /user
    /components
      UserAvatar.tsx
      UserOption.tsx
    /data
      userOptions.ts
      interests.ts
    /types
      UserTypes.ts

3.3. Directorio /shared

Contiene componentes, utilidades y acciones utilizadas en toda la aplicación.

Reglas:

Ejemplo:

/shared
  /components
    /ui
      Button.tsx
      Input.tsx
      Select.tsx
    ImageForm.tsx
    InterestCard.tsx
    /Skeletons
      SkeletonImage.tsx
      SkeletonText.tsx
  /utils
    sleep.ts
  /actions
    uploadImage.ts

3.4. Directorio /lib

Para servicios y configuraciones de bibliotecas externas.

Ejemplo:

/lib
  prisma.ts
  1. Ejemplos de Uso

4.1. Creación de una nueva página autenticada

Para crear una nueva página de perfil de usuario:

  1. Crear el directorio y archivo:

    /app/(auth)/profile/page.tsx
  2. Implementar la página usando componentes del directorio features:

    import { UserProfile } from '@/features/user/components/UserProfile';
    
    export default function ProfilePage() {
     return <UserProfile />;
    }

4.2. Añadir una nueva característica

Para añadir una característica de "publicaciones":

  1. Crear la estructura en /features:

    /features/posts
     /components
       PostList.tsx
       PostItem.tsx
     /actions
       createPost.ts
       deletePost.ts
     /types
       PostTypes.ts
  2. Usar en una página:

    // app/(auth)/posts/page.tsx
    import { PostList } from '@/features/posts/components/PostList';
    import { createPost } from '@/features/posts/actions/createPost';
    
    export default function PostsPage() {
     return (
       <div>
         <h1>Posts</h1>
         <PostList />
         {/* Formulario que usa createPost */}
       </div>
     );
    }

4.3. Utilizar componentes compartidos

import { Button } from '@/shared/components/ui/Button';
import { uploadImage } from '@/shared/actions/uploadImage';

export function ImageUploader() {
  // Implementación usando Button y uploadImage
}
  1. Mejores Prácticas
  1. Resolución de Problemas Comunes

@LUISPINTO90

netlify[bot] commented 1 month ago

Deploy Preview for miudc ready!

Name Link
Latest commit f237a1e287c4266255a0895855a4a790c8804a84
Latest deploy log https://app.netlify.com/sites/miudc/deploys/66ae9a14ef1c930008724e60
Deploy Preview https://deploy-preview-34--miudc.netlify.app
Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.