Master Node.js: 12 Proyek untuk Menjadi Developer Handal!

Tingkatkan keterampilan Anda dengan 12 proyek Master Node.js yang menarik! Temukan cara menjadi developer handal dan bawa karier Anda ke level berikutnya. Bergabunglah sekarang!

By WGS INDONESIA
4.9/4.9
Indonesia
Rp 43,750.00 GRATIS
E-COURSE banner with text and icons representing Artificial Intelligence and video learning

Detail Pembelajaran

Master Node.js: 12 Proyek untuk Menjadi Developer Handal!
  • Node.js, Pengembangan Web, Proyek Programming, Developer Handal, Pembelajaran Teknologi

Baca Online

Master Node.js: 12 Proyek untuk Menjadi Developer Handal!

Daftar Isi

  1. Pengenalan Node.js
  2. Setup Lingkungan Pengembangan
  3. Proyek 1: Server HTTP Sederhana
  4. Proyek 2: REST API dengan Express
  5. Proyek 3: CRUD dengan MongoDB
  6. Proyek 4: Autentikasi User dengan JWT
  7. Proyek 5: Real-time Chat dengan Socket.io
  8. Proyek 6: Upload File dan Penyimpanan
  9. Proyek 7: Task Scheduler dengan Node-cron
  10. Proyek 8: Testing dengan Jest
  11. Proyek 9: Deployment ke Heroku
  12. Proyek 10: Microservices dengan Node.js
  13. Proyek 11: GraphQL API
  14. Proyek 12: Integrasi dengan Third-party API
  15. Sumber Belajar dan Source Code

1. Pengenalan Node.js

Node.js adalah runtime JavaScript yang berjalan di luar browser, memungkinkan Anda membuat aplikasi server-side yang cepat dan scalable. Dengan Node.js, Anda dapat menggunakan JavaScript untuk backend development, membuat server, API, dan banyak lagi.

Ilustrasi logo Node.js berwarna hijau dengan gambar server dan kode di latar belakang

Node.js menggunakan event-driven, non-blocking I/O model yang membuatnya efisien dan cocok untuk aplikasi real-time dan data-intensive.

2. Setup Lingkungan Pengembangan

Untuk mulai belajar Node.js, Anda perlu menyiapkan lingkungan pengembangan:

  1. Install Node.js versi terbaru.
  2. Gunakan editor kode seperti Visual Studio Code .
  3. Kenali npm (Node Package Manager) untuk mengelola paket dan dependensi.
  4. Pelajari cara menjalankan file JavaScript dengan perintah node filename.js .
Ilustrasi developer sedang mengatur lingkungan pengembangan dengan Node.js dan Visual Studio Code di layar komputer

Setelah setup, Anda siap membuat proyek Node.js pertama Anda!

3. Proyek 1: Server HTTP Sederhana

Kita akan membuat server HTTP sederhana yang merespon permintaan dengan teks "Hello World".

const http = require('http');

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World dari Node.js!');
});

const PORT = 3000;
server.listen(PORT, () => {
  console.log(`Server berjalan di http://localhost:${PORT}`);
});

      

Jalankan kode ini dengan perintah node server.js dan buka http://localhost:3000 di browser Anda.

Tampilan terminal yang menunjukkan server Node.js berjalan di localhost port 3000

4. Proyek 2: REST API dengan Express

Express adalah framework minimalis untuk Node.js yang memudahkan pembuatan REST API.

const express = require('express');
const app = express();
const PORT = 3000;

app.get('/api/hello', (req, res) => {
  res.json({ message: 'Halo dari Express!' });
});

app.listen(PORT, () => {
  console.log(`Server Express berjalan di http://localhost:${PORT}`);
});

      

Install Express dengan npm install express . Jalankan server dan akses http://localhost:3000/api/hello untuk melihat response JSON.

Tampilan browser yang menampilkan response JSON dari REST API Express dengan pesan Halo dari Express!

5. Proyek 3: CRUD dengan MongoDB

Kita akan membuat aplikasi CRUD sederhana menggunakan MongoDB dan Mongoose.

const express = require('express');
const mongoose = require('mongoose');
const app = express();
const PORT = 3000;

app.use(express.json());

mongoose.connect('mongodb://localhost:27017/nodecrud', {
  useNewUrlParser: true,
  useUnifiedTopology: true,
});

const ItemSchema = new mongoose.Schema({
  name: String,
  description: String,
});

