IT231 full-stack project: a responsive online bookstore demo built with Node, Express, and MongoDB. Features a multi-page structure, client-side interactivity, and a backend form submission system with EJS templates.
Project Overview & Goals
The goal was to create a feature-rich, accessible bookstore demo that integrates front-end interactivity with full backend routing and data persistence. The site demonstrates CRUD functionality, organized routing, and accessible form design backed by a MongoDB database.
Features & Structure
- Pages include Home, Catalog, Authors, Community & Reviews, and Contact (stores submissions in MongoDB).
- Client-side JavaScript features: live search filtering, featured carousel, client-side form validation, and AJAX review submission.
- Structured project layout separating
routes/,views/,models/, andpublic/assets.
UX, Accessibility & Design
Accessibility was prioritized with descriptive alt text, ARIA labels, keyboard navigation, and strong color contrast. All content was written without placeholders. The responsive layout is achieved with one unified stylesheet and scalable grid sections.
Sample Code (Express POST Route)
// main.js (excerpt)
router.post('/contact', async (req,res,next) => {
try {
const doc = new Subscriber(req.body);
await doc.save();
res.render('thanks', { name: doc.name });
} catch (err) {
next(err);
}
});
Lessons Learned & Next Steps
This project strengthened my understanding of end-to-end development using Node and MongoDB, as well as front-end and accessibility integration. Future improvements include adding admin authentication, optimizing images, and implementing server-side rate limiting for security.
View Repository / Demo



