Panduan Komprehensif tentang Markdown - Dari konsep dasar hingga penggunaan advanced untuk dokumentasi profesional
Markdown adalah bahasa markup ringan (lightweight markup language) yang digunakan untuk memformat teks secara sederhana, cepat, dan efisien. Berbeda dengan HTML yang menggunakan tag kompleks, Markdown menggunakan simbol-simbol sederhana yang mudah diingat dan ditulis.
Filosofi Markdown: βEasy to write, easy to readβ
Markdown dirancang dengan prinsip bahwa dokumen yang ditulis dalam format plaintext tetap harus mudah dibaca bahkan tanpa di-render. Artinya, ketika Anda membuka file .md di notepad biasa, Anda masih bisa memahami struktur dan konten dokumen tersebut.
Perbandingan Syntaks:
| Format | Cara Menulis Heading |
|---|---|
| HTML | <h1>Judul Besar</h1> |
| LaTeX | \section{Judul Besar} |
| Markdown | # Judul Besar |
Dari tabel di atas terlihat jelas bahwa Markdown jauh lebih sederhana dan intuitif.
Markdown bukan hanya untuk programmer! Markdown digunakan di berbagai bidang:
Markdown memiliki beberapa extension file:
.md - Yang paling umum digunakan.markdown - Extension lengkap (jarang dipakai).mdown - Alternatif (sangat jarang)Best practice: Gunakan .md karena sudah menjadi standar industri.
Markdown diciptakan oleh John Gruber (blogger dan software developer) pada tahun 2004 dengan kolaborasi dari Aaron Swartz (programmer dan aktivis internet).
Latar Belakang Pembuatan: Pada awal tahun 2000-an, menulis konten web berarti harus berurusan dengan HTML yang verbose dan rumit. John Gruber ingin membuat cara menulis yang lebih natural dan mudah dibaca, sehingga ia menciptakan Markdown.
Tujuan utama Markdown adalah membuat format penulisan yang:
Seiring waktu, Markdown berkembang menjadi beberapa βflavorβ atau variasi:
Yang paling umum digunakan: GitHub Flavored Markdown (GFM) karena GitHub adalah platform paling populer untuk open source.
Hari ini, Markdown telah menjadi standar de facto untuk:
Contoh: Untuk membuat heading, cukup tambah #. Untuk bold, cukup **text**. So simple!
Perbandingan Ukuran File:
Markdown dapat dikonversi ke berbagai format:
| Format Output | Tool Converter | Kegunaan |
|---|---|---|
| HTML | Pandoc, Marked | Website, blog |
| Pandoc, Markdown PDF | Dokumen formal, laporan | |
| DOCX | Pandoc | Microsoft Word |
| Slide | Marp, reveal.js | Presentasi |
| EPUB | Pandoc | E-book |
| LaTeX | Pandoc | Academic paper |
Contoh Git Diff:
- ## Judul Lama
+ ## Judul Baru yang Lebih Jelas
Bandingkan dengan binary file seperti .docx yang susah di-diff!
Markdown tidak mendukung:
Solusi: Gunakan HTML inline atau CSS untuk kebutuhan advanced.
Contoh: Task list - [ ] support di GitHub tapi tidak di semua Markdown parser.
Solusi: Gunakan CommonMark atau GitHub Flavored Markdown (GFM) sebagai standar.
Solusi: Gunakan editor dengan live preview (VSCode, Typora, Obsidian).
Kapan TIDAK menggunakan Markdown:
Gunakan alternatif: Canva, Adobe InDesign, LaTeX (untuk academic paper)
Heading digunakan untuk membuat struktur hierarki dokumen. Markdown mendukung 6 level heading, sama seperti HTML (h1 sampai h6).
Sintaks:
# Heading 1 (Level Tertinggi)
## Heading 2
### Heading 3
#### Heading 4
##### Heading 5
###### Heading 6 (Level Terendah)
Output:
β οΈ Penting:
#) biasanya cuma digunakan sekali untuk judul utama dokumen##) untuk section utama# dan teks headingβ Kesalahan Umum:
#Heading Tanpa Spasi β SALAH
# Heading Dengan Spasi β BENAR
# Judul Utama
#### Sub-section β SALAH (skip level H2 dan H3)
# Judul Utama
## Section Utama
### Sub-section β BENAR (hierarki jelas)
π‘ Tips:
Alternatif Sintaks (untuk H1 dan H2 saja):
# Heading Level 1
## Heading Level 2
Note: Jarang dipakai, lebih baik pakai sintaks #.
Paragraf dibuat dengan memberikan baris kosong di antara teks.
Sintaks:
Ini adalah paragraf pertama.
Ini adalah paragraf kedua.
Ini adalah paragraf ketiga.
Output:
Ini adalah paragraf pertama.
Ini adalah paragraf kedua.
Ini adalah paragraf ketiga.
β Kesalahan Umum:
Ini baris pertama.
Ini baris kedua.
Output: Keduanya akan bergabung jadi satu baris! βIni baris pertama. Ini baris kedua.β
Jika ingin pindah baris tanpa membuat paragraf baru:
Metode 1: Tambah 2 spasi di akhir baris
Baris pertama.Β·Β·
Baris kedua.
(Β·Β· = 2 spasi)
Metode 2: Gunakan tag HTML <br>
Baris pertama.<br>
Baris kedua.
Metode 3: Backslash \ di akhir baris (GFM)
Baris pertama.\
Baris kedua.
π‘ Rekomendasi: Gunakan metode 1 (2 spasi) atau <br> untuk kejelasan.
Garis horizontal berguna untuk memisahkan section/topik.
Sintaks (pilih salah satu, semua sama hasilnya):
---
---
---
Output:
π‘ Tips: Gunakan --- karena paling umum dan mudah dibaca.
Best Practice:
## Section 1
Konten section 1...
---
## Section 2
Konten section 2...
Membuat teks tebal untuk emphasis atau highlight.
Sintaks (pilih salah satu):
**teks tebal dengan dua asterisk**
**teks tebal dengan dua underscore**
Output:
teks tebal dengan dua asterisk
teks tebal dengan dua underscore
π‘ Rekomendasi: Gunakan ** (double asterisk) karena:
Contoh Penggunaan:
Ini adalah **kata penting** dalam kalimat.
**Perhatian:** Jangan lupa submit tugas!
Output:
Ini adalah kata penting dalam kalimat.
Perhatian: Jangan lupa submit tugas!
Membuat teks italic untuk emphasis ringan atau istilah.
Sintaks (pilih salah satu):
_teks italic dengan satu asterisk_
_teks italic dengan satu underscore_
Output:
teks italic dengan satu asterisk
teks italic dengan satu underscore
π‘ Rekomendasi: Gunakan * (single asterisk) untuk konsistensi dengan bold.
Contoh Penggunaan:
Buku _The Pragmatic Programmer_ wajib dibaca.
Istilah _responsive design_ sangat penting di era mobile.
Output:
Buku The Pragmatic Programmer wajib dibaca.
Istilah responsive design sangat penting di era mobile.
Kombinasi bold dan italic untuk extra emphasis.
Sintaks:
**_teks bold dan italic_**
**_teks bold dan italic_**
**_kombinasi dua jenis_**
**_kombinasi dua jenis_**
Output:
teks bold dan italic
π‘ Tips: Gunakan untuk bagian yang sangat penting.
Contoh:
**_PENTING:_** Ujian dimajukan ke Senin!
Output:
PENTING: Ujian dimajukan ke Senin!
Membuat teks dicoret, berguna untuk menunjukkan revisi atau sesuatu yang sudah tidak berlaku.
Sintaks (GitHub Flavored Markdown):
~~teks yang dicoret~~
Output:
teks yang dicoret
Contoh Penggunaan:
Harga lama: ~~Rp 100.000~~
Harga baru: **Rp 75.000**
~~Bug: Login error~~ β
Fixed
Output:
Harga lama: Rp 100.000
Harga baru: Rp 75.000
Bug: Login error β
Fixed
β οΈ Catatan: Strikethrough tidak support di semua Markdown parser. Pastikan menggunakan GFM (GitHub Flavored Markdown).
Sintaks (GFM):
H~2~O
log~10~
Dengan HTML:
H<sub>2</sub>O
Output: H2O
Sintaks (GFM):
X^2^ + Y^2^ = Z^2^
Dengan HTML:
X<sup>2</sup> + Y<sup>2</sup> = Z<sup>2</sup>
Output: X2 + Y2 = Z2
Contoh Penggunaan:
Rumus kimia air adalah H<sub>2</sub>O.
Luas lingkaran = Οr<sup>2</sup>
Footnote reference<sup>1</sup>
Highlight tidak ada di standar Markdown, tapi beberapa platform support.
Sintaks (beberapa parser):
==teks yang di-highlight==
Dengan HTML:
<mark>teks yang di-highlight</mark>
Output: teks yang di-highlight
Contoh:
Jangan lupa <mark>deadline submission 31 Maret 2026</mark>!
Digunakan untuk daftar item yang tidak berurutan.
Sintaks (pilih salah satu):
- Item dengan dash
* Item dengan asterisk
- Item dengan plus
Output:
Item dengan dash
Item dengan asterisk
Item dengan plus
π‘ Rekomendasi: Gunakan - (dash) karena paling umum dan konsisten.
Contoh Penggunaan:
## Kebutuhan Sistem
- Node.js v18 atau lebih baru
- NPM v9 atau lebih baru
- Git version control
- Text editor (VSCode recommended)
Output:
Digunakan untuk daftar item yang berurutan (step-by-step, ranking, dll).
Sintaks:
1. Item pertama
2. Item kedua
3. Item ketiga
Output:
π‘ Tips - Auto Numbering:
Markdown otomatis mengurutkan nomor, jadi Anda bisa tulis semua dengan 1.:
1. Item pertama
1. Item kedua
1. Item ketiga
Output tetap:
Keuntungan: Jika Anda tambah/hapus item, tidak perlu renumber manual!
Contoh Penggunaan:
## Langkah Instalasi
1. Download installer dari website resmi
2. Jalankan file installer
3. Ikuti wizard instalasi
4. Restart komputer
5. Verifikasi instalasi dengan command `node --version`
List di dalam list, berguna untuk struktur hierarki.
Sintaks (gunakan 2 atau 4 spasi untuk indent):
- Item level 1
- Item level 2 (2 spasi indent)
- Item level 3 (4 spasi indent)
- Item level 4
- Item level 1 lagi
- Item level 2
Output:
Mixing Ordered dan Unordered:
1. Tahap Persiapan
- Install Node.js
- Install Git
- Setup text editor
2. Tahap Development
- Write code
- Testing
3. Tahap Deployment
- Build production
- Deploy to server
Output:
π‘ Tips:
Task list berguna untuk to-do list atau tracking progress.
Sintaks (GitHub Flavored Markdown):
- [ ] Task yang belum selesai
- [x] Task yang sudah selesai
- [ ] Task pending
Output:
β οΈ Penting:
- [ ] dan - [x]Contoh Real-World:
## Progress Tugas Besar
### Week 1
- [x] Research dan analisis requirements
- [x] Membuat wireframe
- [x] Design database schema
### Week 2
- [x] Setup project structure
- [x] Implement authentication
- [ ] Implement CRUD operations
### Week 3
- [ ] Testing
- [ ] Documentation
- [ ] Deployment
Nested Task Lists:
- [ ] Frontend Development
- [x] Setup React project
- [x] Create components
- [ ] Styling
- [x] Install Tailwind
- [ ] Design system
- [ ] Backend Development
- [x] Setup Express
- [ ] Create APIs
Sintaks:
[Teks yang tampil](https://url-tujuan.com)
Contoh:
[Google](https://google.com)
[GitHub](https://github.com)
[MDN Web Docs](https://developer.mozilla.org)
Output:
Sintaks:
[Teks Link](https://url.com "Tooltip yang muncul saat hover")
Contoh:
[OpenAI](https://openai.com "Website resmi OpenAI")
Output:
Hover mouse di atas link untuk melihat tooltip!
Sintaks:
[Link ke Section](#nama-section)
Contoh:
Kembali ke [Daftar Isi](#π-daftar-isi)
Lihat [Tips Best Practices](#15-best-practices)
Rules:
-Contoh Konversi:
## 5. Struktur Dasar β #5-struktur-dasar### 5.1 Heading (Judul) β #51-heading-judulBerguna untuk dokumen dengan banyak link yang sama.
Sintaks:
Saya menggunakan [Google][1] dan [GitHub][2] setiap hari.
Lihat dokumentasi di [MDN][mdn] atau [W3Schools][w3].
[1]: https://google.com
[2]: https://github.com
[mdn]: https://developer.mozilla.org
[w3]: https://www.w3schools.com
Output:
Saya menggunakan Google dan GitHub setiap hari.
Keuntungan:
URL otomatis jadi link:
Sintaks:
<https://github.com>
<email@example.com>
Output:
https://github.com
email@example.com
Sintaks:

Komponen:
! - Tanda bahwa ini gambar[Alt Text] - Deskripsi gambar (untuk SEO dan accessibility)(path) - URL atau path file gambarContoh:


Sintaks:

Contoh:

Kombinasi image dan link:
Sintaks:
[](link-url)
Contoh:
[](https://github.com)
Klik gambar β redirect ke link!
Sintaks:
![Logo Perusahaan][logo]
[logo]: ./assets/company-logo.png "Tooltip Logo"
Markdown murni tidak support resize, gunakan HTML:
Sintaks:
<img src="gambar.jpg" alt="Deskripsi" width="300" height="200">
<img src="gambar.jpg" alt="Deskripsi" width="50%">
Contoh:
<img src="https://via.placeholder.com/600x400" alt="Placeholder" width="300">
π‘ Tips Image Best Practices:
./images/pic.jpgkebab-case-naming.jpgSintaks:
| Header 1 | Header 2 | Header 3 |
| -------- | -------- | -------- |
| Row 1 | Data | Data |
| Row 2 | Data | Data |
Output:
| Header 1 | Header 2 | Header 3 |
|---|---|---|
| Row 1 | Data | Data |
| Row 2 | Data | Data |
π‘ Tips:
--- di separator rowSintaks:
| Left Aligned | Center Aligned | Right Aligned |
| :----------- | :------------: | ------------: |
| Text | Text | Text |
| Left | Center | Right |
Rules:
:--- = Left aligned (default):---: = Center aligned---: = Right alignedOutput:
| Left Aligned | Center Aligned | Right Aligned |
|---|---|---|
| Text | Text | Text |
| Left | Center | Right |
Tabel bisa berisi formatting seperti bold, italic, code, link:
Contoh:
| Fitur | Status | Link |
| --------------- | :----: | -------------------------------- |
| Authentication | β
| [Docs](https://example.com/auth) |
| Payment Gateway | π§ | _In Progress_ |
| Email Service | β | **Not Started** |
| API Integration | β
| `GET /api/users` |
Output:
| Fitur | Status | Link |
|---|---|---|
| Authentication | β | Docs |
| Payment Gateway | π§ | In Progress |
| Email Service | β | Not Started |
| API Integration | β | GET /api/users |
Contoh Real-World:
| Nama Package | Version | License | Stars | Description |
| ------------ | ------- | ------- | ----: | ------------- |
| React | 18.2.0 | MIT | 200K | UI Library |
| Express | 4.18.2 | MIT | 60K | Web Framework |
| Mongoose | 7.0.3 | MIT | 25K | MongoDB ODM |
π‘ Tips Membuat Tabel:
β οΈ Limitasi Tabel Markdown:
Solusi untuk Advanced Tables: Gunakan HTML tables jika butuh fitur advanced.
Untuk code pendek di dalam kalimat.
Sintaks:
Gunakan fungsi `console.log()` untuk debugging.
Variabel `userName` tidak boleh kosong.
Install dengan command `npm install express`
Output:
Gunakan fungsi console.log() untuk debugging.
Variabel userName tidak boleh kosong.
Install dengan command npm install express
Kapan Menggunakan Inline Code:
Untuk multiple lines of code.
Sintaks:
```
kode tanpa syntax highlighting
```
Contoh:
function hello() {
return "Hello World";
}
Tambahkan nama bahasa setelah opening backticks.
Sintaks:
```javascript
function hello() {
console.log("Hello World");
}
```
Output:
function hello() {
console.log("Hello World");
}
Supported Languages (tergantung parser):
javascript, typescript, python, java, cpp, c, csharp,
php, ruby, go, rust, swift, kotlin, sql, html, css,
scss, json, yaml, xml, markdown, bash, shell,
powershell, dockerfile, nginx, apache, etc.
// Function untuk calculate sum
function sum(a, b) {
return a + b;
}
const result = sum(5, 3);
console.log(result); // Output: 8
# Function untuk calculate sum
def sum(a, b):
return a + b
result = sum(5, 3)
print(result) # Output: 8
// Class Calculator
public class Calculator {
public static int sum(int a, int b) {
return a + b;
}
public static void main(String[] args) {
int result = sum(5, 3);
System.out.println(result); // Output: 8
}
}
-- Query untuk select users
SELECT
id,
username,
email,
created_at
FROM users
WHERE status = 'active'
ORDER BY created_at DESC
LIMIT 10;
{
"name": "John Doe",
"age": 25,
"email": "john@example.com",
"skills": ["JavaScript", "Python", "SQL"],
"isActive": true
}
# Configuration file
server:
host: localhost
port: 3000
ssl: true
database:
type: mongodb
url: mongodb://localhost:27017
name: myapp_db
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8" />
<title>Hello World</title>
</head>
<body>
<h1>Hello, Markdown!</h1>
<p>This is HTML code.</p>
</body>
</html>
/* Styling for buttons */
.btn-primary {
background-color: #007bff;
color: white;
padding: 10px 20px;
border: none;
border-radius: 5px;
cursor: pointer;
transition: all 0.3s ease;
}
.btn-primary:hover {
background-color: #0056b3;
transform: translateY(-2px);
}
#!/bin/bash
# Script for deployment
echo "Starting deployment..."
# Pull latest code
git pull origin main
# Install dependencies
npm install
# Build project
npm run build
# Restart server
pm2 restart app
echo "Deployment completed!"
Beberapa Markdown renderers support line numbers dan line highlighting.
GitHub (line highlighting):
```javascript {2-3}
function calculate() {
const a = 10; // highlighted
const b = 20; // highlighted
return a + b;
}
```
Docusaurus:
```javascript {2,4} showLineNumbers
function example() {
console.log("Line 2 highlighted");
const x = 10;
console.log("Line 4 highlighted");
}
```
π‘ Note: Feature ini tergantung platform/renderer yang digunakan.
Menampilkan perubahan code (additions dan deletions).
Sintaks:
```diff
function hello() {
- console.log("Hello");
+ console.log("Hello World!");
}
```
Output:
function hello() {
- console.log("Hello");
+ console.log("Hello World!");
}
Sangat berguna untuk:
Digunakan untuk kutipan atau highlight informasi penting.
Sintaks:
> Ini adalah blockquote.
> Bisa multiple lines.
Output:
Ini adalah blockquote. Bisa multiple lines.
Sintaks:
> "The best way to predict the future is to invent it."
>
> β Alan Kay
Output:
βThe best way to predict the future is to invent it.β
β Alan Kay
Sintaks:
> Level 1 quote
>
> > Level 2 quote (nested)
> >
> > > Level 3 quote
Output:
Level 1 quote
Level 2 quote (nested)
Level 3 quote
Blockquote bisa berisi Markdown formatting:
Sintaks:
> ### Catatan Penting
>
> Ini adalah informasi **sangat penting** yang harus diperhatikan.
>
> - Point pertama
> - Point kedua
>
> Lihat [dokumentasi](https://example.com) untuk detail.
Output:
Catatan Penting
Ini adalah informasi sangat penting yang harus diperhatikan.
- Point pertama
- Point kedua
Lihat dokumentasi untuk detail.
GitHub Alerts (baru di GFM 2023):
> [!NOTE]
> Informasi berguna yang users perlu tahu.
> [!TIP]
> Tips helpful untuk users.
> [!IMPORTANT]
> Informasi krusial untuk user success.
> [!WARNING]
> Konten yang perlu immediate user attention untuk avoid problems.
> [!CAUTION]
> Potential risks atau negative outcomes.
Output di GitHub:
[!NOTE] Informasi berguna yang users perlu tahu.
[!WARNING] Konten yang perlu immediate user attention untuk avoid problems.
β οΈ Note: Feature ini spesifik untuk GitHub dan beberapa platform. Tidak semua Markdown parser support.
Alternative dengan Emoji:
> π‘ **TIP**: Gunakan keyboard shortcuts untuk efisiensi!
> β οΈ **WARNING**: Jangan commit credentials ke repository!
> β
**SUCCESS**: Installation completed!
> β **ERROR**: Database connection failed.
> π **NOTE**: Fitur ini masih dalam tahap beta.
Footnote berguna untuk referensi atau additional information tanpa ganggu flow reading.
Sintaks:
Ini adalah kalimat dengan footnote.[^1]
Ini kalimat lain dengan footnote.[^note]
[^1]: Ini adalah isi footnote pertama.
[^note]: Ini adalah isi footnote yang punya nama custom.
Output:
Ini adalah kalimat dengan footnote.1
Ini kalimat lain dengan footnote.2
β οΈ Support: GitHub, Obsidian, Pandoc, Jekyll. Tidak semua parser support.
Sintaks (Markdown Extra, Pandoc):
Term 1
: Definition 1
Term 2
: Definition 2a
: Definition 2b
Contoh:
HTML
: HyperText Markup Language
CSS
: Cascading Style Sheets
: Used for styling web pages
JavaScript
: Programming language for web
: Runs in the browser
Sintaks (Markdown Extra):
The HTML specification is maintained by the W3C.
_[HTML]: HyperText Markup Language
_[W3C]: World Wide Web Consortium
Hover mouse di atas βHTMLβ dan βW3Cβ akan show tooltip dengan kepanjangan.
β
Done
β Failed
π Deploy
π Note
:white_check_mark: Done
:x: Failed
:rocket: Deploy
:memo: Note
:tada: Celebrate!
:bug: Bug
:fire: Hot fix
:sparkles: New feature
Output:
β
Done
β Failed
π Deploy
π Note
π Celebrate!
π Bug
π₯ Hot fix
β¨ New feature
Emoji Shortcode Reference: Emoji Cheat Sheet
Markdown mendukung HTML inline untuk fitur yang tidak ada di Markdown.
Contoh:
<div style="background: #f0f0f0; padding: 20px; border-radius: 8px;">
<h3>Custom Box</h3>
<p>Ini adalah <strong>custom HTML</strong> di dalam Markdown.</p>
</div>
<details>
<summary>Klik untuk expand</summary>
Ini adalah konten yang tersembunyi.
- Item 1
- Item 2
</details>
<kbd>Ctrl</kbd> + <kbd>C</kbd> untuk copy
Kapan Menggunakan HTML:
β οΈ Hati-hati:
Banyak platform support LaTeX math equations.
Inline Math:
Rumus Pythagoras: $a^2 + b^2 = c^2$
Output:
Rumus Pythagoras: $a^2 + b^2 = c^2$
Block Math:
$$
E = mc^2
$$
$$
\int_{a}^{b} x^2 dx = \frac{b^3 - a^3}{3}
$$
Output:
\[E = mc^2\]Platform Support:
README.md adalah first impression project Anda. Harus berisi:
# Project Name
Short description tentang project.


## π About
Penjelasan detail tentang project:
- Apa masalah yang diselesaikan
- Siapa target users
- Apa unique value proposition
## β¨ Features
- β
Feature 1
- β
Feature 2
- β
Feature 3
- π§ Feature 4 (coming soon)
## π Quick Start
### Prerequisites
- Node.js >= 18
- PostgreSQL >= 14
- Redis (optional)
### Installation
```bash
# Clone repository
git clone https://github.com/username/project.git
# Navigate to directory
cd project
# Install dependencies
npm install
# Setup environment
cp .env.example .env
# Run migrations
npm run migrate
# Start development server
npm run dev
```
Full documentation: docs.project.com
Contributions welcome! Please read CONTRIBUTING.md
git checkout -b feature/AmazingFeature)git commit -m 'Add AmazingFeature')git push origin feature/AmazingFeature)MIT License. See LICENSE for details.
### 13.2 CONTRIBUTING.md
Guidelines untuk contributors.
```markdown
# Contributing to Project Name
Thank you untuk interest contribute! π
## How to Contribute
### Reporting Bugs
Include:
- OS dan browser version
- Steps to reproduce
- Expected vs actual behavior
- Screenshots (kalau ada)
### Suggesting Features
- Explain use case
- Provide examples
- Discuss alternatives considered
### Code Contributions
1. Check existing issues/PRs
2. Discuss major changes terlebih dahulu
3. Follow code style
4. Write tests
5. Update documentation
## Development Setup
```bash
npm install
npm run dev
npm test
npm run lint before commitFollow Conventional Commits:
feat: add user authenticationfix: resolve login bugdocs: update READMEstyle: format coderefactor: restructure componentstest: add unit testsBe respectful and inclusive. See CODE_OF_CONDUCT.md
### 13.3 CHANGELOG.md
Track semua perubahan versi project.
```markdown
# Changelog
All notable changes to this project will be documented in this file.
## [2.0.0] - 2026-03-31
### Added
- User authentication with JWT
- Password reset functionality
- Email verification
- Two-factor authentication
### Changed
- Updated database schema
- Migrated from REST to GraphQL
- Improved error handling
### Fixed
- Memory leak in WebSocket connection
- Race condition in cart checkout
- XSS vulnerability in search
### Removed
- Deprecated v1 API endpoints
- Legacy authentication system
## [1.5.0] - 2026-02-15
### Added
- Dark mode support
- Export data to CSV
- Bulk operations
### Fixed
- File upload size limit
- Timezone issues
## [1.0.0] - 2026-01-01
### Added
- Initial release
- Basic CRUD operations
- User management
- Role-based access control
# API Documentation
Base URL: `https://api.example.com/v1`
## Authentication
All API requests require a Bearer token:
```bash
Authorization: Bearer YOUR_TOKEN_HERE
```
GET /users
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
| page | number | No | Page number (default: 1) |
| limit | number | No | Items per page (default: 10) |
Response:
{
"success": true,
"data": [
{
"id": 1,
"username": "johndoe",
"email": "john@example.com"
}
],
"pagination": {
"page": 1,
"limit": 10,
"total": 100
}
}
POST /users
Body:
{
"username": "johndoe",
"email": "john@example.com",
"password": "secret123"
}
Response:
{
"success": true,
"data": {
"id": 1,
"username": "johndoe",
"email": "john@example.com"
}
}
Error Responses:
| Code | Description |
|---|---|
| 400 | Bad Request - Invalid input |
| 401 | Unauthorized - Invalid token |
| 404 | Not Found - Resource not exists |
| 500 | Internal Server Error |
### 13.5 Issue Templates (GitHub)
Create file `.github/ISSUE_TEMPLATE/bug_report.md`:
```markdown
---
name: Bug Report
about: Report a bug
title: '[BUG] '
labels: bug
assignees: ''
---
## Describe the Bug
Clear dan concise description of the bug.
## To Reproduce
Steps to reproduce:
1. Go to '...'
2. Click on '...'
3. Scroll down to '...'
4. See error
## Expected Behavior
What you expected to happen.
## Screenshots
If applicable, add screenshots.
## Environment
- OS: [e.g. Windows 11]
- Browser: [e.g. Chrome 120]
- Version: [e.g. 1.0.0]
## Additional Context
Add any other context about the problem here.
Why VSCode:
Essential Extensions:
Shortcut VSCode:
Ctrl+Shift+V - Open previewCtrl+K V - Open preview side by sideCtrl+B - Bold selected textCtrl+I - Italic selected text| Editor | Platform | Price | Best For |
|---|---|---|---|
| Typora | All | $15 | WYSIWYG, clean UI |
| Obsidian | All | Free | Note-taking, PKM |
| Notion | All | Free | All-in-one workspace |
| Bear | Mac/iOS | Free | Apple ecosystem |
| iA Writer | All | $30 | Distraction-free |
| Mark Text | All | Free | FOSS alternative to Typora |
No installation required:
Install:
# Windows (with Chocolatey)
choco install pandoc
# Mac
brew install pandoc
# Linux
sudo apt install pandoc
Convert Markdown to PDF:
pandoc input.md -o output.pdf
Convert Markdown to DOCX:
pandoc input.md -o output.docx
Convert Markdown to HTML:
pandoc input.md -o output.html --standalone
With custom CSS:
pandoc input.md -o output.html --css=style.css
Build websites/blogs dari Markdown files:
Quick Start Example (Hugo):
# Install Hugo
brew install hugo
# Create new site
hugo new site my-blog
# Add theme
cd my-blog
git submodule add https://github.com/theNewDynamic/gohugo-theme-ananke themes/ananke
# Create content
hugo new posts/my-first-post.md
# Start server
hugo server -D
---
marp: true
theme: default
---
# Slide 1
Content of slide 1
---
# Slide 2
- Point 1
- Point 2
β DO:
# Main Title (only one H1)
Brief introduction here.
## Section 1
Content for section 1.
### Subsection 1.1
Detailed content.
### Subsection 1.2
More content.
## Section 2
Content for section 2.
β DONβT:
# Title
### Subsection (skipped H2)
#No space after hash
## Empty Section
(no content)
Conventions:
β Good:
getting-started.md
api-documentation.md
2026-03-31-my-blog-post.md
installation-guide.md
β Bad:
doc.md
Document 1.md
my file.md
GUIDE.MD (inconsistent casing)
β The thing that you need to do is to install the application
β
Install the application
β The button should be clicked by the user
β
Click the button
β One very long paragraph with too much information that makes it hard to read...
β
Short paragraph introducing concept.
Another paragraph elaborating on the concept.
Third paragraph with examples.
β Always specify language:
β
const x = 10;
β
```javascript
const x = 10;
β
**Add comments for clarity:**
```javascript
// Initialize counter
let count = 0;
// Increment function
function increment() {
count++;
}
β Use descriptive link text:
β Click [here](https://example.com) for docs
β
Read the [documentation](https://example.com)
β [https://example.com](https://example.com)
β
Visit our [website](https://example.com)
β Always include alt text:
β 
β

β Organize images in folder:
project/
βββ README.md
βββ docs/
β βββ guide.md
β βββ api.md
βββ images/
βββ screenshot1.png
βββ diagram.png
β Use relative paths:

β Consistent bullet style:
β
- Item 1
* Item 2
- Item 3
β
- Item 1
- Item 2
- Item 3
β Parallel structure:
β
- Installing dependencies
- Run the server
- Tests should be written
β
- Install dependencies
- Run the server
- Write tests
Use markdownlint to enforce consistency:
.markdownlintrc:
{
"default": true,
"MD013": false,
"MD033": false
}
Install:
npm install -g markdownlint-cli
Run:
markdownlint '**/*.md'
Markdown adalah skill essential di era digital, terutama untuk:
β Produktivitas Tinggi
β Portabilitas
β Profesionalisme
β Fleksibilitas
30-Day Markdown Challenge:
Ideas untuk latihan:
Cara mulai:
markdown| Mistake | Problem | Solution |
|---|---|---|
#Heading |
No space | # Heading |
| Multiple H1 | Bad structure | One H1 per document |
| Skip heading levels | Wrong hierarchy | Use proper nesting |
| No alt text | Accessibility | Always add  |
| Dead links | Broken navigation | Check links regularly |
| Huge images | Slow loading | Optimize before upload |
| No code language | No highlighting | ` ```javascript ` |
| Action | Shortcut |
|---|---|
| Bold | Ctrl + B |
| Italic | Ctrl + I |
| Toggle preview | Ctrl + Shift + V |
| Side-by-side preview | Ctrl + K V |
| Insert link | Ctrl + Shift + L |
| Format document | Shift + Alt + F |