EZElectronics - Electronics Store Web App
7/5/2024
EZElectronics is an e-commerce web application for an electronics shop. I worked on it as a small store management system, where the same product data is used in different ways by customers, managers, and administrators.
The core of the project is the product lifecycle. Items can be added to the catalog, filtered by model or category, updated when new units arrive, sold through the checkout flow, reviewed by customers, and monitored from the management side. This made the project more interesting than a simple CRUD application, because stock availability, carts, orders, and permissions all depend on each other.
Customers can browse the catalog, manage their cart, complete purchases, check previous orders, and leave product reviews. Managers focus on operational tasks such as registering arrivals, updating quantities, and handling product information. Administrators have a wider view of the system, with features for user supervision and platform-level control.
The client was built with React and TypeScript, using React Router for navigation and Bootstrap for the interface. The UI had to support different areas of the application without making each role feel like a separate product. A customer buying a product and a manager updating the same product are different flows, but they both rely on consistent data and predictable screens.
On the server side, the application exposes an Express REST API written in TypeScript and backed by SQLite. It handles sessions, authentication with Passport Local, product operations, cart logic, order history, reviews, and role-based access checks. The API documentation was an important part of the project, because many features depend on clear contracts between frontend and backend.
The repository also includes requirement documents, GUI prototypes, effort estimation, a changelog, and a test report. Testing was not limited to isolated functions: the suite uses Jest and Supertest to cover unit, integration, route, and functional behavior, especially around users, products, carts, and reviews.
For deployment, the project includes a Docker setup that builds the React client, serves it together with the Express backend, keeps the SQLite database in a persistent volume, and exposes the application locally so it can run behind an Nginx reverse proxy.