A full-stack, mobile-first payment management dashboard built using React Native (Expo) and NestJS, designed to simulate and visualize payment data securely with clean, responsive UI and real-time capabilities.
- User login with JWT authentication
- Dashboard showing:
- Total payments today/this week
- Revenue and failed transactions
- Revenue chart (last 7 days)
- Filterable and paginated transactions list
- Add new payment simulation
- Admin/user role support
Layer | Technology |
---|---|
Frontend | React Native (Expo) |
Backend | NestJS |
Database | MongoDB |
Auth | JWT |
Charts | react-native-chart-kit |
- Node.js (v16 or higher)
- MongoDB (local or cloud instance)
- Expo CLI (
npm install -g @expo/cli
)
cd server
npm install
# Create .env file with the following variables:
# MONGODB_URI=mongodb://localhost:27017/payment-dashboard
npm run start:dev
cd client
npm install
npx expo start
Create a .env
file in the server directory:
MONGODB_URI=mongodb://localhost:27017/payment-dashboard
payment-dashboard/
├── server/ # NestJS backend
│ ├── src/
│ │ ├── admin/ # Admin management
│ │ ├── auth/ # Authentication module
│ │ ├── payments/ # Payment management
│ │ └── users/ # User management
│ ├── .env
│ └── package.json
├── client/ # React Native frontend
│ ├── components/ # Reusable components
│ ├── screens/ # App screens
│ ├── services/ # API services
│ ├── utils/ # Utility functions
│ ├── App.js
│ └── package.json
└── README.md
POST /auth/login
- User loginPOST /auth/register
- User registrationPOST /auth/refresh
- Refresh JWT token
GET /admin/stats
- Get global statisticsGET /admin/users
- Get all usersGET /admin/stats/chart
- Get transaction status chart data
GET /payments
- Get paginated payments list with filters (status, method, startDate, endDate, page, limit)POST /payments
- Create new paymentGET /payments/:id
- Get payment detailsGET /payments/stats
- Get payment statistics for current userGET /payments/stats/chart
- Get chart data for current user
POST /users
- Create new userGET /users/profile
- Get user profileDELETE /users/:id
- Delete user (Admin only)
- Backend: Implement Redis caching for frequent queries