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

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

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

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

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

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

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

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

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

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

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

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

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

function RecipeList() {
  const [recipes, setRecipes] = useState([]);

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

  return (
    <div>
      {recipes.map(recipe => (
        <div key={recipe.id}>
          <h2>{recipe.name}</h2>
          <p>{recipe.description}</p>
          <p>{recipe.ingredients.join(', ')}</p>
        </div>
      ))}
    </div>
  );
}

export default RecipeList;

שלב שלישי: פיתוח 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/recipe-app', { useNewUrlParser: true, useUnifiedTopology: true });

const recipeSchema = new mongoose.Schema({
  name: String,
  description: String,
  ingredients: [String]
});

const Recipe = mongoose.model('Recipe', recipeSchema);

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

app.post('/api/recipes', async (req, res) => {
  const recipe = new Recipe(req.body);
  await recipe.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/recipes')
    .then(response => response.json())
    .then(data => setRecipes(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 recipe-app .
docker run -p 80:80 recipe-app

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

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

docker build -t recipe-app .
docker run -p 80:80 recipe-app

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

שתפו את הפוסט

דילוג לתוכן