If you're a student learning web design and you've just finished HTML, CSS and some JavaScript, React can feel like a big jump. The best way across is a small project that you'd actually use. Here's one we give students: a college notice board.
What it does
- Shows a list of notices (title, department, date).
- Lets you filter by department.
- Lets you add a notice through a form.
- Saves notices in
localStorageso they survive a refresh.
That's enough to touch components, props, state, events, forms, lists and effects, without a backend.
Step 1: Set up
npm create vite@latest notice-board -- --template react
cd notice-board
npm install
npm run dev
Step 2: Model the data
const starter = [
{ id: 1, title: "Mid-sem exams start 18 Nov", dept: "CSE", date: "2026-11-04" },
{ id: 2, title: "Placement talk in Seminar Hall", dept: "All", date: "2026-11-05" },
];
Step 3: State that persists
import { useEffect, useState } from "react";
function useNotices() {
const [notices, setNotices] = useState(() => {
const saved = localStorage.getItem("notices");
return saved ? JSON.parse(saved) : starter;
});
useEffect(() => {
localStorage.setItem("notices", JSON.stringify(notices));
}, [notices]);
return [notices, setNotices];
}
Step 4: Components
Split it into NoticeList, NoticeCard, DeptFilter and NoticeForm. Pass data down as props, and pass functions like onAdd down so the form can update the list.
function NoticeCard({ notice }) {
return (
<article className="card">
<h3>{notice.title}</h3>
<p>{notice.dept} · {notice.date}</p>
</article>
);
}
Step 5: The filter
const visible = dept === "All"
? notices
: notices.filter(n => n.dept === dept || n.dept === "All");
Step 6: Make it look good
Use CSS Grid for the card layout and a single media query for mobile. Check it on your phone. Most people who view your portfolio will.
Stretch goals
- Sort by date, newest first.
- Mark notices as "important" with a badge.
- Deploy it and put the live link on your CV.
- Later, replace
localStoragewith a small API.
What this teaches
By the end you have used every core React idea a junior interview asks about, and you have something finished to show. That matters more than a long list of half-done tutorials.
We teach this project in the React module of our web designing course for students in Mohali and Chandigarh. The full module list is on the Dzimark Training course page.
Top comments (0)