kantor-ai README

The project's README from github.com/kangkungmozzarella/kantor-ai. As one markdown file: README.md.

Kantor Kita

Tampilan terbaru mengikuti referensi kantor hangat: kayu terang, lantai parket, tanaman berdaun, kursi berbantalan dan sofa sage. Avatar chibi memakai kepala oval, rambut bervolume, wajah sederhana, badan membulat serta rig animasi yang sama. Panel putih gading memakai aksen hijau tua. Referensi gambar menjadi arahan gaya, bukan jaminan kesamaan render. Catatan gaya maket/soft block di bawah adalah riwayat perkembangan.

Seluruh teks antarmuka memakai bahasa Inggris.

Maket kantor empat lantai dengan 13 anggota tim, ruang kerja terbuka, dan pengelolaan tugas lokal. Nama dan peran mengikuti daftar pengguna. Denah, furnitur, dan figur orang adalah interpretasi ilustratif, bukan pengukuran atau potret asli.

Tampilannya meniru maket arsitek dari karton: warna krem, garis tinta di tepi benda, satu aksen merah bata. Avatar bergaya balok seperti Roblox, dengan kepala kubus, badan kotak, lengan dan kaki bersendi, serta wajah sederhana. Tiap anggota memakai varian perempuan berambut panjang atau varian laki-laki berambut pendek, sesuai daftar tim. Semua tetap ilustratif, bukan potret rupa asli. Animasi bekerja, ngobrol, minum, menelepon, dan rutinitas lain tetap berjalan.

Label, pemilih tim, detail, log, dan tugas menampilkan inisial anggota. Identitas penyimpanan tetap memakai nama lengkap agar tugas serta pilihan musholla yang sudah disimpan tetap cocok.

Menjelajahi kantor

Seret untuk memutar dan memiringkan kamera. Shift + seret atau klik kanan untuk menggeser, scroll atau cubit trackpad untuk zoom, geser dua jari ke samping untuk memutar. Di layar sentuh: satu jari memutar, dua jari mencubit dan menggeser. Keyboard: panah memutar/memiringkan, W A S D menggeser, Q/E zoom. Tombol +, −, Rotate, dan Reset tetap tersedia.

Kamera karakter: pilih anggota tim, lalu First-person view (sudut orang pertama) atau Follow from behind. Seret atau tombol panah untuk menoleh, scroll atau cubit untuk jarak kamera belakang. Kamera ikut berpindah lantai saat karakter naik atau turun tangga. Tekan Esc, Exit camera, atau Reset untuk kembali ke tampilan maket.

Ruang rapat, kedua phone booth, musholla, serta ruang pantry & lounge (berdinding kaca) punya pintu yang terbuka sendiri saat seseorang mendekat, lalu menutup kembali.

Di lantai 3 tim punya rutinitas sendiri: menghampiri rekan untuk ngobrol, ambil minum di pantry, rehat di lounge, menelepon di phone booth, membaca papan ide, rapat kecil berdua atau bertiga, atau berdiri meregangkan badan. Bubble bergantian menandai siapa yang bicara. Paling banyak empat orang meninggalkan meja sekaligus, dan karakter dengan tugas aktif lebih jarang beranjak. Routine: on/off menghentikan kegiatan baru; yang sedang berlangsung diselesaikan lalu kembali ke meja. Rutinitas mati secara bawaan bila sistem meminta gerakan dikurangi.

Office log mencatat kegiatan simulasi dan perubahan status tugas, terbaru di atas. Isinya kejadian simulasi, bukan pesan dari AI. Di layar kecil log dibuka lewat tombol Log.

Prayer time mengantar anggota yang sudah dicentang Join at prayer time (di panel detail karakter) ke musholla. Tidak ada yang dicentang secara bawaan, dan tidak ada yang dikirim otomatis. Pilihan disimpan di browser ini. Musholla memuat delapan sajadah.

Lunch, To the rooftop, dan Back to work memindahkan tim melalui jalur tangga 3D yang terlihat. Kamera dan lantai yang sedang dilihat tidak berubah saat perintah aktivitas diberikan, termasuk Prayer time. Dari tampilan seluruh gedung, perjalanan dapat diamati tanpa pindah tampilan. Jika tujuan berubah saat di tangga, karakter mencapai bordes berikutnya sebelum menuju tujuan baru. Pause menghentikan perjalanan di posisi saat ini. Animasi tidak menyelesaikan tugas.

