achmadya.dev
Terbuka untuk pekerjaan
COMMAND PALETTE

Cari sesuatu

10 hasilGunakan tautan di bawah untuk membuka halaman
Proyek
proyekMandor PlateA reusable SaaS boilerplate with an API, dashboard, database, and tests in one monorepo.proyekMCP QueryA suite of MCP servers for querying Excel and four databases over npx and stdio, with a small runtime and explicit error handling.
Tulisan
TulisanRecording Finances in a Spreadsheet with HermesHow Hermes maps messages to cashflow rules, prepares reviewable drafts, requests confirmation, and writes and verifies spreadsheet transactions.TulisanOrganizing Coding Workflows with Hermes ProjectsHow to connect a Git repository to a Hermes Project, prepare its runtime and dependencies, and run validation from consistent working context.TulisanHow I render Markdown and Mermaid in ReactThe rendering pipeline I use for safe Markdown, highlighted code, and responsive Mermaid diagrams.TulisanDesigning an MCP tool call I can traceHow I separate protocol handling, database adapters, and public errors in a small MCP query server.TulisanInstalling Hermes Agent and Understanding Its ArchitectureA complete guide to installing Hermes Agent and understanding profiles, skills, tools, gateway, schedules, Kanban, memory, and agent architecture.TulisanA monorepo as a context boundary for AIWhat changed when I put contracts, backend, frontend, and tests in one workspace for AI-assisted development.TulisanLearning Microsoft SQL Server and its backup mechanismNotes on learning Microsoft SQL Server through an online-store case: from containers and queries to recovery models, backup chains, and restore operations.TulisanBuilding CCTV Live Streaming and Playback on the Web with FFmpegR&D notes on taking Hikvision video from RTSP to the browser, including H.265 transcoding, MPEG-TS, WebSocket delivery, and time-based playback.
~/tulisan / monorepo-context-for-ai

Monorepo sebagai context boundary untuk AI

monorepoAI-assisted developmentarchitecture

Batas repository mengubah cara kerja

Awalnya saya menganggap pilihan satu atau dua repository sebagai preferensi organisasi. Saat bekerja dengan AI coding assistant, boundary tersebut menjadi keputusan operasional.

Sebuah fitur jarang berhenti di frontend atau backend. Satu field baru dapat memengaruhi schema, migration, API contract, validation, query, form, dan E2E test.

Jika bagian tersebut berada di workspace terpisah, assistant hanya melihat setengah perubahan kecuali saya terus memberikan context. Bagian yang tidak terlihat akan berubah menjadi asumsi.

Mandor Plate menyimpan seluruh alur di satu Turborepo. Tujuannya bukan membuat repository besar, tetapi membuat satu fitur mudah ditelusuri.

Alur yang perlu dilihat assistant

Untuk fitur dashboard, dependency path yang berguna adalah:

Merender diagram...

Graph ini lebih penting daripada jumlah package. Assistant perlu menemukan lokasi sebuah istilah didefinisikan, diterapkan, dan dibuktikan melalui test.

Shared contract memberi satu vocabulary untuk fitur. Jika organizationId berubah, repository search dapat menemukan producer dan consumer tanpa melewati boundary repository.

Satu workspace belum cukup

Menempatkan kode di satu folder tidak otomatis menghasilkan context yang baik. Monorepo tetap sulit dipahami jika ownership dan arah dependency tidak jelas.

Saya menjaga beberapa aturan tetap eksplisit:

  • API memiliki domain behavior dan persistence.
  • Web app memiliki presentation dan user workflow.
  • Shared contract berisi data agreement, bukan domain service.
  • Package menyediakan public entry point dan menghindari deep import.
  • Root command menjalankan pemeriksaan lintas package.

Aturan ini mengurangi jumlah lokasi yang masuk akal untuk sebuah perubahan. Manusia mendapat manfaat lebih dulu; AI memperoleh kejelasan yang sama.

Vertical slice menghasilkan feedback lebih baik

Saya meminta assistant menyelesaikan satu vertical slice, bukan membuat beberapa layer yang tidak terhubung.

Pekerjaan dimulai dari contract, melewati API dan database, lalu selesai pada UI dan test. Setiap tahap meninggalkan bukti untuk tahap berikutnya.

contract -> API rule -> migration -> web mutation -> UI state -> E2E

Urutan ini memperlihatkan pekerjaan yang belum lengkap lebih awal. UI yang berhasil compile tetapi mengirim bentuk salah akan gagal terhadap contract atau API sebelum dianggap selesai.

Command lint, typecheck, unit, dan E2E pada root memberi definition of done yang sama. Tanpa feedback yang dapat dijalankan, context lebih besar hanya membantu AI membuat perubahan besar yang belum diverifikasi.

Biayanya tetap ada

Monorepo menambah jumlah kode yang dapat dilihat setiap tool. Prompt yang tidak fokus dapat membuat assistant menyentuh package lain hanya karena lokasinya berdekatan.

Build configuration juga menjadi bagian dari produk. Task dependency, caching, environment variable, dan package boundary membutuhkan maintenance.

Solusinya bukan menyembunyikan repository lagi. Saya membatasi pekerjaan berdasarkan feature path, menyebut owning package, dan mewajibkan pemeriksaan yang relevan sebelum memperluas scope.

Repository terpisah tetap tepat ketika team, release cycle, access control, atau runtime ownership benar-benar independen. Kemudahan AI tidak boleh menghapus boundary tersebut.

Pelajaran yang saya dapat

Manfaat utamanya bukan karena AI dapat mengedit lebih banyak file. Assistant dapat memeriksa bukti yang menghubungkan file-file tersebut sebelum mengubahnya.

Context boundary yang berguna menggabungkan kode dalam satu tempat, ownership yang jelas, terminology bersama, dan pemeriksaan yang dapat dijalankan.

Tanpa batas tersebut, monorepo hanya memberi search space lebih besar. Dengan batas yang jelas, monorepo menjadi peta dari perubahan produk menuju implementasi yang sudah diverifikasi.