EERIS is a full-stack web application designed for student organizations to streamline expense reporting and reimbursement workflows. It allows members to upload receipts, track the status of their submissions, and export reports, while administrators can manage users, approve expenses, and analyze organizational spending trends — all through a unified interface.
- 🔐 OTP-based secure login system
- 📤 Receipt upload and expense submission
- 📊 Admin dashboard with expense analytics
- 🧾 PDF export of individual and filtered reports
- 📁 Role-based access control for members and admins
- 📬 Email notifications using custom SMTP
- 💡 Built-in rate limiting and OpenAI integration (e.g., receipt classification)
- Frontend: React, Vite
- Backend: Node.js, Express.js
- Database: JSON file-based storage (can be extended to MongoDB)
- Auth & Email: Custom OTP with nodemailer and SMTP
- AI Integration: OpenAI API (optional)
git clone https://github.com/your-username/EERIS.git
cd EERISMake sure node.js and npm are installed.
node -v
npm -v
npm install- For the frontend (Vite):
npm run dev- For the backend (OTP and receipt processing):
node server.jsCreate a .env file inside the /src/backend directory (same level as OTP_emailer.py) with the following variables:
EMAIL_ADDRESS="your-email@gmail.com"
EMAIL_PASSWORD="your-app-password"
SMTP_SERVER="smtp.gmail.com"
SMTP_PORT="587"
OPENAI_API_KEY="your-openai-api-key"
🔒 Note: Only Gmail accounts with App Passwords (not regular passwords) are supported. Visit this guide to set up an app password. Emails with 2FA enabled must use this method.
EERIS/
├── src/
│ ├── backend/
│ │ ├── OTP_emailer.py
│ │ ├── server.js
│ │ └── ...
│ └── frontend/
│ ├── components/
│ ├── pages/
│ └── ...
├── .env
└── package.json
Pull requests are welcome! For major changes, please open an issue first to discuss what you would like to change.
Built with 💻 by Ninad Deshpande