My personal projects
Here are a few personal projects I've worked on over the years. More on GitHub .
An AI-powered news briefing platform, live in production.
Ingests RSS/Atom sources, selects the relevant articles per topic, and generates concise multilingual audio briefs
Delivered through the web and a Telegram bot
Scheduler and RabbitMQ workers for fetching, LLM-based selection and summarization, text-to-speech, and delivery
Audio stored on S3-compatible storage
Full-stack TypeScript monorepo: TanStack Start server functions as the single HTTP entry point, PostgreSQL with Drizzle, Redis for sessions and rate limiting
Deployed with Docker Compose, with Prometheus metrics and Grafana dashboards covering request latency, pipeline job status, and daily LLM token cost
- TypeScript
- Node.js
- React
- TanStack Start
- PostgreSQL
- Drizzle
- Redis
- RabbitMQ
- S3
- Garage
- Docker
- OpenAI
- Telegram
- Prometheus
- Grafana
A document processing platform built around a queued OCR workflow.
Converts PDFs into structured downloadable outputs
Upload validation, authenticated user flows, progress tracking, and page-by-page processing
Single TanStack Start server owning the whole server layer: server functions and route handlers call the business services in memory, with no separate API process
End-to-end type safety from the database to the UI
Live process tracking streamed to the browser over SSE
Page-by-page markdown refinement with an OpenAI vision model through TanStack AI
Full-stack TypeScript monorepo with background workers, object storage, and containerized infrastructure
- TypeScript
- Node.js
- React
- TanStack Start
- PostgreSQL
- Drizzle
- Redis
- RabbitMQ
- S3
- Garage
- Docker
- Tesseract.js
- OpenAI
A component to schedule meetings more efficiently.
A component to help users find the best time for meetings by selecting their availability.
Published on npm and reaching 200-300 weekly downloads
Supports integration with React and Vue
Documentation made with VitePress
Tested with Vitest and Testing Library
- TypeScript
- React
- Vue.js
- VitePress
- Vitest
- Testing Library
A collaborative URL shortener platform for teams.
Authentication, team workspaces, role-based access, and invitation flows
Dedicated redirect service and event-driven architecture using RabbitMQ workers for email delivery and analytics aggregation
Full-stack monorepo with containerized infrastructure and observability dashboards
API and redirector documented with OpenAPI
- TypeScript
- Node.js
- React
- Hono
- PostgreSQL
- Redis
- RabbitMQ
- Docker
- Grafana
A full-stack manga reader application.
Manga listing, chapter and page browsing, and manga import scripts
NestJS + Fastify REST API with JWT authentication and protected pages
Reading resume and read-chapter tracking
PWA, responsive design for mobile and desktop, and dark mode support
Page storage on a shared, self-hosted Garage (S3-compatible) instance and Prometheus metrics endpoint
pnpm monorepo with a shared Prisma database package
- TypeScript
- Node.js
- NestJS
- Vue.js
- Tailwind
- Prisma
- PostgreSQL
- S3
- Garage
- Prometheus
- Docker
My personal website showcasing my projects and blog posts.
- TypeScript
- Vue.js
- Nuxt
- Tailwind
A TypeScript library for correcting spelling mistakes.
A Vue.js component for multi-select dropdowns.
A Vue.js component for multi-select dropdowns.
Supports single multi-select modes, Grouped options, Searchable options.
Customizable styles and templates.
A web app to track macronutrient intake and calories.
Track daily intake of proteins, carbohydrates, and fats
Calculate total calories based on macronutrient intake
Add, edit, and delete food items with their nutritional information
User authentication and data persistence with MongoDB
- Node.js
- JavaScript
- Express
- Vue.js
- MongoDB