/** * PAJ's IT project track record. Project and client names are official * Indonesian names, so they are shown as-is in both languages. */ export type ProjectSector = 'government' | 'private' | 'soe'; /** Long-running programs highlighted as featured case studies. */ export type ProjectProgram = 'price-monitoring' | 'investment' | 'erp'; export type Project = { title: string; client: string; year: number; sector: ProjectSector; program?: ProjectProgram; }; const government: Omit[] = [ { title: 'Penyusunan dan Pembuatan SOP Direktorat Data dan Informasi', client: 'Kementerian Investasi / Badan Koordinasi Penanaman Modal (BKPM)', year: 2025, program: 'investment', }, { title: 'Perencanaan Peta Jalan Direktorat Data dan Informasi TA 2024', client: 'Kementerian Investasi / Badan Koordinasi Penanaman Modal (BKPM)', year: 2024, program: 'investment', }, { title: 'Modul Pelayanan Metrologi Legal Submodul Verifikasi (Sistem Informasi Ketertelusuran Standar (SIKS))', client: 'Kementerian Perdagangan', year: 2024, }, { title: 'Penyediaan Data Harga dan Pasokan Cabe dan Bawang di Pasar Induk Wilayah Barat', client: 'Kementerian Perdagangan', year: 2024, program: 'price-monitoring', }, { title: 'Pemeliharaan Sistem Pelaporan Harga (SP2KP), Pusat Data dan Sistem Informasi', client: 'Kementerian Perdagangan', year: 2023, program: 'price-monitoring', }, { title: 'Penyediaan Data Harga dan Pasokan Cabe dan Bawang di Pasar Induk Wilayah Barat', client: 'Kementerian Perdagangan', year: 2023, program: 'price-monitoring', }, { title: 'Pembangunan Aplikasi Sertifikasi Prasarana Perkeretaapian Dengan Memanfaatkan Teknologi Informasi', client: 'Kementerian Perhubungan', year: 2022, }, { title: 'Pengembangan Aplikasi LDH', client: 'Badan Informasi Geospasial (BIG)', year: 2022, }, { title: 'Perawatan Sistem Pelaporan Harga', client: 'Kementerian Perdagangan', year: 2022, program: 'price-monitoring', }, { title: 'Pengembangan Aplikasi Sistem Informasi Ketertelusuran Standar', client: 'Kementerian Perdagangan', year: 2021, }, { title: 'Pengembangan Modul Master Data Aplikasi SIREBEKA (Sistem Informasi Remunerasi Berbasis Kinerja)', client: 'Kementerian Perhubungan', year: 2021, }, { title: 'Pengelolaan Sistem Pelaporan Harga', client: 'Kementerian Perdagangan', year: 2020, program: 'price-monitoring', }, { title: 'Pengadaan Metrologi Aplikasi Mobile: Pendataan dan Pemetaan Kondisi UTTP dan BDKT dalam Kerangka Pengawasan Kemetrologian', client: 'Kementerian Perdagangan', year: 2020, }, { title: 'Penyediaan Data Harga dan Pasokan Cabe dan Bawang di Pasar Induk Wilayah Barat', client: 'Kementerian Perdagangan', year: 2020, program: 'price-monitoring', }, { title: 'Penyediaan Data Harga dan Pasokan Cabe dan Bawang di Pasar Induk Wilayah Timur', client: 'Kementerian Perdagangan', year: 2020, program: 'price-monitoring', }, { title: 'Perawatan Sistem Pelaporan Harga', client: 'Kementerian Perdagangan', year: 2020, program: 'price-monitoring', }, { title: 'Perancangan Antar Muka Sistem Informasi Ketertelusuran Standar', client: 'Kementerian Perdagangan', year: 2019, }, { title: 'Pengembangan dan Pemeliharaan Portal NSWI TA 2019', client: 'Badan Koordinasi Penanaman Modal (BKPM)', year: 2019, program: 'investment', }, { title: 'Pengembangan Aplikasi Website Intranet', client: 'Kementerian Perdagangan', year: 2018, }, { title: 'Pemantauan Harga Bapok 34 Ibukota Provinsi pada Sabtu atau Minggu, Libur Nasional dan HBKN, Pasar Kab/Kota, Daerah TTT dan Pasar Ritel Modern Tahun 2018', client: 'Kementerian Perdagangan', year: 2018, program: 'price-monitoring', }, { title: 'Pengembangan Business Intelligence (BI) TA 2018', client: 'Badan Koordinasi Penanaman Modal (BKPM)', year: 2018, program: 'investment', }, { title: 'Pengembangan Dashboard Produk Wisata MICE', client: 'Kementerian Pariwisata', year: 2017, }, { title: 'Pembuatan Sistem Informasi Manajemen Harga dan Pasokan', client: 'Kementerian Perdagangan', year: 2017, program: 'price-monitoring', }, { title: 'Penerapan Model Pembangunan dan Revitalisasi Pasar Rakyat Dengan Pendekatan Teknologi Informasi Berbasis Mobile', client: 'Kementerian Perdagangan', year: 2017, }, { title: 'Penyusunan Pemutakhiran (Updating) Cetak Biru Pengembangan Sistem Pelayanan Informasi dan Perizinan', client: 'Badan Koordinasi Penanaman Modal (BKPM)', year: 2017, program: 'investment', }, { title: 'Pemantauan Stok dan Pasokan Barang Kebutuhan Pokok 100 Titik di Pasar Rakyat (Tradisional), Pasar Induk dan Sentra Produksi', client: 'Kementerian Perdagangan', year: 2017, program: 'price-monitoring', }, { title: 'Verifikasi Pelaporan Harga Barang Pokok pada SP2KP', client: 'Kementerian Perdagangan', year: 2016, program: 'price-monitoring', }, { title: 'Pengembangan Program Aplikasi Harga Kabupaten Kota', client: 'Kementerian Perdagangan', year: 2016, program: 'price-monitoring', }, { title: 'Updating Program Penilaian Pasar', client: 'Kementerian Perdagangan', year: 2016, }, { title: 'Pengembangan Sistem Aplikasi Jaringan Informasi Dokumentasi Hukum', client: 'Badan Informasi Geospasial (BIG)', year: 2016, }, { title: 'Verifikasi Pelaporan Harga Barang Pokok pada Sistem Pemantauan Pasar Kebutuhan Pokok (SP2KP)', client: 'Kementerian Perdagangan', year: 2016, program: 'price-monitoring', }, { title: 'Pekerjaan Pengembangan Program Aplikasi Harga Kabupaten Kota', client: 'Kementerian Perdagangan', year: 2016, program: 'price-monitoring', }, { title: 'Pembuatan Software pada Kegiatan Penguatan Regional Climate Change Center', client: 'Badan Meteorologi Klimatologi dan Geofisika (BMKG)', year: 2025, }, { title: 'Kajian Tata Kelola Teknologi Informasi BKPM TA 2014', client: 'Badan Koordinasi Penanaman Modal (BKPM)', year: 2014, program: 'investment', }, { title: 'Sistem Informasi Monitoring Updating Harga dan Pasokan Bawang Merah', client: 'Kementerian Perdagangan', year: 2014, program: 'price-monitoring', }, { title: 'Pemetaan Indikasi dan Variabel Penentu Kenaikan Harga Bahan Pokok (Komoditas Cabe Merah, Bawang Merah dan Beras)', client: 'Kementerian Perdagangan', year: 2014, program: 'price-monitoring', }, { title: 'Pembangunan Sistem Informasi Pelayanan Dokumen Hukum', client: 'Badan Informasi Geospasial (BIG)', year: 2014, }, { title: 'Pendampingan Helpdesk Implementasi Sistem Pelayanan Informasi dan Perizinan Investasi Secara Elektronik (SPIPISE)', client: 'Badan Koordinasi Penanaman Modal (BKPM)', year: 2013, program: 'investment', }, { title: 'Pengadaan Jasa Konsultasi Pekerjaan Pembangunan Sub Sistem Bidang Ketahanan Lembaga Usaha Ekonomi', client: 'Kementerian Perdagangan', year: 2012, }, { title: 'Pendampingan Helpdesk Implementasi Sistem Pelayanan Informasi dan Perizinan Investasi Secara Elektronik (SPIPISE)', client: 'Badan Koordinasi Penanaman Modal (BKPM)', year: 2012, program: 'investment', }, { title: 'Pembangunan Aplikasi Jaringan Dokumentasi dan Informasi Hukum', client: 'Badan Informasi Geospasial (BIG)', year: 2012, }, { title: 'Pengembangan Portal National Single Window for Investment (NSWI) untuk Mendukung SPIPISE BKPM', client: 'Badan Koordinasi Penanaman Modal (BKPM)', year: 2010, program: 'investment', }, { title: 'Pembuatan Database Eksportir Importir, Perusahaan, Asosiasi dan Pelaku Industri Kreatif serta Lembaga Pendidikan Formal/Non Formal', client: 'Departemen Perdagangan Republik Indonesia', year: 2009, }, { title: 'Pembangunan Sistem Informasi Tracking Promosi Investasi Tahun Anggaran 2006', client: 'Badan Koordinasi Penanaman Modal (BKPM)', year: 2006, program: 'investment', }, ]; const privateSector: Omit[] = [ { title: 'Implementasi Odoo ERP', client: 'Marawah Beach Club', year: 2022, program: 'erp', }, { title: 'Enhancement Manajemen Sistem', client: 'PT Cipta Kridatama', year: 2022, program: 'erp', }, { title: 'Kegiatan Pengembangan dan Operasionalisasi Sistem Pemantauan Pasar Kebutuhan Pokok (SP2KP)', client: 'PT LAPI ITB (Bapokstra)', year: 2013, program: 'price-monitoring', }, { title: 'Pengembangan Aplikasi GIS Pelaporan Online Harga', client: 'PT DKN', year: 2011, program: 'price-monitoring', }, { title: 'Pengembangan Portal Ekonomi Kreatif Indonesia (www.indonesiakreatif.net)', client: 'CV Multi Sarana Putra', year: 2010, }, { title: 'Pengembangan Cetak Biru Teknologi Informasi Pusat Pengendalian Online Harga dan Stok', client: 'PT Pranala Nitisala', year: 2010, program: 'price-monitoring', }, { title: 'Pembuatan Sistem Informasi Monitoring Penerimaan dan Pengeluaran BBM di Setiap Fasilitas Rantai Pasok BBM', client: 'KSO LAPI – Pranala', year: 2008, }, { title: 'Validasi dan Koreksi Data Akunting', client: 'PT Lautan Berlian Utama Motor', year: 2008, }, { title: 'Pengembangan, Pemutakhiran dan Pemeliharaan Website Tahun Anggaran 2007', client: 'CV Multi Sarana Putra', year: 2007, }, { title: 'Pembuatan Compact Disc (CD) Profil Wilayah, Sektor dan Komoditi', client: 'PT Qualita Prima Pariwara', year: 2007, }, { title: 'Pengembangan Aplikasi Titis Sampurna Accounting Information System', client: 'PT Titis Sampurna', year: 2006, }, { title: 'Jasa Konsultasi Pengembangan Sistem Informasi Eksekutif Keuangan', client: 'CV Multi Sarana Putra', year: 2006, }, { title: 'Desain Sistem Informasi Museum Bank Indonesia', client: 'PT Global Media Inline', year: 2006, }, ]; const soe: Omit[] = [ { title: 'Pembangunan Sistem Aplikasi', client: 'PT Sucofindo (Persero)', year: 2015, }, { title: 'Jasa Pemeliharaan Sistem Merpati Operation System Infrastructure (MOSI), Mobile Flight Log (MFL), Schedule Messaging System (SMS)', client: 'PT Merpati Nusantara Airlines', year: 2006, }, ]; const newestFirst = (a: Project, b: Project) => b.year - a.year; export const projects: Project[] = [ ...government.map((p) => ({ ...p, sector: 'government' as const })), ...privateSector.map((p) => ({ ...p, sector: 'private' as const })), ...soe.map((p) => ({ ...p, sector: 'soe' as const })), ].sort(newestFirst); /** Different names used over the years for the same institution. */ const clientAliases: Record = { 'Kementerian Investasi / Badan Koordinasi Penanaman Modal (BKPM)': 'Badan Koordinasi Penanaman Modal (BKPM)', 'Departemen Perdagangan Republik Indonesia': 'Kementerian Perdagangan', }; const clientName = (project: Project) => clientAliases[project.client] ?? project.client; /** Number of distinct clients across all projects. */ export const clientCount = new Set(projects.map(clientName)).size; /** Distinct clients in a sector, most frequent first. */ export const clientsInSector = (sector: ProjectSector) => { const counts = new Map(); projects .filter((project) => project.sector === sector) .forEach((project) => { const name = clientName(project); counts.set(name, (counts.get(name) ?? 0) + 1); }); return [...counts.entries()] .sort((a, b) => b[1] - a[1]) .map(([name]) => name); }; export const projectsBySector = (sector: ProjectSector) => projects.filter((project) => project.sector === sector); export const projectsInProgram = (program: ProjectProgram) => projects.filter((project) => project.program === program); /** e.g. "2006 – 2025", or a single year when all projects share it. */ export const yearRange = (items: Project[]) => { const years = items.map((project) => project.year); const first = Math.min(...years); const last = Math.max(...years); return first === last ? `${first}` : `${first} – ${last}`; };