Marka aad rabto inaad barato Programming waxaa muhiim ah inaad practice badan aad sameyso si aad u noqoto qof ku fiican Programming.
Hirkaab Academy waxa ay bixisaa Courses kala duwan waxaanaa courses-kaas kamid ah React Js.
Dhamaan Casharada React Js iyo Courses Linkiyadooda waa kuwaan.
Become React Developer For FREE
React Course Full Course For FREE on Youtube:-
React Basics:- https://www.youtube.com/playlist?list=PLUmY9cusB7UvWh_PJ_1WDBrtePl7jg7hi
React Basic Projects:- https://youtube.com/playlist?list=PLUmY9cusB7UsbOXQEJjc18JFoLDcvd5zF&si=S7A-2CnbVQZ4_WKE
React Intermediate Projects:- https://youtube.com/playlist?list=PLUmY9cusB7UvT6N5h3qsRnXX9lVriwvYx&si=GH9R-R37wvz5T73r
React js Full Course FREE at https://hirkaab.com
Bloggaan waxaad ku arki doontaa 3 Projects oo Beginner Projects ah, Projects-kaas waxaad isticmaalnay React Js – Vite iyo Tailwindcss oo aan ku style-kareyney.
Tailwind CSS:- https://v3.tailwindcss.com/docs/guides/vite
React Js with Vite:- https://vite.dev/guide/
1- Todolist App
Projects 1aad waa Todolist oo leh afarta features-ka ee ugu muhiimsan create, read, update iyo delete.
Code-ka oo dhamaystiran waxaad kala degeysaa Github-ka.
https://github.com/Eng-Mohamed-Dek/Todolist-App-React-Js
Sidaan ayaan u sameynay Todolist.
import React, { useState, useEffect } from 'react';
function App() {
const [todo, setTodo] = useState('');
const [todos, setTodos] = useState([]);
// addTodolist
const addTodo = () => {
if (todo.trim()) {
const newTodo = {
id: Date.now(),
text: todo,
completed: false,
};
setTodos([...todos, newTodo]);
setTodo('');
}
};
// deleteTodolist
const deleteTodo = (id) => {
const updatedTodos = todos.filter(todo => todo.id !== id);
setTodos(updatedTodos);
};
// updateTodolist
const toggleComplete = (id) => {
const updatedTodos = todos.map(todo =>
todo.id === id ? { ...todo, completed: !todo.completed } : todo
);
setTodos(updatedTodos);
};
// Load todos from localStorage
useEffect(() => {
const storedTodos = JSON.parse(localStorage.getItem('todos'));
if (storedTodos) {
setTodos(storedTodos);
}
}, []);
// Save todos to localStorage
useEffect(() => {
if (todos.length > 0) {
localStorage.setItem('todos', JSON.stringify(todos));
}
}, [todos]);
return (
<div className="min-h-screen bg-white flex items-center justify-center p-4">
<div className="max-w-md w-full bg-white p-6 rounded-lg shadow-lg">
<h1 className="text-3xl font-semibold text-center text-gray-800 mb-6">To-Do List</h1>
<div className="flex mb-4">
<input
type="text"
className="w-full p-3 border border-gray-300 rounded-l-lg"
placeholder="Add a new task"
value={todo}
onChange={(e) => setTodo(e.target.value)}
/>
<button
className="px-10 py-3 bg-primary text-white rounded-r-lg"
onClick={addTodo}
>
Add
</button>
</div>
<ul className="space-y-4">
{todos.map((todo) => (
<li
key={todo.id}
className={`flex items-center justify-between py-2 px-3 border-b border-gray-200 rounded-lg ${todo.completed ? 'bg-green-100' : 'bg-white'
}`}
>
<span
className={`text-lg ${todo.completed ? 'line-through text-gray-500' : 'text-gray-800'}`}
onClick={() => toggleComplete(todo.id)}
>
{todo.text}
</span>
<button
className="text-red-500 hover:text-red-700"
onClick={() => deleteTodo(todo.id)}
>Delete
</button>
</li>
))}
</ul>
</div>
</div>
);
}
export default App;
2- Calculator App
Projects 2aad waa Calculator oo leh funtionalities-ka oo dhan.
Code-ka oo dhamaystiran waxaad kala degeysaa Github-ka.
https://github.com/Eng-Mohamed-Dek/Calculator-React-Js
Sidaan ayaan u sameynay Calculator-ka.
import React, { useState } from 'react';
function App() {
const [input, setInput] = useState('');
const handleClick = (value) => {
setInput((prevInput) => prevInput + value);
};
const handleClear = () => {
setInput('');
};
const handleCalculate = () => {
try {
setInput(eval(input));
} catch (e) {
setInput('Error');
}
};
return (
<div className="min-h-screen bg-white flex items-center justify-center">
<div className="w-96 p-6 bg-white rounded-lg shadow-xl">
<div className="mb-4">
<input
type="text"
className="w-full p-4 text-3xl text-right bg-gray-100 border-2 border-gray-300 rounded-lg focus:outline-none"
value={input}
readOnly
/>
</div>
<div className="grid grid-cols-4 gap-4">
{/* Calculator Buttons */}
<button onClick={() => handleClick('7')} className="btn">7</button>
<button onClick={() => handleClick('8')} className="btn">8</button>
<button onClick={() => handleClick('9')} className="btn">9</button>
<button onClick={() => handleClick('/')} className="btn operator">/</button>
<button onClick={() => handleClick('4')} className="btn">4</button>
<button onClick={() => handleClick('5')} className="btn">5</button>
<button onClick={() => handleClick('6')} className="btn">6</button>
<button onClick={() => handleClick('*')} className="btn operator">*</button>
<button onClick={() => handleClick('1')} className="btn">1</button>
<button onClick={() => handleClick('2')} className="btn">2</button>
<button onClick={() => handleClick('3')} className="btn">3</button>
<button onClick={() => handleClick('-')} className="btn operator">-</button>
<button onClick={() => handleClick('0')} className="btn col-span-2">0</button>
<button onClick={() => handleClick('.')} className="btn">.</button>
<button onClick={() => handleClick('+')} className="btn operator">+</button>
<button onClick={handleClear} className="btn clear col-span-2">C</button>
<button onClick={handleCalculate} className="btn equal col-span-2">=</button>
</div>
</div>
</div>
);
}
export default App;
3- Quize App
Projects 3aad waa Quize App oo ah mid aad ugu wanaagsan in Quize lagu sameeyo.
Code-ka oo dhamaystiran waxaad kala degeysaa Github-ka.
https://github.com/Eng-Mohamed-Dek/Quize-App-React
Sidaan ayaan u sameynay Calculator-ka.
import React, { useState } from 'react';
const questions = [
{
question: 'What is the capital of Somalia?',
options: ['Hargeysa', 'Barbara', 'Mogadisho', 'Galgaduud'],
correctAnswer: 'Mogadisho',
},
{
question: 'Which planet is known as the Red Planet?',
options: ['Earth', 'Mars', 'Jupiter', 'Saturn'],
correctAnswer: 'Mars',
},
{
question: 'Which planet We Live in?',
options: ['Earth', 'Mars', 'Jupiter', 'Saturn'],
correctAnswer: 'Earth',
},
{
question: 'When Hirkaab Academy Was Stablished?',
options: ['Dec, 2024', 'Dec, 2021', 'Dec, 2023', 'Dec, 2020'],
correctAnswer: 'Dec, 2023',
},
{
question: 'How Many Students Registered in Hirkaab.com?',
options: ['100+ Students', '600+ Students', '500+ Students', '300+ Students'] ,
correctAnswer: '500+ Students',
},
{
question: 'How Many Skills We Learn at Hirkaab.com?',
options: ['4 Skills', '3 Skills', '1 Skills', '2 Skills',],
correctAnswer: '4 Skills',
}
];
function App() {
const [currentQuestionIndex, setCurrentQuestionIndex] = useState(0);
const [score, setScore] = useState(0);
const [selectedOption, setSelectedOption] = useState('');
const [isQuizFinished, setIsQuizFinished] = useState(false);
const handleOptionChange = (event) => {
setSelectedOption(event.target.value);
};
const handleNextQuestion = () => {
// scores
if (selectedOption === questions[currentQuestionIndex].correctAnswer) {
setScore(score + 1);
}
if (currentQuestionIndex < questions.length - 1) {
setCurrentQuestionIndex(currentQuestionIndex + 1);
setSelectedOption('');
} else {
setIsQuizFinished(true);
}
};
const handleRestartQuiz = () => {
setCurrentQuestionIndex(0);
setScore(0);
setSelectedOption('');
setIsQuizFinished(false);
};
return (
<div className="min-h-screen bg-gray-100 flex items-center justify-center">
<div className="w-full max-w-xl p-10 bg-white rounded-lg shadow-lg">
<h1 className="text-4xl font-bold text-center mb-10 text-primary">Quiz App</h1>
{isQuizFinished ? (
<div className="text-center">
<h2 className="text-2xl mb-4">Your Score: {score} / {questions.length}</h2>
<button
onClick={handleRestartQuiz}
className="px-6 py-2 bg-primary text-white rounded-lg hover:bg-primary-hover focus:outline-none"
>
Restart Quiz
</button>
</div>
) : (
<div>
<div className="mb-6">
<h2 className="text-xl font-semibold mb-8">
{questions[currentQuestionIndex].question}
</h2>
<div className="space-y-4 grid grid-cols-2">
{questions[currentQuestionIndex].options.map((option, index) => (
<div key={index} className="flex items-center">
<input
type="radio"
id={`option-${index}`}
name="option"
value={option}
checked={selectedOption === option}
onChange={handleOptionChange}
className="mr-2"
/>
<label htmlFor={`option-${index}`} className="text-lg">{option}</label>
</div>
))}
</div>
</div>
<div className="flex justify-between">
<button
onClick={handleNextQuestion}
className="px-10 py-2 bg-primary text-white rounded-lg hover:bg-primary focus:outline-none"
disabled={!selectedOption}
>
{currentQuestionIndex < questions.length - 1 ? 'Next' : 'Finish'}
</button>
</div>
</div>
)}
</div>
</div>
);
}
export default App;
Sidoo kale waxaad heli doontaan bloggan kale ee aan kusoo xusi doonno 3 Projects oo intermediate ah.
Waxaa rajaynaayaa inaad bloggaan aad wax baddan aad ka faa`iideen. marka wixii suaal ah qeybta comment-ka inoogu reeb.
1 Comment
bei binance anmelden
October 28, 2025Your article helped me a lot, is there any more related content? Thanks!