My Software Projects
A collection of projects I’ve built and contributed to throughout my software engineering journey.
A collection of projects I’ve built and contributed to throughout my software engineering journey.
Overview A full-featured URL Shortener API built with enterprise-grade architecture. The service generates short, unique aliases for long URLs and handles redirections with minimal latency. Designed to handle high read-to-write ratios (100:1) with support for multiple user types (Guest, User, Admin), click analytics, and automatic link expiration. Tech Stack TypeScript & Node.js 20+ - Type-safe backend development NestJS - Progressive Node.js framework with dependency injection PostgreSQL - Relational data storage for users and authentication AWS DynamoDB - Distributed, scalable storage for short links with single-table design TypeORM - Database migrations and entity management JWT (RS256) - Secure authentication with cookie-based tokens Docker & Docker Compose - Containerized development environment CircleCI - CI/CD pipeline with parallel test execution Serverless Framework - AWS Lambda deployment support nanoid - Collision-resistant unique ID generation Key Features URL Shortening - Generate 10-character short codes with collision handling URL Redirection - HTTP 302 redirect with click tracking Link Lifecycle Management - Activate, deactivate, and extend expiry Automatic Expiration - DynamoDB TTL for automatic cleanup Role-Based Access Control - Hierarchical permissions (Admin > User > Guest) API Versioning - URI-based versioning for backward compatibility Swagger Documentation - Auto-generated OpenAPI docs Cursor Pagination - Efficient Base64-encoded pagination Challenges & Solutions Dual Database Strategy: Needed different characteristics for different data types. Used PostgreSQL for relational user data requiring strong consistency, and DynamoDB for URL storage needing high scalability. This hybrid approach optimizes performance for different access patterns. ...
Overview A production-grade Library Management System built with Domain-Driven Design (DDD), Clean Architecture, and Hexagonal Architecture principles. This RESTful API demonstrates enterprise-level Java development practices with a focus on maintainability, testability, and scalability. The system handles book catalog management, user/member management, borrowing operations, and includes comprehensive authentication and authorization features. Tech Stack Java 17 with Spring Boot 3.3.3 PostgreSQL 15 with Flyway for database migrations Spring Security 6 with JWT (JJWT 0.12.6) for authentication Spring Data JPA with Hibernate 6 Lombok for boilerplate reduction TestContainers for integration testing GitHub Actions for CI/CD JaCoCo for code coverage (50% minimum threshold) Key Features Book Management: Full CRUD operations with ISBN validation (ISBN-10/13 formats), availability tracking, and copy management User Management: Role-based system with ADMIN, USER, and GUEST roles, each with different borrowing limits and durations Borrowing System: Complete borrowing workflow including book checkout, returns, due date extensions, overdue tracking, and automatic penalty calculation ($1/day) JWT Authentication: Secure HTTP-only cookie-based authentication with role-based access control Security Features: CSRF protection, XSS filtering with Content Security Policy headers, BCrypt password encryption Clean Architecture: Clear separation between Domain, Application, Infrastructure, and Interface layers with 18 single-responsibility use cases Challenges & Solutions Challenge 1: Maintaining Clean Architecture Boundaries Implementing true Clean Architecture required strict discipline in keeping domain logic free from framework dependencies. Solution: Created separate JPA entities in the infrastructure layer with mappers to convert between domain and persistence models, ensuring the domain layer remains pure. ...
Overview Quick OTP is a lightweight Chrome extension for managing and generating Time-based One-Time Passwords (TOTP) directly in the browser. It replaces or supplements mobile authenticator apps like Google Authenticator or Authy, providing quick access to 2FA codes without reaching for your phone. Tech Stack React 19 - UI framework with hooks for state management TypeScript - Type-safe development Vite with @crxjs/vite-plugin - Fast builds and Chrome extension support otpauth - TOTP generation (RFC 6238 compliant) jsQR - QR code scanning React Bootstrap - UI components Chrome Storage API - Local data persistence Key Features OTP Management - Add, edit, delete, and search TOTP entries Multiple QR Scanning Methods - File upload, screen capture, and clipboard paste Real-time Countdown - Visual progress bar with color-coded time indicators One-click Copy - Copy codes to clipboard with visual feedback Import/Export - Backup and restore OTP items as JSON Dark Mode Support - Automatic theme detection Challenges & Solutions QR Code Parsing: Implemented multiple scanning methods (file, screen capture, clipboard) using jsQR library and parsing otpauth:// URIs to extract provider, account, and secret. ...