This repository contains a full-stack technical assessment project implemented as a monorepo. The goal of the assignment was to demonstrate the ability to design and implement a small production-style application using modern TypeScript backend and frontend tooling.
The system includes:
- A NestJS backend API
- A React + Vite frontend
- PostgreSQL database with Prisma ORM
- JWT authentication
- Docker-based local database setup
The project demonstrates clean architecture, authentication flows, API design, and modern frontend data management.
/root
│
├── client/ → Vite + React + TypeScript frontend
└── server/ → NestJS backend API
Both applications live in a single monorepo, making it easier to manage development and dependencies.
The application implements a simple invoice management system.
Users can:
• Authenticate using email and password • View a list of invoices • Open a modal to inspect invoice details
The goal of the exercise was to demonstrate backend architecture, authentication, and frontend integration rather than pixel-perfect UI.
The database is automatically seeded using Prisma.
Email: demo@altametrics.test
Password: Passw0rd!
- Vite
- React
- TypeScript
- Redux Toolkit (authentication/session state)
- Axios (API requests + JWT interceptor)
- TanStack React Query (data fetching and caching)
- Zod (validation)
- Tailwind CSS v4
- NestJS
- TypeScript
- PostgreSQL (Docker)
- Prisma ORM (schema, migrations, seed)
- Passport JWT authentication
- class-validator / class-transformer
- Jest + Supertest (unit + e2e testing)
- ESLint + Prettier
Authenticates a user and returns a JWT token used for accessing protected routes.
Returns all invoices belonging to the authenticated user.
Returns detailed information for a specific invoice.
| Field | Type |
|---|---|
| id | UUID |
| string | |
| password | string |
| name | string |
| Field | Type |
|---|---|
| id | UUID |
| vendor_name | string |
| amount | number |
| due_date | date |
| description | string |
| user_id | UUID |
| paid | boolean |
The frontend application includes two primary routes.
Allows the user to authenticate using seeded credentials.
Displays invoices retrieved from the backend.
Each row can be clicked to open a modal displaying invoice details.
| Component | Description |
|---|---|
| InvoiceList | Displays invoice table |
| InvoiceModal | Shows detailed invoice data |
| LoginForm | Handles authentication |
• JWT authentication flow • API communication using Axios • Data caching with React Query • Global auth state with Redux Toolkit • Schema validation with Zod • Docker PostgreSQL environment • Prisma migrations and database seeding
npm install
or
pnpm install
docker compose up -d
npx prisma migrate dev
npx prisma db seed
cd server
npm run start:dev
cd client
npm run dev
Frontend will run at:
http://localhost:5173
Backend tests are implemented using Jest + Supertest.
npm run test
Tests cover authentication and invoice endpoints.
This project represents a technical assessment implementation completed within a limited timeframe.
The focus of the exercise was to demonstrate:
- Backend architecture
- Authentication
- API design
- Frontend integration
- Clean project structure
rather than building a full production application.
Dantis Minurland Constantin Full-Stack Software Developer
🌐 https://mdantis.dev ✉️ hello@mdantis.dev
This project is licensed under the MIT License.