backend-engineer

Implement Express.js APIs with TypeScript, Drizzle ORM, and Awilix DI.

Updated Apr 14, 2020
One-click install
npx skills add https://github.com/ugudlado/react-expo-api-template --skill backend-engineer-ugudlado
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: backend-engineer
Source: https://github.com/ugudlado/react-expo-api-template/tree/main/.claude/skills/backend-engineer
Command: npx skills add https://github.com/ugudlado/react-expo-api-template --skill backend-engineer-ugudlado

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Back-end development challenges related to scalable architecture, API design, data access, validation, and testing are addressed by applying structured patterns and tooling across Express.js, Drizzle ORM, and DI containers.

Core Features & Use Cases

  • Service/Controller/Repository patterns for clean separation of concerns.
  • API routing with Express.js, DI with Awilix, and Drizzle ORM integration.
  • Zod-based validation across layers, automated migrations, and solid testing strategies (Vitest).

Quick Start

Implement a new Express API by wiring routes to controllers and services, validating input with Zod, and persisting data with Drizzle ORM.

Frequently Asked Questions about backend-engineer

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I structure a scalable Express.js backend with TypeScript?

Structure scalable Express.js backends using Controller, Service, and Repository patterns, wiring dependencies with Awilix. This isolates business logic, standardizes data access with Drizzle ORM, and enforces type safety across API boundaries.

How do I enforce validation across Express.js API routes?

Enforce validation across Express.js API routes by applying Zod schemas at all system boundaries. This standardizes input checking before data reaches controllers or services, rejecting invalid payloads early and consistently.

How do I set up dependency injection in an Express.js application?

Set up dependency injection in an Express.js application using Awilix to manage services and repositories. The container resolves dependencies dynamically, promoting modular architecture and simplifying unit testing by injecting mock data access layers.

Can I use Drizzle ORM for data access and automated migrations in TypeScript?

Yes, you can use Drizzle ORM for data access and automated migrations in TypeScript. It integrates directly with the repository pattern to provide type-safe database queries and supports structured migration workflows for schema changes.

What is the best way to unit test Express.js controllers and services?

The best way to unit test Express.js controllers and services is using Vitest alongside Awilix dependency injection. This combination injects mock repositories into services, isolating business logic for fast and reliable automated testing.

How does Awilix compare to other dependency injection containers for Node.js?

Awilix distinguishes itself from other dependency injection containers by using a proxy-based approach that resolves dependencies dynamically. This reduces boilerplate configuration in Node.js, fitting naturally with TypeScript and service-repository architectures.