β οΈ LICENSE WARNINGThis software is the proprietary property of Bruna Menezes. Access is granted for technical evaluation and recruitment purposes only.
π Commercial use, modification, or distribution is strictly prohibited.
A robust, enterprise-grade Product Management System engineered with SOLID principles and Clean Architecture. This project goes beyond the standard CRUD requirements to demonstrate capabilities in building scalable, secure, and maintainable software.
π Live Demo: https://product-manager.brunadev.com
Production Access Points:
- π Swagger Docs: https://product-manager.brunadev.com/api/api-docs/
- π¦ Product List (JSON): https://product-manager.brunadev.com/api/products
- π₯ API Health: https://product-manager.brunadev.com/api/
- Authentication: Secure Login/Register with JWT & BCrypt.
- Product Management: Full CRUD (Create, Read, Update, Delete) with validation.
- Responsive UI: Optimized layout for both Desktop (Data Tables) and Mobile (Cards).
- Security: Protected routes, JWT Interceptors, and CORS configuration.
This project implements a strict separation of concerns, ensuring code maintainability and testability.
The API Layer is decoupled from business logic:
- Controllers (
src/controllers): Handle HTTP requests/responses and Zod validation. - Services (
src/services): Contain business rules and data processing (Authentication, CRUD logic). - Repositories (
src/repositories): Strict Data Access Layer using Prisma ORM.
- Responsive Strategy: Dual-layout system (Table for Desktop, Cards for Mobile) implemented via TailwindCSS utilities (
hidden md:block). - State Management: React
Context API+localStoragepersistence for secure Session Handling. - Security: Centralized Axios interceptors for handling Bearer Tokens and global error boundaries.
| Scope | Framework | Coverage | Details |
|---|---|---|---|
| Backend | Jest + Supertest | ~98% | Comprehensive Unit Testing covering Auth, Product flows, and Error Middleware. |
| Frontend | Vitest + RTL | ~94% | Unit Tests for Components, Forms, and Contexts. 100% coverage on core lists. |
- Runtime: Node.js 20 + TypeScript 5
- Framework: Express.js (Clean Architecture)
- Database: MySQL 8 + Prisma ORM
- Auth: JWT + BCrypt
- Validation: Zod
- Documentation: Swagger/OpenAPI v3
- Framework: React 19 + Vite
- Styling: TailwindCSS
- State Management: React Hooks + Context API
- Testing: Vitest + React Testing Library
- Containerization: Docker & Docker Compose (Multi-stage builds
node:20-slim) - Orchestration: NPM Workspaces (Root scripts)
The system comes pre-seeded with an admin user for reviewing restricted features (Edit/Delete):
- User:
admin@teste.com - Pass:
123456
We utilize a Hybrid Workflow for the best Developer Experience (DX):
- Infrastructure (MySQL): Runs in Docker (Isolated & Consistent).
- Applications (Front/Back): Run on Host (Faster Hot-Reload & Debugging).
git clone https://github.com/CFBruna/fullstack-product-manager.git
cd fullstack-product-managerStart the Database services using Docker:
docker compose up -dServices Started:
- MySQL Database: Port 3306
- Adminer (DB GUI): http://localhost:8080 (System: MySQL, Server: db, User: root, Pass: root)
In a new terminal, use the following commands to setup the environment and database:
# 1. Install Dependencies
npm install
# 2. Setup Environment Variables
cp backend/.env.example backend/.env
# 3. Setup Database (Run one by one)
cd backend
npx prisma migrate dev
npx prisma db seed
cd ..
# 4. Start Applications
npm run devAccess Points:
- Frontend Application: http://localhost:3000
- API Documentation: http://localhost:3001/api-docs
This monorepo uses NPM workspaces-style root scripts for seamless management.
# Run ALL Tests (Backend Integration + Frontend Unit)
npm test
# Generate Coverage Reports
npm run test:coverage
# Run Linting (ESLint) - Zero Tolerance Policy
npm run lintCopyright Β© 2025 Bruna Menezes. All Rights Reserved.


