Welcome to the a-jackie-z organization! We are building a comprehensive suite of TypeScript microservice tools and utilities designed to streamline backend development with a focus on type safety, developer experience, and production readiness.
Our mission is to provide robust, well-documented, and easy-to-use TypeScript packages that solve common challenges in microservice architectures. We believe in:
- Type Safety First: Leveraging TypeScript and Zod for compile-time and runtime type safety
- Developer Experience: Clear APIs, comprehensive documentation, and minimal boilerplate
- Production Ready: Battle-tested patterns with reliability, observability, and scalability built-in
- Microservice Architecture: Tools designed for distributed systems and service-oriented architectures
Type-safe configuration management for microservices
A configuration factory that loads and validates environment variables using Zod schemas with automatic type coercion. Perfect for managing service configuration across different environments with full TypeScript support.
Key Features:
- 🔒 Type-safe configuration with Zod validation
- 🔄 Automatic type coercion (strings → numbers, booleans)
- 📝 Default values and optional fields
- ✅ Helpful validation error messages
Quick Example:
import { z } from 'zod'
import { createConfig } from '@a_jackie_z/config'
const config = createConfig(
z.object({
port: z.number().int().positive(),
apiKey: z.string().min(1),
}),
{ port: 'APP_PORT', apiKey: 'API_KEY' }
)Fast and lightweight logging for microservices
A Pino-based logger wrapper optimized for microservice environments with environment-based configuration and production-ready JSON output.
Key Features:
- ⚡ Built on Pino (one of the fastest Node.js loggers)
- 🎨 Optional pretty-printing for development
- 🔧 Environment-based configuration
- 📊 Structured JSON logging for production
Production-ready Fastify with batteries included
A comprehensive Fastify setup with built-in JWT authentication, rate limiting, Swagger documentation, and Zod validation. Designed for building secure, scalable APIs with minimal configuration.
Key Features:
- 🔐 Dynamic multi-token JWT authentication with key rotation
- 🛡️ Built-in rate limiting and security
- 📚 Auto-generated Swagger documentation
- ✅ Zod schema validation for requests/responses
- 🎯 Standardized response formatting
- 🚀 Multiple token types with per-type configuration
Quick Example:
import { createFastify, runFastify } from '@a_jackie_z/fastify'
const app = await createFastify({
jwt: {
secrets: { v1: 'secret-key' },
defaultKeyId: 'v1',
tokenTypes: {
access: { headerName: 'authorization', expiresIn: '15m' }
}
},
swagger: { title: 'My API', version: '1.0.0' }
})
await runFastify(app, '0.0.0.0', 3000)TypeORM wrapper with enhanced utilities
Simplified TypeORM setup with environment-based configuration, automatic snake_case naming, and migration management. Get connected to your database in seconds.
Key Features:
- 🔧 Environment variable configuration
- 🐍 Automatic snake_case naming strategy
- 🔄 Automatic migration execution on startup
- 🗃️ Support for PostgreSQL, MySQL, MariaDB, SQLite
- 💾 Production-ready defaults
Quick Example:
import { createOrm } from '@a_jackie_z/typeorm'
const dataSource = createOrm()
await dataSource.initialize()
// ✓ Connected!Robust event bus with RabbitMQ
A TypeScript-first RabbitMQ wrapper supporting both point-to-point (queue-based) and broadcast (fanout exchange) messaging patterns with automatic reconnection and reliable delivery.
Key Features:
- 📨 Point-to-point and broadcast messaging
- 🔄 Automatic reconnection with state monitoring
- 💪 Durable queues and persistent messages
- ⚖️ Fair load distribution across consumers
- 🎯 Type-safe event handlers
- 📊 Connection state monitoring
Quick Example:
import { EventBusProducer, EventBusConsumer } from '@a_jackie_z/event-bus'
// Producer
const producer = new EventBusProducer({ rabbitMqUrl: 'amqp://...' })
await producer.connect()
await producer.publish('orders', { orderId: 1, status: 'pending' })
// Consumer
const consumer = new EventBusConsumer({
rabbitMqUrl: 'amqp://...',
queueHandlers: new Map([['orders', [orderHandler]]])
})
await consumer.connect()Our packages are built with modern technologies and best practices:
- Language: TypeScript for type safety and better developer experience
- Runtime: Node.js for server-side JavaScript execution
- Validation: Zod for runtime type validation and schema definition
- Web Framework: Fastify for high-performance HTTP servers
- ORM: TypeORM for database management with multiple database support
- Message Queue: RabbitMQ for reliable message delivery
- Logging: Pino for fast, structured logging
- Testing: Modern testing practices with TypeScript support
Our packages are designed with microservice architecture in mind:
- Loose Coupling: Each package solves a specific problem and can be used independently
- Configuration-driven: Environment variables and type-safe config for different deployment environments
- Observability: Built-in logging and monitoring support
- Resilience: Automatic reconnection, graceful shutdown, and error handling
- Scalability: Horizontal scaling support with load balancing and fair distribution
- Developer Experience: Comprehensive documentation, examples, and TypeScript support
Each package is published to npm and can be installed independently:
npm install @a_jackie_z/config
npm install @a_jackie_z/logger
npm install @a_jackie_z/fastify
npm install @a_jackie_z/typeorm
npm install @a_jackie_z/event-busVisit individual repositories for detailed documentation, examples, and API references.
Each package includes:
- ✅ Comprehensive README with quick start guide
- ✅ API reference documentation
- ✅ Real-world usage examples
- ✅ Best practices and performance tips
- ✅ TypeScript type definitions
We welcome contributions! Each repository follows standard open-source practices:
- Open issues for bugs or feature requests
- Submit pull requests with clear descriptions
- Follow TypeScript and code style conventions
- Add tests for new features
All packages are released under the MIT License, making them free to use in both personal and commercial projects.
Sang Lu
- Email: connect.with.sang@gmail.com
- Organization: a-jackie-z
Built with ❤️ using TypeScript for the microservices ecosystem