אופן העבודה
הגרסה החדשה של פלטפורמת Workway נבנית מאפס על ידי הצוות שלנו. אנחנו לומדים מהטעויות שעשינו בגרסה הקודמת, והפעם הקוד של הפלטפורמה יהיה מסודר וברור לכל חברי הצוות!
בפרויקט הזה אנחנו עובדים עם React ו-Tailwind CSS בצד ה-Frontend, ועם Strapi בצד ה-Backend. חשוב לשמור על קוד מסודר ומאורגן כדי שנוכל להתרחב בקלות בהמשך ולהוסיף פיצ'רים חדשים בצורה יעילה.
מבנה הפרויקט:
הפלטפורמה שלנו מחולקת לשלושה חלקים עיקריים:
- משתמשים לא רשומים (מבקרים)
- משתמשים רשומים (לקוחות)
- פרילנסרים
כדי לתמוך במבנה הזה, נשתמש בארגון הבא של הקבצים והתיקיות:
src/
├── components/ # קומפוננטות כלליות שמשמשות בכל האתר
│ ├── Header/
│ │ ├── Header.js
│ │ └── Header.css
│ ├── Footer/
│ │ ├── Footer.js
│ │ └── Footer.css
│ └── ... # קומפוננטות נוספות
├── layouts/ # תבניות (Layouts) עבור חלקים שונים באתר
│ ├── PublicLayout.js # תבנית למשתמשים לא רשומים
│ ├── UserLayout.js # תבנית למשתמשים רשומים
│ ├── FreelancerLayout.js # תבנית לפרילנסרים
├── pages/ # דפי האתר מחולקים לפי סוג המשתמש
│ ├── public/ # דפים למשתמשים לא רשומים
│ │ ├── HomePage.js
│ │ ├── ListingsPage.js
│ │ ├── ListingDetailsPage.js
│ │ ├── JobsPage.js
│ │ ├── JobDetailsPage.js
│ │ └── FreelancerProfilePage.js
│ ├── user/ # דפים למשתמשים רשומים
│ │ ├── DashboardPage.js
│ │ ├── CreateJobPage.js
│ │ └── SettingsPage.js
│ ├── freelancer/ # דפים לפרילנסרים
│ │ ├── DashboardPage.js
│ │ ├── CreateListingPage.js
│ │ └── PortfolioPage.js
├── App.js # הקובץ הראשי שמטפל בניווט בין דפים
└── index.js # נקודת הכניסה הראשית לפרויקט
הסבר על מבנה הפרויקט:
-
src/components/
- קומפוננטות כלליות: כאן נשמור את כל הקומפוננטות שמשותפות לכל חלקי האתר, כמו Header, Footer, כפתורים כלליים ועוד.
- ארגון לפי תיקיות: כל קומפוננטה נמצאת בתיקייה משלה, עם קבצי ה-JavaScript וה-CSS הרלוונטיים.
-
src/layouts/
- תבניות עיצוב: התיקייה הזו מכילה את התבניות השונות המשמשות כשלד לדפים לפי סוג המשתמש.
PublicLayout.js: תבנית לדפים שמיועדים למשתמשים לא רשומים. תכלול את ה-Header וה-Footer הגלובליים.UserLayout.js: תבנית למשתמשים רשומים (לקוחות), כולל ניווט צדדי ותכונות נוספות.FreelancerLayout.js: תבנית לפרילנסרים, עם ניווט וכלים ספציפיים לפרילנסרים.
- תבניות עיצוב: התיקייה הזו מכילה את התבניות השונות המשמשות כשלד לדפים לפי סוג המשתמש.
-
src/pages/
- חלוקה לפי סוג משתמש: הדפים מחולקים לתיקיות לפי סוג המשתמש, מה שמקל על התחזוקה וההבנה של המבנה.
- public/: דפים שמיועדים למבקרים ומשתמשים לא רשומים.
HomePage.js: דף הבית עם מידע על האתר.ListingsPage.js: רשימת כל ה-LISTINGS (גיגים) של הפרילנסרים.ListingDetailsPage.js: פרטים על גיג ספציפי.JobsPage.js: דף המציג את כל העבודות שהמשתמשים מחפשים עבורן פרילנסרים.JobDetailsPage.js: פרטים על עבודה ספציפית.FreelancerProfilePage.js: פרופיל ציבורי של פרילנסר.
- user/: דפים שמיועדים למשתמשים רשומים (לקוחות).
DashboardPage.js: לוח בקרה של המשתמש.CreateJobPage.js: דף ליצירת עבודה חדשה.SettingsPage.js: הגדרות המשתמש.
- freelancer/: דפים שמיועדים לפרילנסרים.
DashboardPage.js: לוח בקרה של הפרילנסר.CreateListingPage.js: דף ליצירת גיג חדש.PortfolioPage.js: ניהול הפורטפוליו של הפרילנסר.
- public/: דפים שמיועדים למבקרים ומשתמשים לא רשומים.
- חלוקה לפי סוג משתמש: הדפים מחולקים לתיקיות לפי סוג המשתמש, מה שמקל על התחזוקה וההבנה של המבנה.
-
App.js
- הקובץ הראשי שמנהל את הניווט בין הדפים באמצעות React Router. כאן נבצע את הגדרת הנתיבים (Routes) ונגדיר איזה Layout ישמש לכל נתיב.
-
index.js
- נקודת הכניסה הראשית לפרויקט. כאן נטען את הקומפוננטה
<App />אל ה-DOM.
- נקודת הכניסה הראשית לפרויקט. כאן נטען את הקומפוננטה
מדוע חשוב לשמור על מבנה כזה?
הפרדת קוד ולוגיקה
- תחזוקה קלה: המבנה המודו לרי מאפשר לכל חבר צוות לעבוד על חלקים שונים של הפרויקט בלי להתנגש.
- הרחבה ופיתוח: קל להוסיף פיצ'רים חדשים או לשנות קיימים בלי להשפיע על חלקים אחרים.
שימוש ב-Layouts
- קוד חוזר (Reusability): ה-Layouts מאפשרים לנו להגדיר מבנים משותפים לדפים רבים, כמו Header, Footer וניווט צדדי.
- עיצוב עקבי: מבטיח שכל הדפים עבור סוג משתמש מסוים ישמרו על מראה ותחושה אחידים.
- תחזוקה מרכזית: שינויים ב-Layout מתעדכנים אוטומטית בכל הדפים שמשתמשים בו.
דוגמה לשימוש ב-Layout
// src/layouts/PublicLayout.js
import React from 'react';
import Header from '../components/Header/Header';
import Footer from '../components/Footer/Footer';
const PublicLayout = ({ children }) => (
<>
<Header />
<main>{children}</main>
<Footer />
</>
);
export default PublicLayout;
// src/pages/public/HomePage.js
import React from 'react';
import PublicLayout from '../../layouts/PublicLayout';
const HomePage = () => (
<PublicLayout>
{/* תוכן דף הבית */}
<section>
<h1>ברוכים הבאים ל-Workway</h1>
<p>הפלטפורמה שמחברת בין לקוחות לפרילנסרים.</p>
</section>
</PublicLayout>
);
export default HomePage;
עבודה עם Tailwind CSS
- עיצוב מהיר ואחיד: Tailwind מאפשר לנו להשתמש במחלקות CSS מוכנות כדי לעצב את האלמנטים בקלות.
- ערכות נושא: באמצעות שימוש במשתנים (Custom Properties), נוכל לתמוך בערכות נושא שונות כמו מצב כהה ובהיר.