Music memutar instrumental santai sintetis (chord lembut, bass, dan melodi pada 72 BPM), dibuat melalui Web Audio tanpa file atau layanan audio eksternal. Klik lagi untuk menghentikannya. Slider Vol. menyimpan volume di browser. Musik selalu mati saat halaman baru dimuat; perlu klik pengguna untuk mulai. Jeda simulasi tidak menghentikan musik.

Jalankan dari direktori proyek:

python3 -m http.server 4173 --bind 127.0.0.1 --directory public

Buka http://127.0.0.1:4173. Internet diperlukan untuk memuat Three.js dari CDN dan font Archivo serta IBM Plex Mono dari Google Fonts.

Mengelola tugas

Tugas disimpan dalam localStorage untuk alamat browser ini. Tidak ada sinkronisasi antarperangkat. Menghapus data situs juga menghapus tugas. Jika penyimpanan gagal, perubahan tidak diterapkan; data rusak tidak ditimpa secara otomatis.

Tugas dengan nama karakter prototipe lama tetap disimpan dan dapat dipindahkan ke anggota tim baru. Tugas aktif yang dipindahkan kembali ke antrean; hasil tugas selesai tetap dipertahankan.

Server tugas dan agen AI

Dengan server, tugas disimpan di data/tasks.json dan anggota yang tersambung ke agen AI mengerjakan tugasnya sendiri. Saat ini Social Media Specialist dan Customer Service; daftarnya ada di server/agents.js. Anggota lain tetap simulasi dengan status yang diubah manual.

cp .env.example .env   # isi ANTHROPIC_API_KEY dari console.anthropic.com → API Keys
npm start              # atau: node server/server.js  (Node 22+)

Buka http://127.0.0.1:3000.

Tugas terlihat langsung di kantor:

Ketiganya juga berjalan tanpa server (tugas dari localStorage).

Model bawaan adalah claude-sonnet-5-5; ganti dengan ANTHROPIC_MODEL di .env. tests/server.cjs menguji alur dry run dari awal sampai akhir, tugas manual, penjaga API, persistensi, dan jalur error agen; tes ini menyalakan servernya sendiri.

Struktur

Pemeriksaan browser

tests/avatar-stairs.cjs memeriksa varian avatar, inisial, kompatibilitas tugas, posisi 3D saat naik/turun tangga, jeda, perubahan tujuan, kamera yang tetap, musik, volume tersimpan, serta layout 375/768/1440px. Jalankan dengan node tests/avatar-stairs.cjs; konfigurasi Playwright sama seperti tes di bawah. OFFICE_URL dapat digunakan untuk alamat server selain port 4173.

tests/office.cjs menguji jumlah tim, pergantian lantai, klik lantai dari tampilan gedung, kamera karakter (mata, belakang, ikut ke lantai lain, Esc), pintu otomatis, orbit/geser/zoom kamera, rutinitas otomatis (meninggalkan meja, ngobrol, batas empat orang), log kantor, musholla dengan pilihan per orang, pilihan karakter, tugas, perjalanan makan/rooftop/kembali, tampilan responsif, dan pemindahan tugas lama. Jalankan server lokal terlebih dahulu, kemudian node tests/office.cjs dengan Playwright dan Chromium tersedia. Jika Playwright terpasang di luar proyek, set PLAYWRIGHT_MODULE ke direktori modul tersebut. Tambahkan --visual untuk hanya memeriksa lantai dan mengambil tangkapan layar. Browser pengujian memakai konteks terpisah dari data pengguna.

Member and division instructions

Select an avatar or initials in Team member. The detail sheet shows Active task, its instructions, and View / assign tasks. A brick-red underline marks an avatar with an active task; its accessible label and tooltip include the task title. The task remains visible while the character travels or takes a break. Completing it or returning it to the queue removes the marker.

