https://github.com/emmanuel-cruz-dev/ecommerce-fullstack
E-commerce desarrollado como proyecto del curso de Programación Fullstack de Academia ForIT. Implementa arquitectura limpia, TDD y un monorepo con dominio separado.
https://github.com/emmanuel-cruz-dev/ecommerce-fullstack
axios bcrypt clean-architecture dotenv expressjs jsonwebtoken nodejs react storybook tailwindcss tanstack-react-query tdd typescript vite vitest
Last synced: 8 months ago
JSON representation
E-commerce desarrollado como proyecto del curso de Programación Fullstack de Academia ForIT. Implementa arquitectura limpia, TDD y un monorepo con dominio separado.
- Host: GitHub
- URL: https://github.com/emmanuel-cruz-dev/ecommerce-fullstack
- Owner: emmanuel-cruz-dev
- Created: 2025-07-21T18:31:59.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2025-08-19T18:26:17.000Z (10 months ago)
- Last Synced: 2025-08-19T20:34:21.735Z (10 months ago)
- Topics: axios, bcrypt, clean-architecture, dotenv, expressjs, jsonwebtoken, nodejs, react, storybook, tailwindcss, tanstack-react-query, tdd, typescript, vite, vitest
- Language: TypeScript
- Homepage:
- Size: 367 KB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 🛒 E-commerce Fullstack - Proyecto Academia ForIT
[](https://opensource.org/licenses/MIT)

Este proyecto es la culminación de un curso de Programación Fullstack en la **Academia ForIT**, desarrollado como un e-commerce completo. Implementado como un monorepo, el proyecto sigue principios de **Arquitectura Limpia** y un enfoque de **Desarrollo Guiado por Pruebas (TDD)**.
---
## 🧑💻 Cómo ejecutar el proyecto
### 1. Instalar dependencias
```sh
npm install
cd apps/backend && npm install
cd apps/frontend && npm install
cd domain && npm install
```
### 2. Ejecutar tests (TDD)
#### Dominio
```sh
cd domain
npx vitest
```
#### Backend
```sh
cd apps/backend
npx vitest
```
### 3. Levantar el backend
```sh
cd apps/backend
npm run dev
```
### 4. Levantar el frontend
```sh
cd apps/frontend
npm run dev
```
---
## 🧪 Testing
- Los tests unitarios de la lógica de negocio están en `domain/src/use-cases/*.spec.ts`.
- El backend también incluye tests en `apps/backend/src/**/*.spec.ts`.
- Se usa Vitest para pruebas y cobertura.
- Para TDD, primero escribe los tests en los casos de uso antes de implementar la lógica.
---
## 🚀 Características principales
- **Autenticación de usuarios** (Registro/Login con JWT)
- **Roles y permisos** (Admin/User)
- **CRUD de productos** (Solo para admins)
- **Carrito de compras**
- **API REST** con Express
- **Frontend** con React
- **Testing** con Vitest
---
## 🏗️ Estructura del proyecto (Monorepo)
```
📦 proyecto
├── 📁 apps/
│ ├── 📁 backend/
│ │ ├── 📁 src/
│ │ │ ├── 📁 controllers/
│ │ │ ├── 📁 data/
│ │ │ ├── 📁 database/
│ │ │ ├── 📁 errors/
│ │ │ ├── 📁 middlewares/
│ │ │ ├── 📁 routes/
│ │ │ ├── 📁 services/
│ │ │ ├── 📁 types/
│ │ │ └── 📄 app.ts
│ │ ├── 🔒 package-lock.json
│ │ ├── 📋 package.json
│ │ ├── 📄 tsconfig.json
│ │ └── ⚡ vitest.config.ts
│ └── 📁 frontend/
│ ├── 📁 .storybook/
│ ├── 📁 public/
│ ├── 📁 src/
│ │ ├── 📁 assets/
│ │ ├── 📁 components/
│ │ ├── 📁 context/
│ │ ├── 📁 hooks/
│ │ ├── 📁 layouts/
│ │ ├── 📁 pages/
│ │ ├── 📁 services/
│ │ ├── 📁 types/
│ │ ├── ⚛️ App.tsx
│ │ ├── 🎨 index.css
│ │ ├── ⚛️ main.tsx
│ │ └── 📄 vite-env.d.ts
│ ├── 🚫 .gitignore
│ ├── ⚙️ eslint.config.js
│ ├── 🌐 index.html
│ ├── 🔒 package-lock.json
│ ├── 📋 package.json
│ ├── ⚙️ postcss.config.js
│ ├── 📖 README.md
│ ├── 🎨 tailwind.config.js
│ ├── 📄 tsconfig.app.json
│ ├── 📄 tsconfig.json
│ ├── 📄 tsconfig.node.json
│ ├── ⚡ vite.config.ts
│ └── ⚡ vitest.shims.d.ts
└── 📁 domain/
├── 📁 src/
│ ├── 📁 entities/
│ ├── 📁 infrastructure/
│ ├── 📁 mocks/
│ ├── 📁 ports/
│ ├── 📁 repositories/
│ ├── 📁 use-cases/
│ ├── 🔒 package-lock.json
│ └── 📋 package.json
├── 🚫 .gitignore
├── 🔒 package-lock.json
├── 📋 package.json
├── 📖 README.md
└── ⚡ vitest.config.ts
```
---
## 🏛️ Arquitectura
Dominio: Entidades, casos de uso y lógica de negocio desacoplada.
Backend: Implementa la API REST y conecta con el dominio.
Frontend: SPA en React que consume la API.
Arquitectura limpia: Separación clara entre capas, dependencias invertidas.
---
## 🔧 Tecnologías clave
| Área | Tecnologías |
| ------------ | --------------------------------------------- |
| Backend | Node.js, Express, TypeScript, JWT |
| Dominio | Arquitectura limpia, TDD |
| Frontend | React, TypeScript, TailwindCSS (Próximamente) |
| Herramientas | Git, GitHub, Postman, Vitest (Testing) |
---
## 📜 **Licencia**
Proyecto educativo para **Academia ForIT 2025**