|
1 | | -# Proyecto Frontend - UpSkill Courses Website |
| 1 | +# UpSkill Frontend |
2 | 2 |
|
3 | | -## 1. Introducción |
| 3 | +## Table of Contents |
4 | 4 |
|
5 | | -Este espacio contiene todo el código fuente de la interfaz de usuario. El objetivo de este documento es establecer un marco de trabajo claro y organizado que nos permita colaborar de manera eficiente, mantener la calidad del código y agilizar el proceso de desarrollo. A medida que avance el proyecto se añadirán secciones para suplir los requisitos solicitados. |
| 5 | +- [English](#english) |
| 6 | +- [Español](#español) |
| 7 | +- [Documentation](#documentation) |
| 8 | +- [Project Structure](#project-structure) |
6 | 9 |
|
7 | 10 | --- |
8 | 11 |
|
9 | | -## 2. Organización y Flujo de Trabajo (Git Workflow) |
| 12 | +<a name="english"></a> |
10 | 13 |
|
11 | | -Para mantener el orden y la estabilidad del código, utilizaremos un flujo de trabajo basado en ramas. Este sistema asegura que la rama principal (`main`) siempre contenga una versión estable y lista para producción, mientras que el desarrollo se realiza de forma aislada y segura. |
| 14 | +--- |
12 | 15 |
|
13 | | -### Ramas Principales |
| 16 | +## English |
14 | 17 |
|
15 | | -Existen dos ramas principales: |
| 18 | +### Prerequisites |
16 | 19 |
|
17 | | -- `main`: Esta rama es el reflejo fiel del código en **producción**. Nadie debe hacer `push` directamente a esta rama. El código solo llega a `main` a través de Pull Requests desde la rama `develop`, una vez que una versión ha sido probada y está lista para ser lanzada. |
18 | | -- `develop`: Esta es nuestra rama de **integración y desarrollo**. Es la rama principal de trabajo. Todas las nuevas funcionalidades y correcciones se fusionan aquí. Sirve como la base para el trabajo diario y siempre debe contener los últimos cambios aprobados. **Esta es la rama por defecto del repositorio.** |
| 20 | +- Node.js (v18 or higher) |
| 21 | +- pnpm (v10.9.0 or higher) |
| 22 | +- Backend API running on http://localhost:3000 |
19 | 23 |
|
20 | | -### Flujo de Trabajo Básico |
| 24 | +### Environment Setup |
21 | 25 |
|
22 | | -El ciclo de vida de cualquier cambio en el código es el siguiente: |
| 26 | +1. Clone the repository: |
23 | 27 |
|
24 | | -1. **Sincronizar:** Antes de empezar cualquier tarea, asegúrate de tener la última versión de la rama `develop`. |
25 | | - ```bash |
26 | | - git checkout develop |
27 | | - git pull origin develop |
28 | | - ``` |
29 | | -2. **Crear Rama de Soporte:** Crea una nueva rama a partir de `develop` siguiendo la nomenclatura especificada más abajo. |
30 | | -3. **Desarrollar:** Realiza tus cambios, haciendo commits pequeños y descriptivos. |
31 | | -4. **Publicar (`Push`):** Sube tu rama a GitHub. |
32 | | - ```bash |
33 | | - git push -u origin nombre-de-tu-rama |
34 | | - ``` |
35 | | -5. **Pull Request (PR) Automático:** Al hacer `push`, una GitHub Action creará automáticamente un Pull Request dirigido a `develop`. |
36 | | -6. **Revisión de Código:** El resto del equipo revisará el código, dejará comentarios y finalmente lo aprobará. Se requiere al menos **una aprobación** para poder continuar. En general, la Pull Request no deberia ser aprobada por la misma persona que la solicito. |
37 | | -7. **Fusión (`Merge`):** Una vez aprobado, el PR se fusiona en `develop`. Tu trabajo ya es parte de la línea principal de desarrollo. |
| 28 | +```bash |
| 29 | +git clone https://github.com/upskill-team/Front-End-DSW.git |
| 30 | +cd Front-End-DSW |
| 31 | +``` |
38 | 32 |
|
39 | | ---- |
| 33 | +2. Install dependencies: |
| 34 | + |
| 35 | +```bash |
| 36 | +pnpm install |
| 37 | +``` |
| 38 | + |
| 39 | +3. Create a .env file in the root directory with the following variables: |
| 40 | + |
| 41 | +```env |
| 42 | +VITE_API_BASE_URL=http://localhost:3000/api |
| 43 | +``` |
40 | 44 |
|
41 | | -## 3. Nomenclatura de Ramas de Soporte |
| 45 | +### Running the Development Server |
42 | 46 |
|
43 | | -Para mantener un historial claro y legible, es **obligatorio** nombrar las ramas de soporte utilizando los siguientes prefijos. Esto, además, es necesario para que la automatización de Pull Requests funcione correctamente. |
| 47 | +**Development mode:** |
44 | 48 |
|
45 | | -| Prefijo de Rama | Propósito | Ejemplo | ¿Cuándo crearla? | |
46 | | -| ----------------------------------- | ------------------------------------------------------------------------------------ | -------------------------------- | -------------------------------------------------------------------------------------------- | |
47 | | -| **`feature/`** | Para desarrollar una **nueva funcionalidad** o una nueva sección del proyecto. | `feature/login-form` | Al iniciar el desarrollo de una nueva característica que no existe en la aplicación. | |
48 | | -| **`bugfix/`** | Para corregir un **error (bug)** que existe en la rama `develop`. | `bugfix/header-alignment-mobile` | Cuando se ha identificado un error en el código existente que necesita ser solucionado. | |
49 | | -| **`hotfix/`** _(Raro - No auto PR)_ | Para corregir un **error crítico en `main` (producción)**. **Se crea desde `main`.** | `hotfix/critical-payment-error` | **SOLO** cuando hay un bug urgente en producción que no puede esperar al próximo ciclo. | |
50 | | -| **`refactor/`** _(Opc.)_ | Para mejorar código existente sin añadir nueva funcionalidad ni corregir un bug. | `refactor/optimize-api-calls` | Cuando se va a reestructurar una parte del código para mejorar su rendimiento o legibilidad. | |
| 49 | +```bash |
| 50 | +pnpm dev |
| 51 | +``` |
| 52 | + |
| 53 | +The application will be available at http://localhost:5173 |
| 54 | + |
| 55 | +**Build for production:** |
| 56 | + |
| 57 | +```bash |
| 58 | +pnpm build |
| 59 | +pnpm preview |
| 60 | +``` |
| 61 | + |
| 62 | +### Running Tests |
| 63 | + |
| 64 | +**Unit and integration tests:** |
| 65 | + |
| 66 | +```bash |
| 67 | +pnpm test |
| 68 | +``` |
| 69 | + |
| 70 | +**E2E tests with Cypress:** |
| 71 | + |
| 72 | +```bash |
| 73 | +pnpm cypress:open |
| 74 | +``` |
| 75 | + |
| 76 | +**Test coverage:** |
| 77 | + |
| 78 | +```bash |
| 79 | +pnpm test:coverage |
| 80 | +``` |
| 81 | + |
| 82 | +### Available Scripts |
| 83 | + |
| 84 | +- pnpm dev - Start development server with hot reload |
| 85 | +- pnpm build - Build application for production |
| 86 | +- pnpm preview - Preview production build locally |
| 87 | +- pnpm lint - Run ESLint |
| 88 | +- pnpm test - Run unit and integration tests |
| 89 | +- pnpm test:coverage - Run tests with coverage report |
| 90 | +- pnpm cypress:open - Open Cypress test runner |
| 91 | +- pnpm cypress:run - Run Cypress tests in headless mode |
51 | 92 |
|
52 | 93 | --- |
53 | 94 |
|
54 | | -## 4. Guía Rápida de Comandos |
| 95 | +<a name="español"></a> |
| 96 | + |
| 97 | +## Español |
| 98 | + |
| 99 | +### Requisitos Previos |
| 100 | + |
| 101 | +- Node.js (v18 o superior) |
| 102 | +- pnpm (v10.9.0 o superior) |
| 103 | +- Backend API ejecutándose en http://localhost:3000 |
| 104 | + |
| 105 | +### Configuración del Entorno |
| 106 | + |
| 107 | +1. Clonar el repositorio: |
| 108 | + |
| 109 | +```bash |
| 110 | +git clone https://github.com/upskill-team/Front-End-DSW.git |
| 111 | +cd Front-End-DSW |
| 112 | +``` |
| 113 | + |
| 114 | +2. Instalar dependencias: |
| 115 | + |
| 116 | +```bash |
| 117 | +pnpm install |
| 118 | +``` |
| 119 | + |
| 120 | +3. Crear un archivo .env en el directorio raíz con las siguientes variables: |
| 121 | + |
| 122 | +```env |
| 123 | +VITE_API_BASE_URL=http://localhost:3000/api |
| 124 | +``` |
| 125 | + |
| 126 | +### Ejecutar el Servidor de Desarrollo |
| 127 | + |
| 128 | +**Modo desarrollo:** |
55 | 129 |
|
56 | 130 | ```bash |
57 | | -# 1. Asegurarse de estar en develop y tener la última versión |
58 | | -git checkout develop |
59 | | -git pull |
| 131 | +pnpm dev |
| 132 | +``` |
| 133 | + |
| 134 | +La aplicación estará disponible en http://localhost:5173 |
| 135 | + |
| 136 | +**Compilación para producción:** |
| 137 | + |
| 138 | +```bash |
| 139 | +pnpm build |
| 140 | +pnpm preview |
| 141 | +``` |
| 142 | + |
| 143 | +### Ejecutar las Pruebas |
| 144 | + |
| 145 | +**Pruebas unitarias e integración:** |
60 | 146 |
|
61 | | -# 2. Crear una nueva rama para una nueva funcionalidad |
62 | | -git checkout -b feature/user-profile |
| 147 | +```bash |
| 148 | +pnpm test |
| 149 | +``` |
63 | 150 |
|
64 | | -# 3. Trabajar y hacer commits |
65 | | -# ... (haces cambios en el código) ... |
66 | | -git add . |
67 | | -git commit -m "feat: Add basic structure for user profile page" |
| 151 | +**Pruebas E2E con Cypress:** |
68 | 152 |
|
69 | | -# 4. Subir la rama a GitHub (esto creará el PR automáticamente) |
70 | | -git push -u origin feature/user-profile |
| 153 | +```bash |
| 154 | +pnpm cypress:open |
| 155 | +``` |
| 156 | + |
| 157 | +**Cobertura de pruebas:** |
| 158 | + |
| 159 | +```bash |
| 160 | +pnpm test:coverage |
| 161 | +``` |
| 162 | + |
| 163 | +### Scripts Disponibles |
| 164 | + |
| 165 | +- pnpm dev - Iniciar servidor de desarrollo con recarga automática |
| 166 | +- pnpm build - Compilar aplicación para producción |
| 167 | +- pnpm preview - Vista previa de la compilación de producción |
| 168 | +- pnpm lint - Ejecutar ESLint |
| 169 | +- pnpm test - Ejecutar pruebas unitarias e integración |
| 170 | +- pnpm test:coverage - Ejecutar pruebas con reporte de cobertura |
| 171 | +- pnpm cypress:open - Abrir ejecutor de pruebas Cypress |
| 172 | +- pnpm cypress:run - Ejecutar pruebas Cypress en modo headless |
| 173 | + |
| 174 | + |
| 175 | +--- |
| 176 | + |
| 177 | +## Documentation |
| 178 | + |
| 179 | +If you want to see the updated documentation you can go to https://upskill-team.github.io/Front-End-DSW/?path=/docs/configure-your-project--docs |
| 180 | + |
| 181 | +Si deseas ver la documentación actualizada puedes ir a https://upskill-team.github.io/Front-End-DSW/?path=/docs/configure-your-project--docs |
| 182 | + |
| 183 | +--- |
| 184 | + |
| 185 | +## Project Structure |
| 186 | + |
| 187 | +``` |
| 188 | +Front-End-DSW/ |
| 189 | + src/ |
| 190 | + components/ # Componentes React reutilizables |
| 191 | + common/ # Componentes compartidos |
| 192 | + landing/ # Componentes de página de inicio |
| 193 | + layouts/ # Componentes de estructura |
| 194 | + professor/ # Componentes para profesores |
| 195 | + student/ # Componentes para estudiantes |
| 196 | + admin/ # Componentes para administradores |
| 197 | + ui/ # Componentes UI base |
| 198 | + pages/ # Páginas de la aplicación |
| 199 | + contexts/ # Contextos de React |
| 200 | + hooks/ # Hooks personalizados |
| 201 | + api/ # Servicios y cliente API |
| 202 | + services/ # Servicios específicos de cada dominio |
| 203 | + lib/ # Utilidades y funciones auxiliares |
| 204 | + types/ # Definiciones de tipos TypeScript |
| 205 | + router/ # Configuración de rutas |
| 206 | + App.tsx # Componente principal |
| 207 | + main.tsx # Punto de entrada |
| 208 | + cypress/ # Pruebas E2E |
| 209 | + public/ # Archivos estáticos |
| 210 | + index.html # HTML principal |
| 211 | + vite.config.ts # Configuración de Vite |
| 212 | + tsconfig.json # Configuración de TypeScript |
| 213 | + tailwind.config.js # Configuración de Tailwind CSS |
| 214 | + cypress.config.ts # Configuración de Cypress |
71 | 215 | ``` |
0 commit comments