const Item = mongoose.model('Item', ItemSchema);

app.post('/items', async (req, res) => {
  const item = new Item(req.body);
  await item.save();
  res.status(201).json(item);
});

app.get('/items', async (req, res) => {
  const items = await Item.find();
  res.json(items);
});

app.put('/items/:id', async (req, res) => {
  const item = await Item.findByIdAndUpdate(req.params.id, req.body, { new: true });
  res.json(item);
});

app.delete('/items/:id', async (req, res) => {
  await Item.findByIdAndDelete(req.params.id);
  res.json({ message: 'Item deleted' });
});

app.listen(PORT, () => {
  console.log(`Server berjalan di http://localhost:${PORT}`);
});

      

Pastikan MongoDB sudah berjalan di komputer Anda. Install dependensi dengan npm install express mongoose .

Ilustrasi diagram CRUD operasi pada database MongoDB dengan Node.js dan Express

6. Proyek 4: Autentikasi User dengan JWT

Implementasi autentikasi menggunakan JSON Web Token (JWT) untuk keamanan API.

const express = require('express');
const jwt = require('jsonwebtoken');
const app = express();
const PORT = 3000;

app.use(express.json());

const users = [{ id: 1, username: 'user1', password: 'pass123' }];

app.post('/login', (req, res) => {
  const { username, password } = req.body;
  const user = users.find(u => u.username === username && u.password === password);
  if (!user) return res.status(401).json({ message: 'Invalid credentials' });

  const token = jwt.sign({ id: user.id, username: user.username }, 'secretkey', { expiresIn: '1h' });
  res.json({ token });
});

const authenticate = (req, res, next) => {
  const authHeader = req.headers.authorization;
  if (!authHeader) return res.status(401).json({ message: 'No token provided' });

  const token = authHeader.split(' ')[1];
  jwt.verify(token, 'secretkey', (err, user) => {
    if (err) return res.status(403).json({ message: 'Invalid token' });
    req.user = user;
    next();
  });
};

app.get('/profile', authenticate, (req, res) => {
  res.json({ message: `Welcome ${req.user.username}!` });
});

app.listen(PORT, () => {
  console.log(`Server berjalan di http://localhost:${PORT}`);
});

      

Install paket dengan npm install express jsonwebtoken . Endpoint /login mengeluarkan token, dan /profile hanya bisa diakses dengan token valid.

Diagram alur autentikasi menggunakan JSON Web Token (JWT) pada aplikasi Node.js

7. Proyek 5: Real-time Chat dengan Socket.io

Membuat aplikasi chat real-time menggunakan Socket.io.

const express = require('express');
const http = require('http');
const { Server } = require('socket.io');

const app = express();
const server = http.createServer(app);
const io = new Server(server);

const PORT = 3000;

io.on('connection', (socket) => {
  console.log('User connected:', socket.id);

  socket.on('chat message', (msg) => {
    io.emit('chat message', msg);
  });

  socket.on('disconnect', () => {
    console.log('User disconnected:', socket.id);
  });
});

server.listen(PORT, () => {
  console.log(`Server berjalan di http://localhost:${PORT}`);
});

      

Install dengan npm install express socket.io . Buat client HTML untuk mengirim dan menerima pesan chat secara real-time.

Ilustrasi aplikasi chat real-time dengan pesan yang muncul secara langsung menggunakan Socket.io

8. Proyek 6: Upload File dan Penyimpanan

Membuat API untuk upload file menggunakan Multer dan menyimpan file di server.

const express = require('express');
const multer = require('multer');
const path = require('path');

const app = express();
const PORT = 3000;

const storage = multer.diskStorage({
  destination: (req, file, cb) => {
    cb(null, 'uploads/');
  },
  filename: (req, file, cb) => {
    cb(null, Date.now() + path.extname(file.originalname));
  },
});

const upload = multer({ storage });

app.post('/upload', upload.single('file'), (req, res) => {
  res.json({ message: 'File berhasil diupload', filename: req.file.filename });
});

app.listen(PORT, () => {
  console.log(`Server berjalan di http://localhost:${PORT}`);
});

      

Install dengan npm install express multer . Pastikan folder uploads sudah dibuat di root proyek.

Ilustrasi proses upload file melalui API menggunakan Multer di Node.js

9. Proyek 7: Task Scheduler dengan Node-cron

Menjadwalkan tugas otomatis menggunakan paket node-cron.

const cron = require('node-cron');

