A comprehensive digital wallet application with integrated eSign capabilities, built with React, Node.js, Express, and MongoDB. Features secure digital payments, money transfers, and Adobe Acrobat-like document signing functionality.
- Secure Authentication: JWT-based user authentication
- Balance Management: Real-time balance tracking
- Money Transfers: Send money to other users
- Transaction History: Complete transaction logs with filtering
- Razorpay Integration: Secure payment gateway for recharges
- Dashboard Analytics: Visual statistics and recent activity
- Document Upload: Upload PDF documents (up to 10MB)
- Digital Signatures: Create signatures by drawing or typing
- Inline PDF Editor: Drag-and-drop signature positioning
- Real PDF Embedding: Signatures embedded directly into PDFs using pdf-lib
- Multiple Positions: Bottom Right, Bottom Left, Center, Custom
- Visual Preview: See signature placement before signing
- Document Management: Track document status and history
- Secure Storage: Encrypted signature storage
- Responsive Design: Works on desktop, tablet, and mobile
- Clean Interface: Minimalist black, white, and gray theme
- Interactive Components: Smooth animations and transitions
- Real-time Updates: Live data synchronization
- Loading States: Professional loading indicators
- React 18: Modern React with hooks
- Tailwind CSS: Utility-first CSS framework
- Lucide React: Beautiful icons
- Axios: HTTP client for API calls
- React Hot Toast: Toast notifications
- React Router: Client-side routing
- Node.js: JavaScript runtime
- Express.js: Web application framework
- MongoDB: NoSQL database
- Mongoose: MongoDB object modeling
- JWT: JSON Web Token authentication
- Multer: File upload handling
- pdf-lib: PDF manipulation library
- Sharp: Image processing library
- Razorpay: Payment gateway integration
- Webhook Handling: Secure payment verification
wallet/
├── frontend/ # React frontend
│ ├── src/
│ │ ├── components/ # Reusable components
│ │ ├── pages/ # Page components
│ │ ├── context/ # React context
│ │ ├── utils/ # Utility functions
│ │ └── App.js # Main app component
│ └── public/ # Static assets
├── backend/ # Node.js backend
│ ├── src/
│ │ ├── controllers/ # Route controllers
│ │ ├── middleware/ # Custom middleware
│ │ ├── models/ # Database models
│ │ ├── routers/ # API routes
│ │ ├── utils/ # Utility functions
│ │ └── app.js # Express app
│ └── uploads/ # File uploads
└── README.md # This file
- Node.js (v16 or higher)
- MongoDB
- npm or yarn
git clone https://github.com/yourusername/wallet.git
cd wallet
cd backend
npm install
Create a .env
file in the backend directory:
PORT=8080
MONGODB_URI=mongodb://localhost:27017/wallet
JWT_SECRET=your_jwt_secret_key
RAZORPAY_KEY_ID=your_razorpay_key_id
RAZORPAY_KEY_SECRET=your_razorpay_key_secret
cd ../frontend
npm install
Backend:
cd backend
npm start
Frontend:
cd frontend
npm start
The application will be available at:
- Frontend: http://localhost:3000
- Backend: http://localhost:8080
POST /v1/auth/register # User registration
POST /v1/auth/login # User login
GET /v1/auth/profile # Get user profile
GET /v1/wallet/balance # Get user balance
POST /v1/wallet/transfer # Transfer money
GET /v1/wallet/transactions # Get transaction history
GET /v1/wallet/dashboard # Get dashboard stats
POST /v1/payments/recharge # Create recharge
POST /v1/payments/verify # Verify payment
GET /v1/payments/history # Get recharge history
GET /v1/esign/documents # Get user documents
POST /v1/esign/upload # Upload PDF document
POST /v1/esign/send # Send document for signature
POST /v1/esign/sign/:id # Sign document
GET /v1/esign/download/:id # Download signed document
GET /v1/esign/stats # Get document statistics
POST /v1/esign/preview-signature # Preview signature on document
POST /v1/esign/visual-signature # Create visual signature overlay
GET /v1/esign/signature-positions # Get available positions
GET /v1/esign/check-signed/:id # Check if document is signed
GET /v1/esign/pdf-metadata/:id # Get PDF metadata
- Upload PDF documents (max 10MB)
- Track document status (pending, sent, signed, expired)
- View document history and statistics
- Download original and signed documents
- Draw Mode: Freehand signature with mouse/touch
- Type Mode: Text-based signature with custom styling
- Customization: Color picker, line thickness, font options
- Real-time Preview: See signature as you create it
- Drag & Drop: Move signature anywhere on the PDF
- Precise Controls: X, Y, width, height sliders
- Quick Positions: Preset position buttons
- Real-time Updates: Live position display
- Boundary Constraints: Signature stays within PDF bounds
- Real PDF Integration: Signatures embedded using pdf-lib
- Image Processing: Optimized signatures with Sharp
- Metadata Addition: Signer name, date, and position
- Custom Positions: Exact coordinate positioning
- PDF Preview: See actual PDF with embedded signatures
- Visual Overlays: HTML-based signature preview
- Position Selection: Choose signature location
- Document Status: Track signing progress
- JWT-based authentication
- Password hashing with bcrypt
- Protected routes and middleware
- Session management
- Input validation and sanitization
- SQL injection prevention
- XSS protection
- File upload security
- Razorpay integration
- Webhook verification
- Secure payment processing
- Transaction encryption
- Encrypted signature storage
- Secure file uploads
- Access control for documents
- Audit trail for signatures
- Balance display
- Recent transactions
- Quick actions
- Statistics cards
- Transfer money
- View transaction history
- Recharge wallet
- Payment verification
- Document upload
- Signature creation
- Inline PDF editor
- Document management
The application is fully responsive and works on:
- Desktop: Full-featured interface
- Tablet: Optimized layout
- Mobile: Touch-friendly controls
# Install dependencies
npm install
# Set environment variables
export NODE_ENV=production
export MONGODB_URI=your_production_mongodb_uri
export JWT_SECRET=your_production_jwt_secret
# Start the server
npm start
# Build the application
npm run build
# Serve the build folder
npx serve -s build
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
For support, email support@wallet.com or create an issue in the repository.
- Initial release
- Digital wallet functionality
- eSign platform with PDF embedding
- Inline PDF editor
- Razorpay integration
- Responsive design
- React for the frontend framework
- Express for the backend framework
- MongoDB for the database
- Tailwind CSS for styling
- pdf-lib for PDF manipulation
- Razorpay for payment processing
Built with ❤️ using modern web technologies