Under Send instructions to, choose the selected person, their division, or Choose people… for a custom group. Meet together, Lunch, Rooftop, and Back to work apply only to that selection and preserve the current camera. The footer still commands the whole team. Meeting places are reserved before anyone moves; an invitation that exceeds the available six seats is rejected without moving a partial group. Explicit meetings last until participants receive another command, such as Back to work. Tasks remain manually managed.

tests/member-commands.cjs covers selection scope, room capacity, empty selection, meeting arrival, camera preservation, active-task display and responsive detail panels. Use the same Playwright setup as the other tests.

Soft-block avatars

Heads, torsos, limbs, hair and shoes now use rounded block geometry shared between characters. Joint poses blend over time instead of snapping between walking, sitting and activities. Small weight shifts, breathing, alternating typing/mouse poses and head turns vary by person. Characters slow down near their final destination. Barber characters share the rounded shapes and pose blending. Gender assignments, initials and task identities are unchanged.

tests/soft-avatar.cjs exercises character cameras, stairs, pause and arrival at lunch, with screenshots of the new figures. tests/member-commands.cjs remains the regression check for instructions and active tasks.

Evening building overview

View whole building now uses a closer camera, navy panels, warm floor lights and a muted dusk sky. Individual floors keep the warm daylight interior. Navigation thumbnails are captured from the actual 3D floors at startup. Counts show team members currently on each floor, excluding people on the stairs and barber visitors; they are not online-presence indicators. Mobile navigation uses compact floor labels and counts instead of thumbnails. No analytics or account controls are implied.

tests/building-view.cjs checks thumbnail loading, counts, clicking a floor through the facade, theme switching and 375/768/1440px layouts.

Pembaruan review dan keandalan tugas

Hasil manual dan komentar revisi disimpan sementara di sessionStorage tab browser, sehingga pembaruan daftar serta reload tidak menghapus tulisan yang belum dikirim. Komentar revisi terikat ke versi draf. Persetujuan memakai versi tugas agar tampilan lama tidak menyetujui draf yang sudah berubah.

Worker memakai identitas eksekusi: hasil atau error terlambat tidak mengubah tugas yang sudah dialihkan. API memvalidasi penanggung jawab dan batas satu tugas aktif per orang. Jalankan ulang server setelah memperbarui kode backend.

Office life

Tombol Office life membuka panel kegiatan dan pembagian tugas. Teks antarmuka tetap bahasa Inggris.

Jalankan ulang server dan reload halaman setelah perubahan. tests/office-life.cjs memeriksa penyimpanan batch, feedback coffee break, unduhan, interaksi/jeda kucing, kebiasaan, selebrasi, pencahayaan tersimpan, panel responsif dan pembagian tugas tanpa server. Tes memakai server sementara dalam dry-run dan tidak memanggil AI berbayar.

Work board, review, decorations and tours

Di Office life, Work board membuka pekerjaan nyata beserta draf, pertanyaan agen dan hasil selesai. Filter status membantu menemukan pekerjaan yang perlu ditinjau. Open task membawa ke tugas yang tepat; Discuss this draft membuka rapat review. Papan 3D di workspace juga dapat diklik, dan kini menampilkan pekerjaan selesai bersama tugas yang menunggu review/keputusan. Monitor meja menampilkan status tugas pemiliknya; klik sisi depan monitor untuk membuka tugas anggota tersebut. Anggota tanpa tugas menampilkan Idle. Finished di monitor adalah status tugas, bukan kehadiran online.

Review meeting memakai draf yang sudah ada. Pilih tugas dan 1–6 anggota; kursi ruang rapat diperiksa sebelum siapa pun dipindahkan. Anggota tetap di ruang rapat sampai diberi perintah baru atau Send invitees back to work. Centang Ask connected agents for feedback jika ingin masukan AI; saat ini KR dan KS. Anggota lainnya hadir sebagai simulasi. Server mengirim satu permintaan model per anggota tersambung, berurutan, dengan draf, instruksi asli dan masukan sebelumnya. Catatan menyebut versi draf sumber; permintaan dari versi lama ditolak dan perubahan selama review diberi penanda. Review tidak mengubah tugas, menyetujui, merevisi atau menerbitkan hasil. Persetujuan dan revisi tetap dilakukan lewat Tasks. Catatan dapat diunduh sebagai teks; tanpa key, hasil berlabel DRY RUN.

