Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details. Front-end with obsession. Design down to the pixel. Angular React TypeScript. Always sweating the details.
Ian Gabriel Agujitas, front-end developer and designer in Davao, Philippines
Build
Design
Motion
always sweating the details
(Scroll)
About Ian
Turning a "love for the craft" into products that hold up.
I’m Ian, a front-end developer who sweats the details, for a bit over two years now. I’ve worked with startups and a Philippine government agency, helping them ship products that hold up in the real world. I design what I build and I build what I design: from Figma to framework, nothing gets lost in translation. This pure love for the craft is how an SMS platform reached the App Store, an ASCII engine reached npm, and a government data platform reached the people it serves.
years shipping
products live
npm packages
Service
Design-led front-end, built by one pair of hands
Front-end & Motion
Ian's core strength is interface code that survives production: Angular and React platforms, Ionic apps shipped to the App Store, and motion built on GSAP and the Web Animations API that earns its place instead of decorating.
Design
Every project starts in Figma under the same hands that will build it. Design systems, typography, and art direction stay intact from first sketch to deployed interface, because nothing is handed off.
AI Systems
Beyond interfaces, Ian wires language models into real products: call summaries and insights through OpenAI and Gemini, and self-hosted open-source LLMs when the data must never leave the building.
Research & Design
figma first, always
Front-end Build
the same hands write the code
Ship & Iterate
app store · npm · production
Selected work
2024-26
TurboDial
Shipped an SMS & voice automation platform to the App Store.
Two years leading front-end on a Twilio-powered platform: the Angular web app, the Ionic iOS app published to the App Store, and LLM call summaries running on OpenAI, Gemini, and self-hosted models.
Read the case study →
2025-26
Asciify
Released an ASCII art engine on npm, plus asciify.org.
A zero-dependency canvas engine that turns images, video, and GIFs into living character art. 13+ styles, chroma key, webcam input, and a community showcase.
Read the case study →
2026
ngx-digit-flow
Open-sourced slot-machine digit animations for Angular.
Odometer-style number reels on the Web Animations API. Signals-first, SSR-safe, automatic reduced-motion handling, zero animation libraries.
Read the case study →
2023
NEDA XI GIS
Built a socio-economic GIS platform for a PH government agency.
React and Material UI over interactive maps: regional indicators, time series, and geography in one navigable place for analysts and officials.
Read the case study →