[{"data":1,"prerenderedAt":539},["ShallowReactive",2],{"navigation":3,"search":233,"categories-nav":421,"\u002Fexperience\u002Fsmooets-teknologi-outsourcing\u002Fjixie":490,"\u002Fexperience\u002Fsmooets-teknologi-outsourcing\u002Fjixie-surround":534},[4],{"title":5,"path":6,"stem":7,"children":8,"page":26},"Experience","\u002Fexperience","experience",[9,27,84,117,134,163,188],{"title":10,"path":11,"stem":12,"children":13,"page":26},"High School","\u002Fexperience\u002Fhigh-school","experience\u002F1.high-school",[14,18,22],{"title":15,"path":16,"stem":17},"Competition Web Design \"AMIK Developer Day\"","\u002Fexperience\u002Fhigh-school\u002Fcompetition-web-design-amik-developer-day","experience\u002F1.high-school\u002Fcompetition-web-design-amik-developer-day",{"title":19,"path":20,"stem":21},"Competition Web Development Dinamik 14","\u002Fexperience\u002Fhigh-school\u002Fcompetition-web-development-dinamik-14","experience\u002F1.high-school\u002Fcompetition-web-development-dinamik-14",{"title":23,"path":24,"stem":25},"Forum RPL","\u002Fexperience\u002Fhigh-school\u002Fforum-rpl","experience\u002F1.high-school\u002Fforum-rpl",false,{"title":28,"path":29,"stem":30,"children":31,"page":26},"Internship","\u002Fexperience\u002Finternship","experience\u002F2.internship",[32,36,40,44,48,52,56,60,64,68,72,76,80],{"title":33,"path":34,"stem":35},"Eager Loading","\u002Fexperience\u002Finternship\u002Feager-loading","experience\u002F2.internship\u002Feager-loading",{"title":37,"path":38,"stem":39},"Image Compare","\u002Fexperience\u002Finternship\u002Fimage-compare","experience\u002F2.internship\u002Fimage-compare",{"title":41,"path":42,"stem":43},"Invoice Generator","\u002Fexperience\u002Finternship\u002Finvoice-generator","experience\u002F2.internship\u002Finvoice-generator",{"title":45,"path":46,"stem":47},"Kontakk","\u002Fexperience\u002Finternship\u002Fkontakk","experience\u002F2.internship\u002Fkontakk",{"title":49,"path":50,"stem":51},"Organization Chart","\u002Fexperience\u002Finternship\u002Forganization-chart","experience\u002F2.internship\u002Forganization-chart",{"title":53,"path":54,"stem":55},"Postage Calculator","\u002Fexperience\u002Finternship\u002Fpostage-calculator","experience\u002F2.internship\u002Fpostage-calculator",{"title":57,"path":58,"stem":59},"Project Monitoring","\u002Fexperience\u002Finternship\u002Fproject-monitoring","experience\u002F2.internship\u002Fproject-monitoring",{"title":61,"path":62,"stem":63},"Report Generator","\u002Fexperience\u002Finternship\u002Freport-generator","experience\u002F2.internship\u002Freport-generator",{"title":65,"path":66,"stem":67},"Text to Image","\u002Fexperience\u002Finternship\u002Ftext-to-image","experience\u002F2.internship\u002Ftext-to-image",{"title":69,"path":70,"stem":71},"Tracking Report","\u002Fexperience\u002Finternship\u002Ftracking-report","experience\u002F2.internship\u002Ftracking-report",{"title":73,"path":74,"stem":75},"URL to Image","\u002Fexperience\u002Finternship\u002Furl-to-image","experience\u002F2.internship\u002Furl-to-image",{"title":77,"path":78,"stem":79},"Video Call","\u002Fexperience\u002Finternship\u002Fvideo-call","experience\u002F2.internship\u002Fvideo-call",{"title":81,"path":82,"stem":83},"WhatsApp Widget","\u002Fexperience\u002Finternship\u002Fwhatsapp-widget","experience\u002F2.internship\u002Fwhatsapp-widget",{"title":85,"path":86,"stem":87,"children":88,"page":26},"Smooets Teknologi Outsourcing","\u002Fexperience\u002Fsmooets-teknologi-outsourcing","experience\u002F3.smooets-teknologi-outsourcing",[89,93,97,101,105,109,113],{"title":90,"path":91,"stem":92},"BJ Home","\u002Fexperience\u002Fsmooets-teknologi-outsourcing\u002Fbj-home","experience\u002F3.smooets-teknologi-outsourcing\u002Fbj-home",{"title":94,"path":95,"stem":96},"E-Dekidaka","\u002Fexperience\u002Fsmooets-teknologi-outsourcing\u002Fe-dekidaka","experience\u002F3.smooets-teknologi-outsourcing\u002Fe-dekidaka",{"title":98,"path":99,"stem":100},"Jixie","\u002Fexperience\u002Fsmooets-teknologi-outsourcing\u002Fjixie","experience\u002F3.smooets-teknologi-outsourcing\u002Fjixie",{"title":102,"path":103,"stem":104},"Knowledge Catalyst","\u002Fexperience\u002Fsmooets-teknologi-outsourcing\u002Fknowledge-catalyst","experience\u002F3.smooets-teknologi-outsourcing\u002Fknowledge-catalyst",{"title":106,"path":107,"stem":108},"Meratus","\u002Fexperience\u002Fsmooets-teknologi-outsourcing\u002Fmeratus","experience\u002F3.smooets-teknologi-outsourcing\u002Fmeratus",{"title":110,"path":111,"stem":112},"PaDiUMKM","\u002Fexperience\u002Fsmooets-teknologi-outsourcing\u002Fpadiumkm","experience\u002F3.smooets-teknologi-outsourcing\u002Fpadiumkm",{"title":114,"path":115,"stem":116},"Vallée","\u002Fexperience\u002Fsmooets-teknologi-outsourcing\u002Fvallee","experience\u002F3.smooets-teknologi-outsourcing\u002Fvallee",{"title":118,"path":119,"stem":120,"children":121,"page":26},"Fajar Mulia Transindo","\u002Fexperience\u002Ffajar-mulia-transindo","experience\u002F4.fajar-mulia-transindo",[122,126,130],{"title":123,"path":124,"stem":125},"FMT App","\u002Fexperience\u002Ffajar-mulia-transindo\u002Ffmt-app","experience\u002F4.fajar-mulia-transindo\u002Ffmt-app",{"title":127,"path":128,"stem":129},"FMT OpenRemote","\u002Fexperience\u002Ffajar-mulia-transindo\u002Ffmt-openremote","experience\u002F4.fajar-mulia-transindo\u002Ffmt-openremote",{"title":131,"path":132,"stem":133},"PT. NAM Company Profile","\u002Fexperience\u002Ffajar-mulia-transindo\u002Fpt-nam-company-profile","experience\u002F4.fajar-mulia-transindo\u002Fpt-nam-company-profile",{"title":135,"path":136,"stem":137,"children":138,"page":26},"Freelance","\u002Fexperience\u002Ffreelance","experience\u002Ffreelance",[139,143,147,151,155,159],{"title":140,"path":141,"stem":142},"Babeh Finance","\u002Fexperience\u002Ffreelance\u002Fbabeh-finance","experience\u002Ffreelance\u002Fbabeh-finance",{"title":144,"path":145,"stem":146},"BSI Enterprise Risk Management System","\u002Fexperience\u002Ffreelance\u002Fbsi-enterprise-risk-management-system","experience\u002Ffreelance\u002Fbsi-enterprise-risk-management-system",{"title":148,"path":149,"stem":150},"Garment Inventory Management","\u002Fexperience\u002Ffreelance\u002Fgarment-inventory-management","experience\u002Ffreelance\u002Fgarment-inventory-management",{"title":152,"path":153,"stem":154},"MyRepublic Stella","\u002Fexperience\u002Ffreelance\u002Fmyrepublic-stella","experience\u002Ffreelance\u002Fmyrepublic-stella",{"title":156,"path":157,"stem":158},"SIMKUG TK","\u002Fexperience\u002Ffreelance\u002Fsimkug-tk","experience\u002Ffreelance\u002Fsimkug-tk",{"title":160,"path":161,"stem":162},"Yayasan BPI","\u002Fexperience\u002Ffreelance\u002Fyayasan-bpi","experience\u002Ffreelance\u002Fyayasan-bpi",{"title":164,"path":165,"stem":166,"children":167,"page":26},"Open Source","\u002Fexperience\u002Fopen-source","experience\u002Fopen-source",[168,172,176,180,184],{"title":169,"path":170,"stem":171},"Coordinate Manager","\u002Fexperience\u002Fopen-source\u002Fcoordinate-manager","experience\u002Fopen-source\u002Fcoordinate-manager",{"title":173,"path":174,"stem":175},"Lossless Compression","\u002Fexperience\u002Fopen-source\u002Flossless-compression","experience\u002Fopen-source\u002Flossless-compression",{"title":177,"path":178,"stem":179},"Nuxt Ecosystem","\u002Fexperience\u002Fopen-source\u002Fnuxt-ecosystem","experience\u002Fopen-source\u002Fnuxt-ecosystem",{"title":181,"path":182,"stem":183},"SEO Head Parser","\u002Fexperience\u002Fopen-source\u002Fseo-head-parser","experience\u002Fopen-source\u002Fseo-head-parser",{"title":185,"path":186,"stem":187},"Smol WhatsApp","\u002Fexperience\u002Fopen-source\u002Fsmol-whatsapp","experience\u002Fopen-source\u002Fsmol-whatsapp",{"title":189,"path":190,"stem":191,"children":192,"page":26},"Self Taught","\u002Fexperience\u002Fself-taught","experience\u002Fself-taught",[193,197,201,205,209,213,217,221,225,229],{"title":194,"path":195,"stem":196},"AI Sandbox","\u002Fexperience\u002Fself-taught\u002Fai-sandbox","experience\u002Fself-taught\u002Fai-sandbox",{"title":198,"path":199,"stem":200},"Auto Move Bot","\u002Fexperience\u002Fself-taught\u002Fauto-move-bot","experience\u002Fself-taught\u002Fauto-move-bot",{"title":202,"path":203,"stem":204},"Custom Browser Extension","\u002Fexperience\u002Fself-taught\u002Fcustom-browser-extension","experience\u002Fself-taught\u002Fcustom-browser-extension",{"title":206,"path":207,"stem":208},"Discord Music Bot","\u002Fexperience\u002Fself-taught\u002Fdiscord-music-bot","experience\u002Fself-taught\u002Fdiscord-music-bot",{"title":210,"path":211,"stem":212},"From Ubuntu to CachyOS","\u002Fexperience\u002Fself-taught\u002Ffrom-ubuntu-to-cachyos","experience\u002Fself-taught\u002Ffrom-ubuntu-to-cachyos",{"title":214,"path":215,"stem":216},"Generative Models","\u002Fexperience\u002Fself-taught\u002Fgenerative-models","experience\u002Fself-taught\u002Fgenerative-models",{"title":218,"path":219,"stem":220},"Linux Workstation (Bazzite)","\u002Fexperience\u002Fself-taught\u002Flinux-workstation-bazzite","experience\u002Fself-taught\u002Flinux-workstation-bazzite",{"title":222,"path":223,"stem":224},"Local Cron","\u002Fexperience\u002Fself-taught\u002Flocal-cron","experience\u002Fself-taught\u002Flocal-cron",{"title":226,"path":227,"stem":228},"My Portfolio","\u002Fexperience\u002Fself-taught\u002Fmy-portfolio","experience\u002Fself-taught\u002Fmy-portfolio",{"title":230,"path":231,"stem":232},"Simple Image Classification","\u002Fexperience\u002Fself-taught\u002Fsimple-image-classification","experience\u002Fself-taught\u002Fsimple-image-classification",[234,238,241,244,247,250,253,256,259,262,265,268,271,274,277,280,283,286,289,292,295,298,301,304,307,310,313,319,322,325,328,331,334,337,340,343,346,349,352,355,358,361,364,367,372,377,382,387,390,393,398,403,408,412,415,418],{"id":16,"title":15,"titles":235,"content":236,"level":237},[],"A live-code competition with schools in Bandung. And won as 2nd place.",1,{"id":20,"title":19,"titles":239,"content":240,"level":237},[],"A project-based competition web development with national region. Won as 2nd place. A project-based competition web development with national region. Won as 2nd place. This project is a consulting website that focused on students by providing questionnaires to check their mental health and personality test or chat directly to the teacher.",{"id":24,"title":23,"titles":242,"content":243,"level":237},[],"Final exam project about forum that similar to StackOverflow. It has developer mode to access post, article, and company data.",{"id":34,"title":33,"titles":245,"content":246,"level":237},[],"A performance comparison between Eloquent, DB, and raw query.",{"id":38,"title":37,"titles":248,"content":249,"level":237},[],"A simple image-based search engine.",{"id":42,"title":41,"titles":251,"content":252,"level":237},[],"A simple invoice generator.",{"id":46,"title":45,"titles":254,"content":255,"level":237},[],"A link generator that linked to user's social media accounts.",{"id":50,"title":49,"titles":257,"content":258,"level":237},[],"Organization chart generator using Balkan OrgChart library.",{"id":54,"title":53,"titles":260,"content":261,"level":237},[],"A postage calculator using Raja Ongkir API to calculate shipping costs in Indonesia.",{"id":58,"title":57,"titles":263,"content":264,"level":237},[],"A project monitoring with user management, employee, client, skill, role, and public holiday.",{"id":62,"title":61,"titles":266,"content":267,"level":237},[],"A report generator for project management.",{"id":66,"title":65,"titles":269,"content":270,"level":237},[],"Generate multiple texts with random background image.",{"id":70,"title":69,"titles":272,"content":273,"level":237},[],"Track daily report through user's email.",{"id":74,"title":73,"titles":275,"content":276,"level":237},[],"Generate text from UQL query with random background image.",{"id":78,"title":77,"titles":278,"content":279,"level":237},[],"A video call with chat feature.",{"id":82,"title":81,"titles":281,"content":282,"level":237},[],"Generate WhatsApp widget based on user input.",{"id":91,"title":90,"titles":284,"content":285,"level":237},[],"A E-Commerce project similar to IKEA. Responsibilities: Fix major and critical bugs.",{"id":95,"title":94,"titles":287,"content":288,"level":237},[],"Factory management project with complex real-time calculations and a custom timeline chart feature. A factory management project, the complexity lies in precise real-time calculations, designed to display real-time calculation data if available, otherwise presenting pre-generated results. The timeline chart feature is developed entirely from scratch due to its intricate design and functionality tailored to client needs. For instance, the timeline's maximum duration is dynamically determined by the team's shift times, which can vary based on administrative inputs. Additionally, during chart runtime, users can input or scan data to generate reports reflecting activities at specific times. I was involved in implementing the complex timeline chart feature. This required close collaboration with stakeholders to understand their requirements thoroughly and translate them into a functional and intuitive user interface. I was tasked with architecting the real-time calculation engine, ensuring accuracy and efficiency in generating timeline data and reports. Responsibilities: Create a real-time timeline chart.Create an emergency call to users that have a higher role.Auto generate monthly reports based on category module.Create an Active Planned module.Create an Active Unplanned module.Create an Area module.Create a Category module.Create a Timesheet module. Challenges: Precision in Real-Time Calculations: Developing algorithms capable of accurately calculating and updating real-time data, such as timeline charts, requiring meticulous attention to detail and rigorous testing.Custom Timeline Chart Development: Building the timeline chart feature from scratch due to its unique design requirements. Such as accommodating varying shift times and enabling real-time data input.Integration of User Input and Scanning: Incorporating functionalities for users to input or scan data during chart runtime required seamless integration with the timeline interface while ensuring data integrity and system stability.",{"id":99,"title":98,"titles":290,"content":291,"level":237},[],"A ads manager project. Responsibilities: Fix minor and major bugs.Create HOC world chart.",{"id":103,"title":102,"titles":293,"content":294,"level":237},[],"A certificate generator for The Hwa Chong Institution Integrated Programme. A certificate generator. Responsibilities: Create a HOC table that can be used on most pages.Fix the certificate generator in certain cases.Generate certificates that can be verified by The Hwa Chong Institution Integrated Programme.",{"id":107,"title":106,"titles":296,"content":297,"level":237},[],"A legacy booking and tracking system for ships. A legacy booking and tracking system for ships, developed using CodeIgniter framework. My role in this project primarily focused on bug fixing, specifically addressing issues identified in the SonarQube report. Remarkably, the report highlighted over 7000 bugs across various severity levels, including minor, major, and critical. In less than two months, I managed to resolve all reported bugs. I was assigned the responsibility of rectifying the numerous bugs flagged by the SonarQube report in the Meratus project. This involved meticulously analyzing each reported issue, understanding its impact on system functionality, and implementing effective solutions to eliminate them. My efforts were aimed at enhancing the stability, performance, and security of the application by addressing the identified bugs. Responsibilities: Fix minor, major, and critical bugs from SonarQube (7000+ bugs)Create a Booking Dashboard.Create a Cargo Protection.Create a My Palisade. Challenges: Volume of Bugs: Dealing with over 7000 bugs required careful planning and systematic approach to ensure comprehensive coverage.Diverse Severity Levels: The reported bugs encompassed a wide range of severity levels, from minor issues to critical flaws affecting system functionality and security.Legacy Codebase: Working within a legacy CodeIgniter codebase posed additional challenges, including navigating through complex and possibly outdated code structures, limited documentation, and potential dependencies on deprecated libraries or features.",{"id":111,"title":110,"titles":299,"content":300,"level":237},[],"Developed a financing feature that allowed sellers to take loans from specific financial institutions. Managed unique vendor integrations, VPN access complexities, and ensured robust data security through direct collaboration and customized solutions. PaDiUMKM is a Telkom Indonesia platform initiated by the Ministry of BUMN. Responsibilities: As backend for admin, seller, and finance teamsDisbursement transaction functionality on admin CMSVoucherNotification Scheduler Detailed Experience: During the course of the project, I was assigned to multiple teams as a backend developer, contributing to the administrative, seller, and finance functionalities. However, the project took an unexpected turn as September 2022 approached, and we realized that we had a three-day event for the Indonesian Ministry of BUMN rapidly approaching. To make matters more challenging, the deadline for deploying the production version of the project was set three days prior to the event, a detail that had been established at the project's inception a year prior. Recognizing the significance of the event, our teams willingly dedicated themselves to overtime work in order to expedite our tasks and ensure the timely completion of the project. Remarkably, even our CEO and CTO joined us during these intense sessions, actively participating and guiding us through the process. Moreover, they took on the responsibility of handling client communication alongside our project managers. The involvement of our client in the session further emphasized the importance of the project. As expected, the combination of tight deadlines, immense pressure, and prolonged working hours took a toll on our physical and mental well-being. Many team members, including myself, fell ill due to the strain. Additionally, certain internal dramas within the team temporarily hampered our progress, adding to the challenges we faced. Initially, our regular overtime hours extended until 11:00 PM, but as the week leading up to the production deployment approached, we found ourselves working until the early hours of the morning, often until 4:00 AM or 5:00 AM, only to resume our regular work schedule at 8:00 AM. Despite these grueling hours, we remained determined to deliver the best possible outcome for our client. Upon deploying the production version of the project, we encountered several issues stemming from the project's complexity. However, we promptly engaged in hotfixing the bugs to ensure a smooth experience for the users. Unfortunately, we were unable to address all the issues before the commencement of the big event. Consequently, our top priority shifted to fixing any bugs that arose during the event itself, adding further pressure to an already demanding situation. Understandably, the customer's satisfaction was negatively impacted by the unresolved issues, resulting in a deluge of unfavorable reviews. This placed even more strain on our team, intensifying the pressure we felt. However, three days after the event concluded, our client expressed understanding and approval of the tremendous effort we had put into the project, acknowledging the challenges we faced. While they recognized that there were still minor and major bugs to be resolved post-event, they were appreciative of our overworked efforts. To celebrate the completion of the project and acknowledge our dedication, our CEO generously offered us a feast. Additionally, our overtime work was duly compensated with an unusual overtime pay, highlighting the significance of our contributions and recognizing the exceptional circumstances under which we had operated. Challenges as Finance Teams: One significant feature I've been involved in is finance, allowing sellers to borrow funds from specific vendors. This feature involves direct collaboration and discussions from specific vendors. I have been deeply involved in the development of the finance feature. This has entailed direct communication and collaboration with multiple vendors, including Pegadaian, PNM, BRI Bank, Mandiri Bank, BTN Bank, Koinworks, and Investree. Through discussions with these vendors, I've contributed to shaping the feature's requirements and functionality, ensuring seamless integration with their systems while safeguarding data privacy and security. Vendor-Specific Integration: Coordinating with multiple vendors presented the challenge of accommodating their unique integration requirements. Each vendor had its own flow, making it impractical to develop a one-size-fits-all solution. This requires integration processes and APIs to align with each vendor's different workflows.Access Complexity: Some vendors mandated the use of VPNs for accessing their systems, adding an additional layer of complexity to the integration process. Managing VPN connections and ensuring secure data transmission posed logistical and technical challenges that needed to be addressed effectively.Data Sensitivity: Handling sensitive seller data required implementing robust security measures to safeguard privacy and prevent unauthorized access or data breaches.",{"id":115,"title":114,"titles":302,"content":303,"level":237},[],"A job finder application focused on Southeast Asia, featuring dynamic modules for articles, careers, and job listings. A Job finder that based on Southeast Asia location. Responsibilities: Create a Article module, similar to social media posts.Create a Career module, similar to the Article module.Create a CrelateJob module, retrieve all jobs from CrelateJob daily.Create a Menu module, dynamic navbar in frontend page.Create a Homepage module, dynamic position, text, and image for landing page.Create a Service module, similar to Article module.Create a Setting module, basic information like logo, company name, address, etc.",{"id":124,"title":123,"titles":305,"content":306,"level":237},[],"A legacy ERP logistic and transportations. A legacy ERP logistics and transportation. Responsibilities: Reduced a BUNCH of technical debt (approximately around 44k issues based on SonarQube reports).Resolved critical concurrency issues by implementing:\nAtomic upserts and improved contention modelsDeadlock eliminationDetection and correction of silent errorsRefactoring aligned with DRY principlesstress testing using low-level shell toolingStandardized internal terminology by translating non-standard team vocabulary into industry-accepted concepts (e.g., \"Scalar\" as file, PDF \"line height\" as literal height).Invoice integration with Meksmart.Optimized high-load report generation using chunked processing and Server-Sent Events.",{"id":128,"title":127,"titles":308,"content":309,"level":237},[],"An IoT project for FMT OpenRemote. Assigned to learn OpenRemote, the open-source project. Worked as IoT Developer and DevOps. Responsibilities: Learn OpenRemote for familiarizing with OpenRemote's architecture, features, and configuration.MQTT integration as a communication between the devices and OpenRemote.developed script for GPS tracking on trucks and temperature monitoring for cold storage units.Deploy OpenRemote on server through Docker.",{"id":132,"title":131,"titles":311,"content":312,"level":237},[],"A company profile project for PT. Nusantara Agro Mandiri. A company profile website for PT. Nusantara Agro Mandiri, a cold chain services company. Built with Nuxt Content and running on the Bun runtime, managed under PM2. The site serves as the primary digital presence for PT. Nusantara Agro Mandiri. Its content is managed by the marketing team through Nuxt Studio, minimizing direct developer involvement with the codebase.",{"id":314,"title":315,"titles":316,"content":317,"level":318},"\u002Fexperience\u002Ffajar-mulia-transindo\u002Fpt-nam-company-profile#features","Features",[131],"Company Profile PagesStructured content powered by Nuxt Content.SEO OptimizationOut-of-the-box SEO features via Nuxt SEO.Image OptimizationSmart scanning of content images results in prerendered images of Nuxt Image under Bun preset. This overcomes the typical limitations of prerendering found in non-static presets.Marketing Team OwnershipMarketing team maintains and updates content independently via Nuxt Studio.Secure FormsProtected by invisible Cloudflare Turnstile with additional undisclosed security layers.",2,{"id":141,"title":140,"titles":320,"content":321,"level":237},[],"Simple project for my parents to track finance management.",{"id":145,"title":144,"titles":323,"content":324,"level":237},[],"Streamlined risk assessment, enhanced risk analytics, and mitigated financial and operational risks. Tackled urgent tasks immediately, reflecting team confidence amidst high responsibility and complex risk management challenges. A project about Enterprise Risk Management (ERM) that aims to streamline risk assesment processes, improve data visualization for risk analytics, and ensure a responsive and efficient UI. And its manage to mitigate various financial and operational risks effectively. I joined the project without any interview. Instead, due to urgent situation, I was immediately entrusted with numerous tasks, reflecting the team's confidence in my skills and sense of responsibility. Responsibilities: Handle Progress LPRO module.Handle KRI module.Handle CT module. Challenges: Urgency: The project faced critical issues requiring immediate attention and action to meet tight deadlines and address pressing concerns.High Responsibility: Being tasked with urgent assignments placed significant responsibility on me to deliver results promptly and effectively, despite the time constraints.Complex Risk Management: Managing diverse financial and operational risks demanded a deep understanding of risk management principles and the ability to devise effective mitigation strategies.",{"id":149,"title":148,"titles":326,"content":327,"level":237},[],"Discover how a custom garment inventory system streamlines retail and warehouse operations with secure transactions, barcode scanning, bundle detection, and low-stock alerts. Learn about the technical leadership behind database design, CI\u002FCD automation, and a immutable kiosk OS for tamper-proof store terminals. Served as Technical Project Consultant for a medium-scale garment inventory system deployed in client stores and warehouses. Led requirements analysis, sprint planning, technical architecture, team coordination, and code quality assurance, including the development of a secure custom kiosk OS for store terminals. Key Responsibilities: Translated client requirements into technical specifications and managed sprint execution.Designed database schema, enforced strict typing (zero any usage), and maintained code quality via reviews and Git hooks.Established CI\u002FCD pipelines for automated testing and deployment.Developed a immutable kiosk OS with encrypted storage, BIOS-level passwords, and no local data persistence to prevent tampering. Features: User, retailer, product, and bundle CRUD operations.Retailer-specific transactions with barcode scanning and dynamic price adjustment.Automatic bundle detection and low-stock notifications.Sales trend analysis and database archiving for performance. Technology Stack: Development ToolsDev Containers: Provides a consistent and isolated development environment.Bun.js: Supercharged runtime environment.Biome.js: All-in-one development toolchain such as analyzer, formatter, and linter.Scalar: API documentation that automatically generated by Elysia Swagger plugin.Lefthook: Runs Git hooks for code quality checks and enforces commit message conventions before CI\u002FCD verification.SonarQube: Code quality and security analysis tool to identify code smells, vulnerabilities, and bugs.Renovate: Automates dependency updates for packages, Dev Containers, and GitHub Actions.GitHub Actions: CI\u002FCD for code quality and automated deployment process.BackendElysia: Top-performing TypeScript framework that offers E2E type safety and a unified type system.Prisma Accelerate: ORM tool for simplifying database operations and supercharge query speed.PostgreSQL: Hosted on AWS RDS, providing scalable database.Firebase Cloud Messaging: Utilized for real-time notifications.ReCAPTCHA v3: Integrated for each API that uses POST, PUT, PATCH, and DELETE methods.FrontendNext.js: React framework that seamlessly integrated with Elysia with minimal setup.Zustand: Lightweight and powerful state management compared to Redux.Shadcn: A collection of reusable components.Kiosk OSBase OS: Custom immutable image built on Universal Blue with full-disk encryption.Lockdown: Enforced kiosk mode with full-screen application access and restricted system functions.Hardware Security: Configured BIOS passwords and disabled boot modifications to prevent unauthorized access.Stateless Design: No persistent user data; system resets to a secure baseline on reboot to mitigate tampering.",{"id":153,"title":152,"titles":329,"content":330,"level":237},[],"ERP project for internet service provider. Responsibilities: Create a Product module.Create a Bundle Product module.Create a Promo Bundle module.Create a Custom Bundle Price module.Create a Hirarki Sales module.Create a Insentif Sales module.Create a Vendor module.Create a Billing Profile module.Create a Content Management module.",{"id":157,"title":156,"titles":332,"content":333,"level":237},[],"This project is the financial management for all Telkom schools. Responsibilities: Create Drafting RKA module.Create Expense Spending Input module.Create School Financial Report module.Create Policies and Guidelines module.",{"id":161,"title":160,"titles":335,"content":336,"level":237},[],"Freelance project to create a company profile website for Yayasan BPI. Got a freelance during my school to make a company profile website for Yayasan BPI. The website is built using Laravel and Bootstrap, with jQuery for some interactive features. It also includes Tawk.to for live chat support.",{"id":170,"title":169,"titles":338,"content":339,"level":237},[],"A Fabric-based Minecraft mod that allows players to capture and manage coordinates with rich features, including instant capture, coordinate history, and bulk actions. Coordinate Manager is a Fabric-based Minecraft mod that allows players to capture and manage coordinate with rich features: Capture Modes:Instant: Save coordinate immediately without prompts.Pop-up: Show a dialog to set a name and adjust coordinate values before saving.Capture Cooldown: Prevent spam by setting a cooldown.Coordinate Thumbnail: Save a thumbnail of your current view when capturing a coordinate.Precise Coordinates: Saves coordinate values as decimals for accuracy.Auto-Copy on Capture: Automatically copies the saved coordinates to the clipboard when capturing a coordinate.Coordinate History Screen: View, copy, edit, and manage saved coordinates in-game.Copy Coordinates: Copy any coordinate entry to clipboard for easy sharing.Set Favorited Coordinates: Protect favorited coordinates from accidental deletion.Search Functionality: Find saved coordinates by name or coordinate values.Bulk Actions:\nFavorite: Toggle favorite status for multiple entries.Delete: Remove multiple selected coordinates at once.Delete Options:\nDelete Individual Coordinates: Remove specific entries.Clear World\u002FServer Coordinates: Delete all unfavorited coordinates from the current world or server. Development Highlights Driven by Pure Passion: A rare moment when coding felt exciting. It reflects genuine curiousity and the joy of building something meaningful.Learning by Doing: I didn't learn deeply about Java. Instead, I dove straight into Fabric documentation and studied open-source Minecraft mods.Figuring Things Out Along the Way: I Learned by observing how other mods worked, experimenting with code, and troubleshooting issues as they came up.Full Development Cycle: Independently handled design, coding, testing, and deployment. Source code",{"id":174,"title":173,"titles":341,"content":342,"level":237},[],"A smol tool for compressing PNG and JPG, built with Bun and Tauri. Features: Smol size (.deb package is ~6.7MB)Fully offlineLossless compression for PNG and JPGDrag-and-drop supportParallel procesing See more details at repository.",{"id":178,"title":177,"titles":344,"content":345,"level":237},[],"Contributed to multiple Nuxt projects, starting with the alpha release of Nuxt UI v3, and later expanding to Nuxt ecosystem. Contributed to multiple Nuxt projects, starting with the alpha release of Nuxt UI v3, and later expanding to improvements in Nuxt Content, Nuxt MDC, and Nuxt Hub. My work spanned performance optimizations, issue triaging, and peer review of core features. Nuxt UI:Identified inefficiencies in i18n handling, where unused locale data was bundled unnecessarily.Streamlined tree-shaking to include only default locale in builds, maintaining performance even with multiple languages.Collaborated with the Nuxt core team to ensure compatibility with real-world workflows.Nuxt Content & Nuxt MDC:Investigated and documented a bug affecting highlighting parsing.Reviewed and provided feedback on a Nuxt MDC PR that resolved the issue, ensuring seamless integration with Nuxt Content.Nuxt HubInvestigated and documented a regression between Nuxt Hub 0.10.4 and Nuxt Content 3.10.0. CategoryLinksRepositoriesUI, Content, MDC, HubRelease NotesUI v3.0.0-alpha.10Resolved IssuesUI #2759, UI #2734, Content #3502, Hub #754Merged\u002FReviewed PRsUI #2760, UI #2735, MDC #409, Hub #760",{"id":182,"title":181,"titles":347,"content":348,"level":237},[],"Lightweight SEO metadata extraction from a webpage's \u003Chead> section using a streaming HTML parser. Features: Extract major SEO metadata such as title, description, keywords, Open Graph, Twitter, App Links, and other meta tags.Streams HTML and stops after \u003C\u002Fhead>.Zero dependencies. See more details at repository.",{"id":186,"title":185,"titles":350,"content":351,"level":237},[],"Smol wrapper for WhatsApp Web on Linux, built with Tauri. A smol wrapper for WhatsApp Web on Linux, built with Tauri. Features: Smol (~16MB), unlike Electron-based wrapper (100MB+)NotificationsSystem tray thingy See more details at repository.",{"id":195,"title":194,"titles":353,"content":354,"level":237},[],"A simple sandbox for experimenting with various pretrained AI models. Simple sandbox using Dev Containers for experimenting with various pretrained models. The base image using pytorch\u002Fpytorch:2.3.1-cuda11.8-cudnn8-devel. The image size is quite large, around 18.08GB. However, it should be reasonable considering the inclusion of GPU support and some AI libraries. For more details visit my AI Sandbox repository.",{"id":199,"title":198,"titles":356,"content":357,"level":237},[],"Bot that move based that statistic data and training with certain flags.",{"id":203,"title":202,"titles":359,"content":360,"level":237},[],"A personal extension that can improve productivity.",{"id":207,"title":206,"titles":362,"content":363,"level":237},[],"A personal use Discord music bot designed for cost-efficient deployment and optimized performance on minimal server resources. A lightweight, personal-use Discord music bot designed for cost-efficient deployment and optimized performance on minimal server resources. Hosting: Fly.io (Legacy Hobby plan, Singapore)Resources: Shared CPU (x1) + 256MB RAMCost: ~$1.40\u002Fmonth (effectively free since Fly.io waives costs under $5\u002Fmonth for legacy users) The bot's architecture is highly optimized, ensuring smooth operation within strict resource limits. Optimization Highlights: OpenSSL: Provides secure TLS\u002FSSL connections required for encrypted audio streaming.Opus: High-performance audio codec for low-latency, high-quality voice transmission in Discord.Sodium: Cryptographic library used for authentication and secure voice communication.FFmpeg: Custom-built from source, stripped to essential configs for efficient streaming.Alpine: Ultra-lightweight base image utilizing multi-stage builds for optimized production deployment.\nBase image: alpine:x.x ~12.79 MBCompiled executable (bytecode): ~121.1 MB (via bun build --compile --bytecode ...)\nBun runtime: ~104.82 MBN-API modules:\nDAVE (Discord Audio & Video E2E Encryption): ~1.7 MBOpus: ~0.58 MBApp size: 1 MBPrecompiled bytecode: ~8 MBFFmpeg size: ~17.5 MB (via .\u002Fconfigure --disable-everything ... && make install)Custom patches: Implement static-analysis–friendly modifications for the Bun compiler.\nSubstitute dynamic NAPI imports from prism-media with a static import of opus.nodeReplace the dynamic detection of FFmpeg sources from prism-media with a static ffmpeg commandEliminate the ws dependency from @discordjs\u002Fvoice and @discordjs\u002Fws by using Bun's native WebSocket Development History: ~2018: Cloned MusicBot for quick launch locally~2021: Write own bot in Discord.js and Distube~2022: Migrated to TypeScript, Dockerized, added Dependabot, and deployed to Fly.io~2023: Gradual migration to Bun; tweaking custom FFmpeg builds to fix OOM issues caused by npm-installed FFmpeg binaryLate 2024: Fully stable on Bun. The final build is significantly reduced from ~300 MB to 1 MBMid 2025: Deployed to the home server due to some music providers banned the Fly.io IPsLate 2025: Further optimization through custom patches, compiling with Bun, and using a highly stripped-down FFmpeg build (--disable-everything)",{"id":211,"title":210,"titles":365,"content":366,"level":237},[],"Migration of a personal secondary work laptop from Ubuntu to CachyOS, involving the setup of a customized environment with CMake and Tauri for enhanced performance and user experience. A secondary work laptop has been running on CachyOS since early April 2026, following a migration from Ubuntu that had been accumulating grievances since 22.04.",{"id":368,"title":369,"titles":370,"content":371,"level":318},"\u002Fexperience\u002Fself-taught\u002Ffrom-ubuntu-to-cachyos#what-prompted-the-move","What Prompted the Move",[210],"Ubuntu's pain (pun intended) releases have a reliable tradition of introducing problems that weren't invited. Two incidents that stucks: Electron app instabilityCertain Electron-based apps (Docker Desktop, VSCode) required opting into alpha releases to achieve stable behavior. The stable channel was the unstable one. The labeling was doing its best.The libfuse2 incidentAppImages require libfuse2 to run. On 24.04, libfuse2 no longer exists under that name, it was quietly renamed to libfuse2t64. Installing libfuse2 instead gave APT enough rope to remove fuse3, ubuntu-session, and enough of the desktop session stack to ensure the laptop wouldn't boot into a GUI again. Recovery involved rolling back through GRUB. AppImages were subsequently avoided until further notice, which turned out to be indefinitely.",{"id":373,"title":374,"titles":375,"content":376,"level":318},"\u002Fexperience\u002Fself-taught\u002Ffrom-ubuntu-to-cachyos#whats-set-up","What's Set Up",[210],"Migrating LibreWolf profiles is straightforward without relying on online sync. The profiles are files. Files can be moved. This remains an underrated property.Several desktop environments were tested (e.g., System76 COSMIC, Niri). The process was called \"exploring options.\" KDE Plasma still won. The exploration happened anyway.Installing self-built Tauri apps requires AUR tooling to package and install locally, which took longer to figure out than the app itself took to build.",{"id":378,"title":379,"titles":380,"content":381,"level":318},"\u002Fexperience\u002Fself-taught\u002Ffrom-ubuntu-to-cachyos#why-cachyos","Why CachyOS?",[210],"Why not Arch?Arch is philosophically correct and practicallly exhausting as a starting point. CachyOS ships with a functioning system, sane defaults, and performance-oriented kernel patches without requiring the user to earn it first through ISO ritual. Some people find meaning in the manual process. This was not that occasion. The goal was a working system with the option to break it deliberately, not a guided tour of pacstrap.Self-inflicted breakage, on a schedule of one's choosingUbuntu's regressions arrived uninvited with each point release. A rolling release doesn't eliminate instability, it just relocates the decisions. Updates happen when they happen, and any resulting fallout is owned rather than inherited.KDE QoL improvementsGNOME operates on the philosophy that fewer settings produce better users. KDE disagrees, and the disagreement is visible. Special Application Settings alone justify the migration, per-window geometry, focus behavior, and virtual desktop rules that actually persist. System Settings expose controls that on GNOME would require a shell extension, a prayer, and a reboot to find out if it worked.Package managementCachyOS ships with Shelly, a GUI package manager, for those who have apparently decided that typing pacman -S constitutes an unreasonable demand on one's time. It covers AUR, official repositories, AppImages, Flatpaks, and local packages. Terminal access still included for the unconvinced.",{"id":383,"title":384,"titles":385,"content":386,"level":318},"\u002Fexperience\u002Fself-taught\u002Ffrom-ubuntu-to-cachyos#any-quirks","Any Quirks?",[210],"Rolling release, KDE, and a custom kernel walk into a bar. Occasional hiccups: AUR dependency for self-built Tauri appsTauri applications require AUR tooling to package and install locally. An AppImage path exists, but it proved more complicated than building a PKGBUILD. A blank page with no error in AppImage; .pkg.tar.zst just works.Konsole defaults to FishFish ships as the default shell in Konsole. Existing bash muscle memory does not transfer gracefully until bass savior is installed. Switching back is straightforward. The reason it hasn't happened is that fish's inline autocomplete predictions are genuinely useful in a way that bash's double-tab completion is not. Adaptation is ongoing. The muscle memory is not pleased.KDE credential promptsKDE enforces application-level access controls more visibly than most environments. VSCode, for instance, surfaces a KWallet keyring prompt for credential storage. The behavior is correct and the intent is reasonable. It is also unexpected the first time, and second time, and occasional the third.",{"id":215,"title":214,"titles":388,"content":389,"level":237},[],"A comprehensive project exploring various generative AI models. The project focuses on four distinct generative tasks, namely text-to-image, image-to-image, text-to-video, and image-to-video, utilizing pretrained models licensed under MIT by Stability AI. This comprehensive approach, coupled with the choice of user-friendly tools and a permissive license, reflects a well-rounded strategy, not only in terms of technical implementation but also in accessibility and community collaboration.",{"id":219,"title":218,"titles":391,"content":392,"level":237},[],"Migration of a personal workstation from Windows to Bazzite Linux with NVIDIA, audio, and AI tooling customization. A personal PC has been running on Bazzite since early February 2026 using Bazzite DX image, following a migration from Windows with targeted system and tooling customizations.",{"id":394,"title":395,"titles":396,"content":397,"level":318},"\u002Fexperience\u002Fself-taught\u002Flinux-workstation-bazzite#whats-actually-set-up","What's Actually Set Up",[218],"RTX 5080 supported out-of-the-box by Bazzite. No rituals, no tears.PipeWire filter chains configured for 7.1 surround sound using the SADIE KEMAR preset. Ears are happy.Isolated AI workload under DistroBox, because Bazzite's immutable host discourages direct modification, and the rules were followed. Mostly out of respect. Partially out of fear:A custom-built FFmpeg with full codec and feature support, as well as hardware acceleration, based on the latest upstream version. Overkill? Absolutely.PyTorch compiled from source to drag CUDA 13 runtime into existence.SageAttention3 compiled, which demands CUDA 13 toolkit, Triton, and a from-source Python build as entry fee. Bazzite DX's Python ships without CPython and LibFFI, so LibFFI also got the from-source treatment. Perfectly normal stack of dominoes.SageAttention2 also installed as fallback, for transformers still pretending SageAttention3 doesn't exist yet.",{"id":399,"title":400,"titles":401,"content":402,"level":318},"\u002Fexperience\u002Fself-taught\u002Flinux-workstation-bazzite#why-migrate","Why Migrate?",[218],"Hardware utilization and performanceOngoing use of Ubuntu on a secondary work laptop since 2023 showed measurable gains in battery life, performance consistency, and system-level customization. That evidence made the primary workstation an obvious next candidate.Vendor lock-in from Windows-only softwareCore functionality is routinely gated behind proprietary, subscription-based tooling. A notable example is Beyerdynamic Immerse charging annually for 7.1 virtual surround. Windows-side workarounds lean on OSS layers like HeSuVi, while Bazzite treats this as a first-class feature via PipeWire, including ujust setup-virtual-surround.Peripheral ecosystems often require heavyweight vendor software just to expose basics like DPI or profiles. Linux alternatives such as OpenRazer and Input Remapper deliver the same functionality without the ongoing hostage situation.Excessive telemetry and bundled featuresPersistent background telemetry and preinstalled AI slop apps that are unrelated to user workflows are enabled by default. Meaningful mitigation typically depends on third-party utilities (e.g., O&O ShutUp10) rather than supported, system-level controls.Update instabilityMandatory updates have a habit of introducing regressions or invalidating existing configurations. Bazzite uses atomic updates with rollback support, making experimentation far less exciting in the wrong ways.Misconceptions around NVIDIA on LinuxClaims of poor NVIDIA support are outdated. NVIDIA provides official Linux drivers and tooling with feature parity. Bazzite ships with the driver preinstalled and preconfigured, removing the manual setup obstacle course.",{"id":404,"title":405,"titles":406,"content":407,"level":318},"\u002Fexperience\u002Fself-taught\u002Flinux-workstation-bazzite#why-bazzite","Why Bazzite?",[218],"Why not use Windows LTSC?LTSC removes the ads, not the leash. Same plumbing, fewer stickers. It's still Windows and requires licensing. Also still quietly steering things back to defaults nobody explicitly invited.Maintenance-free systemAtomic images. Update misbehaves? Reboot into yesterday. No drama, no registry archaeology, no \"hope this works\" energy.Beginner-friendly ;)Some people need spiritual validation from compiling their own kernel. Bazzite ships with proprietary GPU drivers baked in and handles the heavy lifting. Yes, that means fewer rites of passage. Tragic.Gaming performanceModern AAA releases lean hard on frame generation and reconstruction tricks. When half the FPS is synthetic anyway, chasing tiny distro deltas feels academic. FPS can be capped when FG isn't available, hardware stay under 70 °C and the electric bill remains pleasantly unremarkable.",{"id":409,"title":384,"titles":410,"content":411,"level":318},"\u002Fexperience\u002Fself-taught\u002Flinux-workstation-bazzite#any-quirks",[218],"No distribution delivers flawless, out-of-the-box compatibility across all workloads. Occasional hiccups still appears: Gold-rated gamesTitles marked Gold on ProtonDB may still require minor tweaks or additional dependencies for optimal behavior. For example, Clair Obscur: Expedition 33 hides most graphics settings unless sd0 (disable Steam Deck mode) is added to launch parameters.Ray tracingRTX features may intermittently fail in certain games following NVIDIA driver updates. The practical workaround is to roll back to a known-good driver version until the regression is resolved.Anti-cheatSome games listed as Denied or Broken on AWACY are generally unplayable (looking at you, EA). In Denied cases, developers have explicitly chosen not to enable or support Linux-compatible anti-cheat solutions.Proton updatesSteam's Proton updates drop frequently and sometimes have generous file sizes. Ideal for transforming a quick launch into an extended lesson in patience and network endurance.Wine-based gamesAudio occasionally decides to assert dominance at full volume, with in-game sliders cheerfully doing nothing. ALSA swaps and the usual Gold-rated ritual tweaks apply.Atomic trade-offsBazzite's image-based, immutable core keeps low-level tinkering on a tight leash. Fewer ways to quietly wreck the system, fewer late-night heroics. Stability stays boring. Ego occasionally sulks.",{"id":223,"title":222,"titles":413,"content":414,"level":237},[],"A very lightweight daily cronjob to check if today or tomorrow is a holiday, and to fetch random articles from dev.to.",{"id":227,"title":226,"titles":416,"content":417,"level":237},[],"My portfolio website containing overall about me, detail of my experiences, journey, and generate the PDF.",{"id":231,"title":230,"titles":419,"content":420,"level":237},[],"A simple classification that predict image is cat or dog. A simple classification that predict image is cat or dog. Training the model first. Then trained model put on backend. Finally the frontend hit API for predict image.",[422,435,443,452,458,468,484],{"label":423,"to":190,"children":424},"Self-Taught Projects",[425,426,427,428,429,430,431,432,433,434],{"label":210,"to":211},{"label":218,"to":219},{"label":194,"to":195},{"label":214,"to":215},{"label":202,"to":203},{"label":230,"to":231},{"label":226,"to":227},{"label":198,"to":199},{"label":206,"to":207},{"label":222,"to":223},{"label":436,"to":165,"children":437},"Open Source Experience",[438,439,440,441,442],{"label":173,"to":174},{"label":185,"to":186},{"label":181,"to":182},{"label":169,"to":170},{"label":177,"to":178},{"label":444,"to":136,"children":445},"Freelance Experience",[446,447,448,449,450,451],{"label":148,"to":149},{"label":144,"to":145},{"label":156,"to":157},{"label":140,"to":141},{"label":152,"to":153},{"label":160,"to":161},{"label":453,"to":119,"children":454},"PT. Fajar Mulia Transindo",[455,456,457],{"label":127,"to":128},{"label":131,"to":132},{"label":123,"to":124},{"label":459,"to":86,"children":460},"PT. Smooets Teknologi Outsourcing",[461,462,463,464,465,466,467],{"label":110,"to":111},{"label":94,"to":95},{"label":106,"to":107},{"label":90,"to":91},{"label":98,"to":99},{"label":102,"to":103},{"label":114,"to":115},{"label":469,"to":29,"children":470},"Internship Experience",[471,472,473,474,475,476,477,478,479,480,481,482,483],{"label":81,"to":82},{"label":77,"to":78},{"label":73,"to":74},{"label":65,"to":66},{"label":69,"to":70},{"label":61,"to":62},{"label":57,"to":58},{"label":53,"to":54},{"label":49,"to":50},{"label":45,"to":46},{"label":41,"to":42},{"label":37,"to":38},{"label":33,"to":34},{"label":485,"to":11,"children":486},"High School Experience",[487,488,489],{"label":23,"to":24},{"label":19,"to":20},{"label":15,"to":16},{"id":491,"title":98,"body":492,"company":518,"description":498,"extension":519,"image":520,"key":521,"meta":522,"navigation":523,"path":99,"seo":524,"skills":525,"stem":100,"__hash__":533},"experience\u002Fexperience\u002F3.smooets-teknologi-outsourcing\u002Fjixie.md",{"type":493,"value":494,"toc":515},"minimark",[495,499,505],[496,497,498],"p",{},"A ads manager project.",[496,500,501],{},[502,503,504],"strong",{},"Responsibilities:",[506,507,508,512],"ul",{},[509,510,511],"li",{},"Fix minor and major bugs.",[509,513,514],{},"Create HOC world chart.",{"title":516,"searchDepth":318,"depth":318,"links":517},"",[],"PT. Smooets Teknologi Outsourcing (Fullstack Developer)","md","\u002Fimages\u002Fexp-22.webp",22,{},true,{"title":98,"description":498},[526,527,528,529,530,531,532],"https:\u002F\u002Freact.dev\u002F?uwu__https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FReact.js-61DAFB?style=for-the-badge&logo=react&logoColor=000","https:\u002F\u002Fredux.js.org\u002F__https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FRedux-764ABC?style=for-the-badge&logo=redux&logoColor=fff","https:\u002F\u002Fmui.com\u002F__https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FMaterial%20UI-007FFF?style=for-the-badge&logo=mui&logoColor=fff","https:\u002F\u002Fgulpjs.com\u002F__https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FGulp.js-CF4647?style=for-the-badge&logo=gulp&logoColor=fff","https:\u002F\u002Faws.amazon.com\u002Famplify\u002F__https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FAWS%20Amplify-F90?style=for-the-badge&logo=awsamplify&logoColor=fff","https:\u002F\u002Fwww.chartjs.org\u002F__https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FChart.js-FF6384?style=for-the-badge&logo=chartdotjs&logoColor=fff","https:\u002F\u002Fsass-lang.com\u002F__https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FSASS-C69?style=for-the-badge&logo=sass&logoColor=fff","VOP3gdL-VWCq4JL10aqaBUIlcm-CQmsmKVS_sn3uBnU",[535,537],{"title":90,"path":91,"stem":92,"description":536,"children":-1},"A E-Commerce project similar to IKEA.",{"title":102,"path":103,"stem":104,"description":538,"children":-1},"A certificate generator for The Hwa Chong Institution Integrated Programme.",1775801969014]