cron.schedule('0 9 * * *', () => {
  console.log('Menjalankan tugas setiap jam 9 pagi');
});

console.log('Scheduler berjalan...');

      

Install dengan npm install node-cron . Contoh di atas menjalankan fungsi setiap jam 9 pagi setiap hari.

Ilustrasi jadwal tugas otomatis berjalan setiap jam 9 pagi menggunakan node-cron di Node.js

10. Proyek 8: Testing dengan Jest

Menulis unit test untuk aplikasi Node.js menggunakan Jest.

// math.js
function tambah(a, b) {
  return a + b;
}
module.exports = { tambah };

// math.test.js
const { tambah } = require('./math');

test('menambahkan 1 + 2 sama dengan 3', () => {
  expect(tambah(1, 2)).toBe(3);
});

      

Install Jest dengan npm install --save-dev jest . Jalankan test dengan npx jest .

Tampilan terminal yang menunjukkan hasil unit testing menggunakan Jest pada aplikasi Node.js

11. Proyek 9: Deployment ke Heroku

Langkah-langkah deploy aplikasi Node.js ke platform Heroku.

  1. Install Heroku CLI dan login dengan heroku login .
  2. Inisialisasi git di proyek Anda dan buat repository.
  3. Buat aplikasi Heroku dengan heroku create nama-aplikasi .
  4. Push kode ke Heroku dengan git push heroku main .
  5. Heroku akan otomatis build dan menjalankan aplikasi Anda.
Ilustrasi proses deployment aplikasi Node.js ke platform Heroku dengan terminal dan logo Heroku

Setelah deploy, aplikasi Anda dapat diakses secara online melalui URL Heroku.

12. Proyek 10: Microservices dengan Node.js

Membuat arsitektur microservices sederhana dengan beberapa service Node.js yang berkomunikasi.

Contoh: Service User dan Service Order berjalan terpisah, berkomunikasi via HTTP atau message queue.

// Service User (port 3001)
const express = require('express');
const app = express();
app.get('/users', (req, res) => {
  res.json([{ id: 1, name: 'Budi' }]);
});
app.listen(3001);

// Service Order (port 3002)
const express = require('express');
const axios = require('axios');
const app = express();
app.get('/orders', async (req, res) => {
  const users = await axios.get('http://localhost:3001/users');
  res.json({ orders: [{ id: 1, user: users.data[0] }] });
});
app.listen(3002);

      

Install axios dengan npm install axios untuk komunikasi HTTP antar service.

Diagram arsitektur microservices dengan dua service Node.js yang saling berkomunikasi

13. Proyek 11: GraphQL API

Membuat API menggunakan GraphQL dengan Apollo Server.

const { ApolloServer, gql } = require('apollo-server');

const typeDefs = gql`
  type Query {
    hello: String
  }
`;

const resolvers = {
  Query: {
    hello: () => 'Halo dari GraphQL!',
  },
};

const server = new ApolloServer({ typeDefs, resolvers });

server.listen().then(({ url }) => {
  console.log(`Server GraphQL berjalan di ${url}`);
});

      

Install dengan npm install apollo-server graphql . Jalankan dan akses playground GraphQL untuk mencoba query.

Tampilan playground GraphQL yang menampilkan query dan response dari server Apollo

14. Proyek 12: Integrasi dengan Third-party API

Menghubungkan aplikasi Node.js dengan API eksternal, misalnya API cuaca.

const express = require('express');
const axios = require('axios');
const app = express();
const PORT = 3000;

app.get('/weather/:city', async (req, res) => {
  const city = req.params.city;
  try {
    const response = await axios.get(
      `https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=YOUR_API_KEY&units=metric`
    );
    res.json(response.data);
  } catch (error) {
    res.status(500).json({ message: 'Error mengambil data cuaca' });
  }
});

app.listen(PORT, () => {
  console.log(`Server berjalan di http://localhost:${PORT}`);
});

      

Ganti YOUR_API_KEY dengan API key dari OpenWeatherMap . Install axios untuk request HTTP.

Ilustrasi integrasi aplikasi Node.js dengan API cuaca eksternal OpenWeatherMap

Sumber Belajar dan Source Code

Berikut beberapa sumber belajar dan repository yang bisa Anda gunakan untuk memperdalam Node.js:

Repository Source Code

Ilustrasi buku, laptop, dan ikon video sebagai simbol sumber belajar dan repository source code Node.js

Edukasi Terkait