A modern React application to manage student records.
Users can add, edit, delete, search, and filter students by name, semester, or department.
The project demonstrates React Hooks, dynamic table updates, localStorage persistence, and responsive UI design with Tailwind CSS.
- Add new students with roll number, name, semester, and department.
- Edit student details directly in table cells.
- Delete single or multiple selected students.
- Checkbox selection for all or individual rows.
- Persistent data saved in localStorage.
- Filter students dynamically by Name, Semester, or Department.
- Select search field from dropdown for flexible filtering.
- Clean, responsive design built with Tailwind CSS.
- Intuitive table layout and user-friendly form inputs.
| Category | Technology | Purpose |
|---|---|---|
| Frontend Framework | React.js (Hooks) | Component-based UI and state handling |
| Styling | Tailwind CSS | Responsive, modern design |
| Logic | JavaScript (ES6+) | Dynamic table updates, form handling |
| Storage | localStorage API | Persistent student data |
| UI Components | HTML5 & CSS3 | Table layout, forms, buttons |
git clone https://github.com/SaraSalah1/react-student-table.gitcd react-student-table# Using npm
npm install
# Using yarn
yarn install# Using npm
npm start
# Using yarn
yarn starthttp://localhost:3000
- Use input fields to enter student name, semester, and department.
- Click Add Student to add a new record.
- Select students using checkboxes to delete single or multiple rows.
- Edit table cells directly for quick updates.
- Data updates automatically saved in localStorage.
- Select a field (Name, Semester, Department) from the dropdown.
- Type the search keyword in the input field.
- Table dynamically filters results.
const addRow = () => {
if (!inputs.name) return;
if (!inputs.semester) return;
if (!inputs.department) return;
let newRoll;
do { newRoll = Math.floor(Math.random() * 10000); }
while (rows.some((r) => r.roll === newRoll));
setRows([...rows, { roll: newRoll, ...inputs }]);
setInputs({ name: "", semester: "", department: "" });
};const filteredRows = rows.filter((r) =>
r[searchBy].toLowerCase().includes(search.toLowerCase())
);const deleteSelected = () => {
setRows(rows.filter((r) => !selectionModel.includes(r.roll)));
setSelectionModel([]);
};- Fork the repository.
- Create a feature branch:
git checkout -b feature/YourFeature- Commit your changes:
git commit -m "Add some feature"- Push branch:
git push origin feature/YourFeature- Open a Pull Request.
👩💻 Author: Sara Salah
📦 Project Repository: react-student-table
This project is licensed under the MIT License