הכוונה – איך לפתח פרויקט Full-Stack – אתר לבלוג אישי מקצועי

הכוונה – איך לפתח פרויקט Full-Stack – אתר לבלוג אישי מקצועי

במאמר זה נלמד כיצד לפתח אתר לבלוג אישי מקצועי צעד אחר צעד. נשתמש בטכנולוגיות מודרניות כמו React לצד ה-Client ו-Node.js לצד ה-Server, ונלמד כיצד לחבר את כל החלקים יחד כדי ליצור בלוג שימושי ומקצועי.

שלב ראשון: תכנון ועיצוב

השלב הראשון בפיתוח הפרויקט הוא תכנון הבלוג. נתחיל בעיצוב הממשק משתמש (UI) ובתכנון בסיס הנתונים שיכיל את הפוסטים, המשתמשים והתגובות. חשוב לקבוע מה יהיו הפונקציות העיקריות של הבלוג, כמו כתיבת פוסטים, הצגת פוסטים קיימים, ניהול משתמשים ותצוגת תגובות.

שלב שני: פיתוח Front-End

בשלב הזה נתחיל בפיתוח הצד הלקוח של הבלוג באמצעות React. נבנה את המבנה הבסיסי של הבלוג וניצור את הקומפוננטות הדרושות.

יצירת מבנה התיקיות

נתחיל ביצירת מבנה התיקיות לפרויקט. חשוב לשמור על מבנה מסודר כדי להקל על הפיתוח והתחזוקה.

mkdir personal-blog
cd personal-blog
npx create-react-app client
mkdir server
cd server
npm init -y

פיתוח קומפוננטת הצגת פוסטים

ניצור קומפוננטה ב-React שתציג את הפוסטים בבלוג.

import React, { useState, useEffect } from 'react';

function PostList() {
  const [posts, setPosts] = useState([]);

  useEffect(() => {
    fetch('/api/posts')
      .then(response => response.json())
      .then(data => setPosts(data));
  }, []);

  return (
    <div>
      {posts.map(post => (
        <div key={post.id}>
          <h2>{post.title}</h2>
          <p>{post.content}</p>
        </div>
      ))}
    </div>
  );
}

export default PostList;

שלב שלישי: פיתוח Back-End

בשלב הזה נפתח את הצד השרת של הבלוג באמצעות Node.js ו-Express. ניצור API שינהל את הפוסטים והמשתמשים ויתקשר עם בסיס הנתונים.

הגדרת השרת ויצירת API

נגדיר את השרת ונתחיל ביצירת מסלולי API שיטפלו בפניות מהלקוח. נשתמש ב-Express ליצירת השרת וב-MongoDB כבסיס הנתונים.

cd ../server
npm install express mongoose cors
const express = require('express');
const mongoose = require('mongoose');
const cors = require('cors');

const app = express();
app.use(cors());
app.use(express.json());

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

const postSchema = new mongoose.Schema({
  title: String,
  content: String,
  date: Date
});

const Post = mongoose.model('Post', postSchema);

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

app.post('/api/posts', async (req, res) => {
  const post = new Post(req.body);
  await post.save();
  res.sendStatus(201);
});

app.listen(5000, () => {
  console.log('Server is running on port 5000');
});

חיבור ה-Front-End ל-Back-End

לאחר שהגדרנו את ה-API, נחבר את ה-Front-End ל-Back-End כדי לאפשר שליפה והצגת נתונים מתוך בסיס הנתונים.

useEffect(() => {
  fetch('http://localhost:5000/api/posts')
    .then(response => response.json())
    .then(data => setPosts(data));
}, []);

שלב רביעי: ניהול משתמשים ואבטחה

בשלב זה נבנה את המערכת לניהול משתמשים ואבטחת הנתונים. נשתמש ב-JWT לאימות משתמשים וב-BCrypt להצפנת סיסמאות.

npm install jsonwebtoken bcryptjs
const jwt = require('jsonwebtoken');
const bcrypt = require('bcryptjs');

const userSchema = new mongoose.Schema({
  username: String,
  password: String
});

const User = mongoose.model('User', userSchema);

app.post('/api/register', async (req, res) => {
  const hashedPassword = await bcrypt.hash(req.body.password, 10);
  const user = new User({ username: req.body.username, password: hashedPassword });
  await user.save();
  res.sendStatus(201);
});

app.post('/api/login', async (req, res) => {
  const user = await User.findOne({ username: req.body.username });
  if (user && await bcrypt.compare(req.body.password, user.password)) {
    const token = jwt.sign({ id: user._id }, 'secret');
    res.json({ token });
  } else {
    res.sendStatus(401);
  }
});

שלב חמישי: פריסה ותחזוקה

בשלב זה נפרוס את הפרויקט על גבי שרת וננהל את התחזוקה השוטפת. נשתמש בכלים כמו Docker ו-Kubernetes לפריסה ולניהול הסביבה.

docker build -t personal-blog .
docker run -p 80:80 personal-blog

שימוש ב-Docker ליצירת קונטיינר

Docker מאפשר לנו ליצור קונטיינרים המכילים את כל התלויות של האפליקציה שלנו, מה שמבטיח שהאפליקציה תפעל באותו אופן בכל סביבה.

docker build -t personal-blog .
docker run -p 80:80 personal-blog

אם אתם מעוניינים ללמוד בצורה מעמיקה יותר אתם מוזמנים להתייעץ איתנו על קורס Full-Stack.

שתפו את הפוסט

דילוג לתוכן