Hola, soy Victor Grajales
Desarrollador Backend de Colombia, especializado en crear soluciones web robustas y eficientes con Node.js.
Sobre Mí
Con más de 3 años de experiencia, he dedicado mi carrera a construir y optimizar el motor que impulsa las aplicaciones web. Mi viaje en la programación comenzó a los 18 años y desde entonces, mi pasión ha sido transformar ideas complejas en software funcional y escalable.
Soy Tecnólogo en Desarrollo de Software del SENA y he fortalecido mis habilidades con formación continua en NestJS, Next.JS y arquitecturas de software modernas. Actualmente, colaboro en proyectos como desarrollador freelance.
Experiencia Laboral
Mi trayectoria profesional en el desarrollo de software, especializada en soluciones logísticas y sistemas empresariales.
Proyectos Recientes
Mi Stack Tecnológico
Con un fuerte enfoque en el desarrollo Backend, estas son las tecnologías con las que construyo soluciones robustas y eficientes.
Servicios Backend
Especializado en arquitecturas robustas y servicios escalables que impulsan aplicaciones de alto rendimiento.
Ejemplos de Código
Muestra de mi estilo de programación y patrones de diseño que implemento en mis proyectos.
API REST con NestJS
TypeScript@Controller('users')
export class UsersController {
constructor(private usersService: UsersService) {}
@Get()
@UseGuards(JwtAuthGuard)
async findAll(): Promise<User[]> {
return this.usersService.findAll();
}
@Post()
@UseGuards(JwtAuthGuard)
@UsePipes(new ValidationPipe())
async create(@Body() createUserDto: CreateUserDto): Promise<User> {
return this.usersService.create(createUserDto);
}
@Get(':id')
@UseGuards(JwtAuthGuard)
async findOne(@Param('id') id: string): Promise<User> {
return this.usersService.findOne(+id);
}
}
Servicio de Autenticación
Node.jsclass AuthService {
async validateUser(email: string, password: string): Promise<any> {
const user = await this.usersService.findByEmail(email);
if (user && await bcrypt.compare(password, user.password)) {
const { password, ...result } = user;
return result;
}
return null;
}
async login(user: any) {
const payload = { email: user.email, sub: user.id };
return {
access_token: this.jwtService.sign(payload),
user: {
id: user.id,
email: user.email,
role: user.role
}
};
}
}
Middleware de Rate Limiting
Express.jsconst rateLimit = require('express-rate-limit');
const limiter = rateLimit({
windowMs: 15 * 60 * 1000, // 15 minutos
max: 100, // máximo 100 requests por ventana
message: {
error: 'Demasiadas peticiones desde esta IP'
},
standardHeaders: true,
legacyHeaders: false,
});
app.use('/api/', limiter);
Métricas de Rendimiento
Estadísticas de mis proyectos y tecnologías más utilizadas.
¿Listo para empezar?
Estoy abierto a nuevas oportunidades y colaboraciones. Si tienes un proyecto en mente o crees que podemos construir algo increíble juntos, ¡hablemos!
Envíame un correo