Hi, this is my project called LaceVista. It is a simple Node.js app that gives student data from an API. I have containerised it using Docker.
Below are the steps to run this using Docker.
First, go to the folder where the Dockerfile is (project folder), then run this command in the terminal:
docker build --no-cache -t lacevista .
This will build the image and name it lacevista.
Once the image is built, run this command to start the container:
docker run -p 3000:3000 lacevista [I am not using any .env file.]
After running the container, open browser and go to:
http://localhost:3000/api/student
{"name":"Navnoor Virdi","studentId":"225219832"}
LaceVista is a full-stack e-commerce platform for shoes, built using modern web technologies. It features a dynamic product catalog, responsive design, integrated chatbot assistant, and follows the MVC architecture for maintainability and scalability.
- Fully responsive UI with elegant design
- Smooth background transitions with auto-cycling hero images
- Integrated chatbot assistant (LaceBot)
- Home
- Shop
- Products (admin only)
- About Us
- Login
- Signup
- Cart
- Checkout
- Men Info - Sneakers
- Men Info - Sports
- Men Info - Formals
- Women Heels Page
- Sneakers Page
- Flats Page
- Signup and login functionality
- Email-based OTP verification field added during registration
- Checkout form includes:
- First Name, Last Name
- Email, Mobile Number
- Shoe Measurements:
- Length (cm)
- Width (cm)
- Arch (cm)
- All fields validated on the client-side before submission
- Cart enables user to add any product from shop to cart
- Each card in cart page shows
- Name of the product
- Color of the product
- Price of the product
- Size of the product
- Real time Stock update
- Responds to user queries like:
- "Shipping"
- "Returns"
- "Shoes under $150"
- Admin dashboard to view all products on the website
- Admin can add/ edit or delete any product and its details
- Admin can also update the prices of all products in one click
- Columns include:
- Name
- Description
- Price
- Stock
- Actions(edit/delete)
- Admin dashboard to view submitted orders
- Columns include:
- Item Name/Number
- Quantity
- Total Amount
- 'models' - Contains schemas of different collection of Database
views/β EJS templates for UI renderingcontrollers/β Application logic (chatbot, orders, etc.)routes/β Navigation and API endpointspublic/β Static assets: stylesheets, scripts, imagesapp.jsβ Main server file
- EJS
- Materialize CSS
- JavaScript
- Node.js
- Express.js
- Socket.io
- MongoDB
- express-session
- Git & GitHub (Version Control)
- Trello (Project Management)
This project includes comprehensive testing across both end-to-end (E2E) functionality and automated UI workflows using Mocha, Chai, and Cypress.
Mocha and Chai were used to validate the complete backend and controller logic.
These tools support behavior-driven development (BDD) and allow writing structured test suites to verify business logic, route responses, and controller operations. The tests were run in a Node.js environment and covered all core user scenarios like registration, login, and form submission, ensuring accurate backend behavior and security handling.
-
β User Authentication (Signup, Login)
-
β Admin Order Management
-
β Checkout Form Submissions
-
β Controller and Route Handling
-
β resetInactivityTimeout() β Verifies inactivity timer reset behavior
-
β authController β Tests for rendering login/signup views and sendOtp function
-
β cartController β Ensures getCart is defined and behaves as expected
-
β chatbotController β Confirms handleChat is a valid function
-
β Database Utility β Mocks and validates mongoose.connect() call
- β Cart Page β Product interaction and validation
- β Checkout Process β Input validation and form submission
- β Heels Page β Rendering, product listing, add-to-cart
- β Sneakers Page β Rendering, product listing, add-to-cart
- β Flats Page β Rendering, product listing, add-to-cart
- β Men Formals Page β Product load and validation
- β Men Sneakers Page β Product load and validation
- β Men Sports Page β Product load and validation
- β Chatbot Interaction β Text input, reply rendering, popup behavior
- β Login Page β Valid and invalid login attempts
- β Signup Page β Form validation, OTP field display
- β Order Success Page β Confirmation display and order data visibility
Cypress was used to implement automated front-end testing to simulate real user interactions in a browser environment.
Cypress is a next-generation testing tool built specifically for modern web applications. It runs directly in the browser, allowing full control over the DOM, network requests, and browser behavior. For this project, Cypress was used to validate UI workflows such as navigating the site, signing up, logging in, viewing products, completing a checkout, and interacting with the chatbot. Its real-time reloading, time-travel debugging, and in-browser test runner made it ideal for verifying the user experience in a dynamic web interface.
- β Home Page Load & Navigation
- β Signup and Login Flow
- β Product Browsing and Shop Page
- β Checkout Process Validation
- β Admin Dashboard Access
- β Chatbot Interaction Testing (LaceBot)
To run the LaceVista application locally, a few simple setup steps are required. These ensure that all necessary dependencies are installed, the application is properly configured, and the development server is running.
git clone https://github.com/Jaykumar677/LaceVista.git cd LaceVista
npm install
node app.js