Merge pull request #1 from aabril/feat/project_structure

Project structure
This commit is contained in:
2025-07-28 12:30:59 +02:00
committed by GitHub
10 changed files with 6548 additions and 10 deletions

View File

@ -11,8 +11,8 @@
## Changelog ## Changelog
- Inicializamos el projecto, usando npm init, con la node@latest (v24.4.1)
- Inicializamos el proyecto, usando npm init, con la node@latest (v24.4.1)
- Añadimos dependencias que voy a usar
- Creo una estructura de directorio inicial
- Añado un primer test (database.test.ts) para jest

6497
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -17,11 +17,21 @@
"scripts": { "scripts": {
"build": "tsc", "build": "tsc",
"start": "node dist/index.js", "start": "node dist/index.js",
"dev": "ts-node src/index.js" "dev": "tsx watch src/index.ts",
"test": "jest",
"test:watch": "jest --watch",
"lint": "eslint src/**/*.ts",
"lint:fix": "eslint src/**/*.ts --fix"
}, },
"devDependencies": { "devDependencies": {
"@types/jest": "^30.0.0",
"@types/node": "^24.1.0", "@types/node": "^24.1.0",
"ts-node": "^10.9.2", "@typescript-eslint/eslint-plugin": "^8.38.0",
"@typescript-eslint/parser": "^8.38.0",
"eslint": "^9.32.0",
"jest": "^30.0.5",
"ts-jest": "^29.4.0",
"tsx": "^4.20.3",
"typescript": "^5.8.3" "typescript": "^5.8.3"
} }
} }

View File

@ -0,0 +1,6 @@
// test temporal para probar que jest funciona
describe('DatabaseConnection', () => {
describe('Singleton Pattern', () => {
test('should return the same instance', () => {})
})
})

17
src/config/database.ts Normal file
View File

@ -0,0 +1,17 @@
// aqui la conexión con MongoDB, usando mongoose o cualquier otro odm que vaya a usar
// las conexión a bases de datos normalmente deberían ser Singleton para reutilizar la conexión
// motivo: pues no saturar la base de datos ni saturarla con multiples conexiones
export class DatabaseConnection {
private static instance: DatabaseConnection;
// private isConnected: boolean = false; // a implementar
private constructor() {}
public static getInstance(): DatabaseConnection {
if (!DatabaseConnection.instance) {
DatabaseConnection.instance = new DatabaseConnection();
}
return DatabaseConnection.instance;
}
}

View File

@ -0,0 +1,6 @@
// Aquí exportamos una classe que gestiona las peticiones y comunica con los servicios/repositorioes
// thinking out loud: creo que voy a usar hono.dev, usaba express hace tiempo, y veo que es una especie de express moderno compatible con express
export class FeedController {
}

5
src/models/Feed.ts Normal file
View File

@ -0,0 +1,5 @@
// Aquí el modelo Feed
// Si usase mongoose, supongo que será diretamente el modelo de mongoose
// Ya veré si uso algun otro ODM

View File

@ -0,0 +1,2 @@
// Aquí el "repositorio" para lidiar con el modelo
// Lo tipico : ( Find , FindById, CreateOne ) etc.

1
src/types/Feed.ts Normal file
View File

@ -0,0 +1 @@
// Aquí exportaré las interfaces que vaya a necesitas: las básicas, dtos, enums, etc.

2
src/utils/logger.ts Normal file
View File

@ -0,0 +1,2 @@
// Aquí "abstraeré" los logs, para evitar el uso de console.log (por seguridad, y por si queremos extraerlo a algun servicio)
// En mi dia usaba winston, llegué a usar pino que era más ligero, supongo que usaré pino, ya veremos.