Modern, responsive contact management application built with Next.js 14 and TypeScript.
- JWT authentication with automatic refresh
- Contact CRUD with photo upload
- Server-side search with 2-second debounce
- Pagination and sorting
- Role-based access control (Admin/User)
- CSV export
- Responsive design
- Next.js 14 (App Router)
- TypeScript
- Tailwind CSS
- Axios with interceptors
cd frontend
npm install
npm run devCreate a .env.local file:
NEXT_PUBLIC_API_URL=http://localhost:3002/api/- Landing page/auth/login- Login page/auth/register- Registration page/contacts- Contacts list (protected)/admin/users- User management (admin only)
- Default: 10 items per page
- Integrated in table footer
- Smart page navigation with ellipsis
- Server-side search (not client-side)
- 2-second debounce
- Searches name and email fields
- Visual loading indicators
- Default: Created date (newest first)
- Click column header to toggle sort
- Visual sort indicators
- Email:
admin@admin.com - Password:
admin123
npm run build
npm start