An open API service indexing awesome lists of open source software.

https://github.com/stynw7/technical_test_shelfnow

Subject Coordinator Technical Test - Software Architecture Project
https://github.com/stynw7/technical_test_shelfnow

docker microservice mysql nestjs prisma react vite

Last synced: 2 months ago
JSON representation

Subject Coordinator Technical Test - Software Architecture Project

Awesome Lists containing this project

README

          

ShelfNoW




ShelfNoW


Subject Coordinator Promotion Technical Test


COSC6093 - Software Architecture


ShelfNoW is a modern online book e-commerce platform designed to provide seamless book browsing, purchasing, inventory management, and user experience through a clean microservice architecture.

---

## πŸ“ƒ Table of Contents
- [Introduction](#🌟-introduction)
- [Technology Stack](#πŸ› οΈ-technology-stack)
- [Core Features](#🧩-core-features)
- [Getting Started Locally](#🧰-getting-started-locally)
- [env Configuration](#πŸ”-env-configuration)
- [Screenshots](#πŸ–ΌοΈ-screenshots)
- [Satzinger’s Diagram](#🧭-diagrams)
- [Owner](#πŸ‘₯-owner)
- [Contact](#πŸ“¬-contact)

---

## 🌟 Introduction
**ShelfNoW** is an online bookstore platform that allows users to browse, search, and purchase books with an intuitive and efficient interface.
The system is designed using clean architecture, separating concerns between presentation, domain logic, and data persistence, ensuring scalability and maintainability.

It also includes an admin dashboard for managing books, orders, users, and categories.

> "Bringing seamless reading discovery and book shopping to a modern digital space."

---

## πŸ› οΈ Technology Stack
- **Frontend**: React with Vite, TypeScript, TailwindCSS, ShadcnUI components
- **Backend**: NestJS with Microservice Architecture
- **Database**: MySQL with Prisma ORM
- **Dockerize**: Docker and docker-compose
- **Tools**: Git and GitHub

---

## 🧩 Core Features

- **πŸ‘€ User Account System** β€” Register, Login, and View Order History
- **🧺 Shopping Cart** β€” Add/Remove/Update Cart Items
- **πŸ›’ Book Browsing & Discovery** β€” User can search and checkout books.
- πŸ‘₯ **Role-Based Access Control** β€” Different user roles: Guest, Customer, and Admin
- πŸ” **Authentication & Authorization** β€” JWT-based login system for session management. There is also Middleware
- **πŸ“¦ Admin Inventory Management** β€” Admin can do CRUD for the Books Inventory Management

---

## 🧰 Getting Started Locally

### Prerequisites
- **Node.js** (v18 or higher)
- **Docker or WSL**
- **Git**

### Clone (Setup Locaclly)
```bash
git clone https://github.com/StyNW7/Technical_Test_ShelfNoW.git
cd Technical_Test_ShelfNoW
```

### Start and Stop Docker
```bash
docker-compose up --build
docker-compose down
```

---

## πŸ” .env Configuration

Default MySQL Server Port is: 3306 (But, you can check it manually)
```
# API GATEWWAY ENVIRONMENT VARIABLES

PORT=3001
JWT_SECRET=
JWT_EXPIRES_IN=3600s

# AUTH SERVICE ENVIRONMENT VARIABLES

PORT=3001
JWT_SECRET=
JWT_EXPIRES_IN=3600s

DATABASE_URL=mysql://root:root@mysql:3306/shelfnow_auth_db
DATABASE_HOST=mysql
DATABASE_PORT=3306
DATABASE_USER=root
DATABASE_PASSWORD=root
DATABASE_NAME=shelfnow_auth_db
NODE_ENV=development

# ORDER SERVICE ENVIRONMENT VARIABLES

PORT=3003
JWT_SECRET=
JWT_EXPIRES_IN=3600s

DATABASE_URL=mysql://root:root@mysql:3306/shelfnow_order_db
DATABASE_HOST=mysql
DATABASE_PORT=3306
DATABASE_USER=root
DATABASE_PASSWORD=root
DATABASE_NAME=shelfnow_order_db
NODE_ENV=development

# PRODUCT SERVICE ENVIRONMENT VARIABLES

PORT=3002
JWT_SECRET=
JWT_EXPIRES_IN=3600s

DATABASE_URL=mysql://root:root@mysql:3306/shelfnow_product_db
DATABASE_HOST=mysql
DATABASE_PORT=3306
DATABASE_USER=root
DATABASE_PASSWORD=root
DATABASE_NAME=shelfnow_product_db
NODE_ENV=development

# FRONTEND ENVIRONMENT VARIABLES

VITE_API_URL=http://localhost:3000
```

πŸ“Œ You can create these files manually or copy from a provided `.env.example` file (recommended). Make sure to make the .env file for each service

---

## πŸ–ΌοΈ Screenshots

*Landing Page*



*Login Page*



*Books Page*



*Book Detail Page*



*Transaction History Page*



*Transaction Detail Page*



*Admin Dashboard*



---

## 🧭 Diagrams

*Overall Database System Flow:*



This diagram shows how the models connected using Class Diagram

---

## πŸ‘₯ Owner

This Repository is created by (Project last modified Tuesday, 04 November 2025):
- Stanley Nathanael Wijaya (NW25-1)

---

## πŸ“¬ Contact
Have questions or want to collaborate?

- πŸ“§ Email: stanley.n.wijaya7@gmail.com
- πŸ’¬ Discord: `stynw7`

Made with ❀️‍πŸ”₯ by SNW