RoboClaim is a modern web application built with a microservices architecture, featuring a React frontend and NestJS backend. It provides a robust platform for managing claims with automated processing capabilities, real-time updates, and advanced file management features.
- Node.js v23 & TypeScript
- NestJS Framework with Express
- PostgreSQL with TypeORM
- Bull for job queues with Redis
- WebSocket support (Socket.io)
- JWT Authentication with Passport
- PDF parsing with pdf-parse
- CSV processing
- OCR capabilities with Tesseract.js
- File management with Multer
- Swagger API documentation
- React 19
- TypeScript
- TanStack Query v5 for data fetching
- Zustand v5 for state management
- React Hook Form with Zod validation
- Tailwind CSS with Headless UI v2
- Socket.io client for real-time updates
- React Dropzone for file uploads
- Cypress v14 for E2E testing
- Date handling with date-fns v4
- Docker & Docker Compose
- GitHub Actions for CI/CD
- Multi-stage Docker builds
- Development with hot-reload
- Volume mapping for local development
- User authentication with JWT
- Role-based access control (Admin/User)
- Real-time file status updates via WebSocket
- Multi-format file upload and processing
- PDF parsing and text extraction
- CSV data processing
- OCR capabilities for images
- Background job processing with Redis queues
- Modern, responsive UI with Tailwind CSS
- Interactive file management interface
- Comprehensive API documentation with Swagger
- Real-time notifications with toast messages
- Docker and Docker Compose
- Node.js (v23) - for running Cypress tests locally
- Clone the repository:
git clone https://github.com/nadyshalaby/roboclaim.git
cd roboclaim
- Set up environment variables:
cp .env.example .env
# Edit .env with your configuration
- Start the application:
# Launch all services using Docker Compose
docker-compose up -d
- Seed the database (must be run inside the backend container):
# Access the backend container
docker exec -it roboclaim-backend-1 bash
# Run the seeding command
pnpm seed
# Exit the container
exit
- Access pgAdmin (Database Management):
# pgAdmin is available at:
URL: http://localhost:5050
Email: admin@admin.com
Password: admin
- Access the database:
# The PostgreSQL database is accessible at:
Host: localhost
Port: 5432
Username: (value from DATABASE_USERNAME in .env)
Password: (value from DATABASE_PASSWORD in .env)
Database: (value from DATABASE_NAME in .env)
You can connect to the database using any PostgreSQL client like pgAdmin, DBeaver, or DataGrip.
- Running tests (must be run on your local machine):
# Run tests from your local machine
cd fe
# you need to have node 23 installed globally
npm run cypress # Opens Cypress test runner
# or
npm run cypress:headless # Runs tests in headless mode
# or
npm run test:e2e # Runs e2e tests
Important Notes:
- All development services are handled by Docker Compose - no need to run additional commands
- Frontend will be available at
http://localhost:3001
- Backend API will be available at
http://localhost:3000
- Database seeding must be run from inside the backend container
Cypress tests should be run from your local machine, not from within Docker containers. This is necessary for Cypress to properly launch and control the browser:
# From your local machine cd fe # Ensure Cypress is installed npm run cypress # Opens Cypress test runner # or npm run cypress:headless # Runs tests in headless mode
Note: Running Cypress inside Docker containers can cause issues with browser launching and display handling. Always run Cypress tests from your local development machine for the best experience.
The project uses different package managers for optimal performance:
- Backend:
pnpm
(v10) - Frontend:
npm
- Set up dependencies:
- PostgreSQL (v16)
- Redis (v7)
- Node.js (v23)
- Build and start the backend:
cd be
pnpm install
pnpm build
pnpm start:prod
- Build and start the frontend:
cd fe
npm install
npm run build
npm start
- Access Swagger documentation at:
http://localhost:3000/api
- WebSocket endpoints documentation available in the backend README
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
After running the seeder, you can log in with these credentials:
Admin User:
- Email: admin@example.com
- Password: password
Regular User:
- Email: user@example.com
- Password: password
This project is licensed under the MIT License - see the LICENSE file for details.
- Nady Shalaby - Initial work and maintainer
- NestJS Team for the excellent backend framework
- Vercel Team for Next.js
- All contributors who have helped shape this project
For support, please open an issue in the GitHub repository or contact the maintainers directly.