Website resmi Coder Institute, komunitas mahasiswa Teknik Informatika Universitas Hasanuddin.
Website ini dibangun menggunakan Next.js 15 (App Router) dengan TypeScript dan dukungan Tailwind CSS untuk styling modern dan responsif.
Saat ini, website bersifat statis tanpa backend. Seluruh konten disimpan dalam bentuk data statis di folder src/data/.
Proyek ini menggunakan pnpm sebagai package manager utama dan dilengkapi dengan development workflow yang komprehensif menggunakan Husky, Prettier, ESLint, dan Commitlint.
Website ini mencakup beberapa halaman penting, yaitu:
- Halaman beranda dengan SEO optimization
- Daftar pengurus aktif
- Daftar proyek komunitas
- Artikel dan blog teknologi
- Prestasi komunitas
Seluruh halaman dikelola di dalam src/app/, dengan pendekatan file page.tsx untuk tiap route.
Referensi desain utama dapat diakses melalui Figma:
Link Figma
Pastikan sudah menginstal:
- Node.js versi 18 atau lebih tinggi
- pnpm versi 8 atau lebih tinggi
Langkah menjalankan secara lokal:
git clone https://github.com/Coder-Institute-HMIF-FT-UH/website-coder-institute
cd website-coder-institute
pnpm install
pnpm run devLalu akses proyek melalui http://localhost:3000
Proyek ini menggunakan development workflow yang komprehensif untuk memastikan kualitas kode dan konsistensi:
- โ Husky - Git hooks management
- โ Prettier - Code formatting otomatis
- โ ESLint - Code linting dengan TypeScript support
- โ Commitlint - Validasi format commit message
- โ lint-staged - Menjalankan tools hanya pada staged files
npx lint-staged- Auto-format file dengan Prettier
- Auto-fix ESLint issues
- Type checking dengan TypeScript
npx commitlint --edit- Validasi format Conventional Commits
pnpm run build- Memastikan project bisa di-build sebelum push
# Development
pnpm dev # Start development server dengan Turbopack
pnpm build # Build untuk production
pnpm start # Start production server
# Code Quality
pnpm lint # Run ESLint
pnpm lint:fix # Run ESLint dengan auto-fix
pnpm format # Format semua file dengan Prettier
pnpm format:check # Check apakah file sudah ter-format
pnpm type-check # Run TypeScript type checkingProject ini menggunakan fitur GitHub Issues sebagai sistem ticketing resmi untuk membagi dan melacak tugas di dalam proyek ini.
Setiap tugas (baik membuat komponen, memperbaiki bug, maupun menulis dokumentasi) akan dibuat dalam bentuk ticket (issue) dan diberi label, deskripsi, serta assignee yang bertanggung jawab. Juga pada project menggunakan GitHub Projects sebagai sistem manajemen tugas visual, mirip seperti Trello. Di dalamnya kamu akan melihat semua ticket (issue) yang dibagi berdasarkan status pengerjaan.
Untuk memudahkan tracking, diskusi, dan pengelompokan task, gunakan format tag di awal judul GitHub Issue.
| Tag | Kapan Dipakai | Contoh Judul Issue |
|---|---|---|
[Feature] |
Menambahkan fitur atau komponen baru | [Feature] Tambahkan BlogCard di halaman utama |
[Fix] |
Perbaikan minor (UI, logic, typo) | [Fix] Warna button tidak konsisten |
[Bug] |
Ada error atau fungsi tidak berjalan | [Bug] Gambar pengurus tidak tampil di Safari |
[Refactor] |
Perapihan kode tanpa ubah fungsional | [Refactor] Pisahkan logic API ke utils |
[Docs] |
Dokumentasi (README, komentar, dsb.) | [Docs] Tambahkan instruksi setup project |
[Chore] |
Task non-fungsional (config, tooling) | [Chore] Setup Husky & lint-staged |
- Gunakan bahasa Indonesia yang jelas untuk judul.
- Judul issue harus langsung menggambarkan apa yang ingin dilakukan atau diperbaiki.
- Sertakan deskripsi, screenshot (jika UI), dan checklist tugas bila perlu.
Proyek ini menggunakan Conventional Commits dengan validasi otomatis melalui Commitlint. Format commit akan divalidasi secara otomatis saat commit.
Tag (type) |
Kapan Dipakai | Contoh Penggunaan |
|---|---|---|
feat |
Menambahkan fitur baru atau tampilan baru | feat(ui): add blog card component to homepage |
fix |
Memperbaiki bug atau kesalahan logic | fix(navbar): resolve mobile layout positioning |
style |
Perubahan terkait format, spasi, perubahan UI, dsb | style(ui): format code with prettier and fix spacing |
refactor |
Reorganisasi kode tanpa ubah perilaku | refactor(utils): extract validation to helper |
docs |
Perubahan dokumentasi saja | docs(readme): update deployment instructions |
chore |
Tugas teknis non-fungsional | chore(config): setup ESLint and Prettier configuration |
perf |
Optimasi performa | perf(components): optimize project list rendering |
test |
Menambahkan atau memperbaiki tests | test(utils): add unit tests for date helpers |
ci |
Perubahan CI/CD configuration | ci(workflow): update GitHub Actions pipeline |
build |
Perubahan build system atau dependencies | build(deps): update Next.js to latest version |
- Gunakan bahasa Inggris untuk konsistensi dan standar internasional.
- Jangan gunakan huruf kapital di awal deskripsi.
- Gunakan scope untuk memberikan konteks lebih jelas (misal:
feat(ui):,fix(api):). - Hindari commit seperti
update,edit,fix bug, karena kurang jelas. - Commit yang konsisten akan sangat membantu saat review, debug, atau tracking fitur.
<type>(<scope>): <deskripsi singkat dalam bahasa Inggris>
Contoh:
feat(ui): add blog card component to homepage
fix(navbar): resolve mobile responsive layout issues
refactor(components): separate filter logic to utils
style: format code with prettier
docs: update development workflow documentation
chore(deps): update dependencies to latest versionsNote: Format commit akan divalidasi otomatis oleh Commitlint. Jika format salah, commit akan ditolak.
.
โโโ public/
โ โโโ Logo-Coder.png
โโโ src/
โ โโโ app/
โ โ โโโ page.tsx # Halaman beranda (/)
โ โ โโโ layout.tsx # Root layout dengan metadata SEO
โ โ โโโ globals.css # Global styles
โ โ โโโ sitemap.ts # Auto-generated sitemap
โ โ โโโ robots.ts # Auto-generated robots.txt
โ โ โโโ pengurus/
โ โ โ โโโ page.tsx # Halaman /pengurus
โ โ โโโ projek/
โ โ โ โโโ page.tsx # Halaman /projek
โ โ โโโ blog/
โ โ โ โโโ page.tsx # Halaman /blog
โ โ โโโ prestasi/
โ โ โโโ page.tsx # Halaman /prestasi
โ โโโ components/
โ โ โโโ beranda/
โ โ โโโ blog/
โ โ โโโ common/
โ โ โโโ pengurus/
โ โ โโโ prestasi/
โ โ โโโ projek/
โ โโโ data/
โ โโโ types/ (untuk TypeScript interfaces)
โโโ .husky/ # Git hooks configuration
โโโ .prettierrc # Prettier configuration
โโโ .lintstagedrc # Lint-staged configuration
โโโ commitlint.config.js # Commitlint configuration
โโโ eslint.config.mjs # ESLint configuration
โโโ tsconfig.json # TypeScript configurationBerisi aset publik seperti logo, favicon, dan gambar yang bisa diakses langsung melalui URL.
Contoh: logo-coder.png (logo resmi komunitas)
Ini adalah direktori utama untuk semua halaman website. Next.js 15 menggunakan sistem App Router, di mana setiap folder di dalam src/app/ secara otomatis menjadi route (URL) untuk website.
Setiap route wajib memiliki file page.tsx di dalamnya. File inilah yang menjadi entry point dari halaman tersebut.
Berikut struktur hubungan antara URL, nama folder, dan file-nya:
| URL | Lokasi di folder | Fungsi Halaman |
|---|---|---|
/ |
src/app/page.tsx |
Halaman utama (beranda) dengan SEO optimization |
/pengurus |
src/app/pengurus/page.tsx |
Menampilkan daftar pengurus aktif |
/projek |
src/app/projek/page.tsx |
Menampilkan proyek atau kegiatan komunitas |
/blog |
src/app/blog/page.tsx |
Artikel, tulisan, atau berita seputar komunitas |
/prestasi |
src/app/prestasi/page.tsx |
Daftar pencapaian dan prestasi Coder Institute |
File Khusus di App Directory:
layout.tsx- Root layout dengan metadata SEO dan font configurationsitemap.ts- Auto-generated sitemap untuk SEOrobots.ts- Auto-generated robots.txt untuk SEO
Folder ini adalah gudang untuk semua komponen UI yang dapat digunakan kembali (reusable) di seluruh website. Semua komponen menggunakan TypeScript dan mengikuti PascalCase naming convention.
Struktur Internal src/components/:
src/components/
โโโ beranda/ # Komponen spesifik untuk halaman Beranda
โ โโโ BerandaSection.tsx
โโโ blog/ # Komponen spesifik untuk halaman Blog
โ โโโ BlogSection.tsx
โโโ pengurus/ # Komponen spesifik untuk halaman Pengurus
โ โโโ PengurusSection.tsx
โโโ prestasi/ # Komponen spesifik untuk halaman Prestasi
โ โโโ PrestasiSection.tsx
โโโ projek/ # Komponen spesifik untuk halaman Projek
โ โโโ ProjekSection.tsx
โโโ common/ # Komponen generik, digunakan di banyak halaman
โโโ Navbar.tsx
โโโ Footer.tsx
โโโ JsonLd.tsx # Structured data component untuk SEO
Berisi data statis berbasis file TypeScript. Cocok untuk pengisian konten sementara tanpa backend.
Struktur:
src/data/
โโโ beranda/
โ โโโ apaKataMereka.ts
โ โโโ faq.ts
โ โโโ misiKami.ts
โ โโโ prestasiTerbaru.ts
โ โโโ projekTerbaru.ts
โโโ blog/
โ โโโ blogLainnya.ts
โ โโโ blogPreview.ts
โโโ prestasi/
โ โโโ prestasi.ts
โโโ profil/
โ โโโ profilPengurus.ts
โโโ projek/
โโโ projek.ts
| Route | Deskripsi Halaman | SEO Features |
|---|---|---|
/ |
Beranda / halaman utama | โ Structured Data |
/pengurus |
Menampilkan daftar pengurus | โ Meta Tags |
/projek |
Menampilkan daftar proyek komunitas | โ Meta Tags |
/blog |
Artikel dan berita komunitas | โ Meta Tags |
/prestasi |
Daftar prestasi/pencapaian komunitas | โ Meta Tags |
SEO Features:
- Auto-generated sitemap di
/sitemap.xml - Auto-generated robots.txt di
/robots.txt - Open Graph metadata untuk social sharing
- Structured data (JSON-LD) untuk rich snippets
- Pages:
page.tsx(lowercase, required by Next.js) - Components:
PascalCase.tsx(e.g.,BerandaSection.tsx) - Data files:
camelCase.ts(e.g.,apaKataMereka.ts) - Utils/Hooks:
camelCase.ts(e.g.,formatDate.ts)
- Semua file akan otomatis di-format dengan Prettier saat commit
- ESLint akan otomatis memperbaiki issues yang bisa diperbaiki
- TypeScript type checking untuk mencegah runtime errors
- Conventional Commits untuk histori yang jelas
- Buat branch feature:
git checkout -b feat/nama-fitur - Develop dengan
pnpm dev - Commit dengan format conventional:
git commit -m "feat: tambah komponen baru" - Push:
git push(otomatis menjalankan build check)
- TypeScript: Semua file menggunakan
.tsxuntuk components dan.tsuntuk utilities - Package Manager: Gunakan
pnpmkonsisten, jangan mix dengan npm/yarn - Git Hooks: Sudah dikonfigurasi otomatis, jangan bypass kecuali emergency
- SEO: Setiap page sudah ada metadata, jangan lupa update sesuai konten
- Data Management: Gunakan folder
src/data/sampai ada backend - Component Structure: Ikuti struktur folder berdasarkan halaman untuk organisasi yang baik
Proyek ini menggunakan Vercel sebagai platform deployment utama karena optimized untuk Next.js.
Setup Deployment:
- Connect repository ke Vercel
- Auto-deploy dari branch
main - Preview deployment untuk setiap PR
Build command: pnpm run build
- Jika ada yang ingin ditanyakan silahkan bertanya di grup telah disediakan di whatsapp.
- Untuk development workflow atau Git issues, bisa check
docs/DEVELOPMENT-WORKFLOW.md
Dokumen ini disusun untuk keperluan internal tim pengembang website Coder Institute. Silakan update jika ada perubahan struktur proyek atau teknologi yang digunakan.
Semangat๐ฅ