Di Appearance & tours, pilih warna kursi/karpet, warna daun tanaman, dan salah satu poster kantor. Team colours / Original greens memulihkan warna bawaan. Pilihan tersimpan di browser, bukan di server. Dekorasi tidak memindahkan furnitur atau mengubah jalur berjalan.

Outside the windows menawarkan Clear, Rain, dan Sunset. Hujan merupakan simulasi visual di luar footprint gedung, bukan cuaca sungguhan. Sunset memberi cahaya sore tanpa mengubah pilihan Lighting yang disimpan; Clear mengembalikan pencahayaan pilihan itu. Play rain sound memainkan noise tersaring lewat Web Audio; volumenya tersimpan. Audio selalu mati setelah reload dan dimulai dengan klik pengguna. Suara hujan dan Music memiliki kontrol terpisah.

Camera tours menyediakan orbit workspace, mengikuti Moka, dan orbit gedung. Klik Start camera tour untuk menutup panel dan mulai; Stop tour, Escape, drag, wheel, keyboard kamera, pemilihan lantai/anggota, atau kontrol kamera menghentikan tur. Pause menjeda tur serta hujan visual. Reduced motion memberikan sudut kamera diam dan tetes hujan tanpa animasi.

tests/office-studio.cjs menggunakan server sementara dalam dry-run untuk memeriksa status/klik monitor, papan hasil, navigasi tugas, review versi draf, dekorasi tersimpan, cuaca/audio, tur, gangguan kamera manual, viewport 375/768/1440px dan reduced motion. public/studio.js mengelola panel serta audio; public/studio.css menata panel; geometri, cuaca dan kamera tetap di public/office.js.

tests/server.cjs memeriksa siklus draf, revisi, persetujuan, dan pemulihan tulisan setelah polling/reload dengan dry-run. tests/worker-reliability.cjs memakai provider lokal tiruan untuk memeriksa error terlambat setelah pengalihan tugas. Pengujian ini tidak memanggil AI berbayar.

kantor-ai (kangkungmozzarella/kantor-ai)

Searching Database…

What is this?Kantor Kita is an interactive 3D paper-model visualization of a four-floor office housing a 13-person team, combined with a simple local task tracker for that team.
Is this a game or a project management tool?It's neither a game with objectives nor a full PM tool - it's a browser-based explorable 3D office model (built with Three.js) with ambient character routines, plus a lightweight task board bolted onto it.
How do I get it running?Just open the project's public folder in a browser, or serve it with any static server such as 'python3 -m http.server' or Live Server - no build step is required.
Do I need an Anthropic API key?Only if you want the connected AI agents to actually produce work. Without an ANTHROPICAPIKEY the optional task server runs in 'dry run' mode and returns clearly labeled sample text instead of real AI output.
Does every team member run on AI automatically?No - currently only the Social Media Specialist and Customer Service roles are wired to AI agents (configured in server/agents.js); the rest of the team is simulated and their task status has to be updated manually.
Is this modeled on a real company's actual office?No - the floor plans, furniture, and people are illustrative interpretations rather than real measurements or portraits; names and roles just follow a configurable user list.
Is the optional task server safe to expose on my network?No, not yet - the local server has no login and only listens on 127.0.0.1, so it should stay on your own machine until authentication is added.
Where are my tasks and settings saved?Everything - tasks, prayer-time opt-ins, and volume - is stored in your browser's localStorage only; there's no cross-device sync, though tasks can be exported as JSON (import isn't supported yet).
Can I move the camera around the building myself?Yes - drag or use arrow keys/WASD/Q-E to orbit, pan and zoom, with touch-gesture support, plus dedicated first-person and follow-behind cameras for any selected character.
Is there background music?Yes, an ambient instrumental loop at 72 BPM generated live via the Web Audio API (no audio files or external services); it starts muted on every page load until you click play.
Can I send a command to a whole department instead of one person?Yes - under 'Send instructions to' you can target the selected person, their entire division, or a custom group, and meeting rooms reserve seats in advance (capped at six) before anyone moves.
Size
0.1 MB
Stars
116
Updated
CommitOct 05
Age
19d
Commits · 90 Days