A comprehensive Enterprise Resource Planning (ERP) web application built with Flask and Firebase, designed to manage employee operations, project management, leave requests, asset management, and more.
- Multi-role Authentication System: Support for Managing Director, Team Lead, HR, Accounts, and Employee roles
- User Registration & Login: Secure authentication with password hashing
- Role-based Access Control: Granular permissions for different user roles
- User Profile Management: Employee information, document uploads, and profile management
- Permission Requests: Submit and track permission requests with multi-level approval workflow
- Leave Requests: Comprehensive leave management system with Team Lead and Director approval
- Travel Requests: Submit travel requests with budget tracking and approval workflow
- Conveyance Claims: Submit and track conveyance/transportation expense claims
- Asset Requests: Request company assets with approval workflow
- Project Creation & Management: Create and manage organizational projects
- Task Assignment: Assign tasks to team members with priority and deadline tracking
- Personal Projects: Individual project and task management
- Team Management: Create and manage teams with member assignments
- Group Management: Project-specific groups for better collaboration
- Announcements: Company-wide or department-specific announcements
- Real-time Notifications: Stay updated with request statuses and task assignments
- Attendance Tracking: Integration with Google Drive for attendance management
- Employee Performance: Performance evaluation system
- PDF Report Generation: Generate professional reports using ReportLab
- Dashboard Analytics: Comprehensive dashboards for different user roles
- Vendor Management: Manage vendor information and relationships
- File Upload System: Secure file upload for documents and attachments
- Database Migration Tools: Built-in database migration endpoints
- Multi-dashboard Support: Customized dashboards based on user roles
- Flask: Python web framework
- SQLAlchemy: ORM for database management
- Flask-SQLAlchemy: Flask integration for SQLAlchemy
- SQLite: Local database storage
- Firebase Admin SDK: Cloud database and authentication
- HTML5/CSS3: Modern responsive design
- JavaScript: Interactive UI components
- Bootstrap (implied): Responsive layout
- Werkzeug: Security utilities for password hashing
- Pandas: Data manipulation and analysis
- Google APIs: Integration with Google Drive and Sheets
- ReportLab: PDF generation
- WeasyPrint: PDF generation from HTML
- PyTZ: Timezone management (Asia/Kolkata)
- Python 3.8 or higher
- pip (Python package manager)
- Git
-
Clone the repository
git clone https://github.com/bhargavikorimi/ERP-Web-Project.git cd ERP-Web-Project -
Create a virtual environment
python -m venv venv # On Windows venv\Scripts\activate # On macOS/Linux source venv/bin/activate
-
Install dependencies
pip install -r requirements.txt
-
Set up environment variables
- Create a
firebase-service-account.jsonfile with your Firebase credentials - Update the
app.secret_keyinapp.pyfor production use
- Create a
-
Create necessary folders
mkdir uploads
-
Initialize the database
python app.py
The database will be automatically created on the first run.
-
Run the application
python app.py
The application will be available at
http://localhost:5000
This application is configured for deployment with Passenger WSGI (common on shared hosting).
-
Update Configuration
- Ensure
firebase-service-account.jsonis in the root directory - Update
passenger_wsgi.pyif needed
- Ensure
-
Deploy
- Upload files to your server
- Ensure
wsgi.pyis properly configured - Restart your web server
For production, set the following:
SECRET_KEY: Flask secret key (change from default)GOOGLE_APPLICATION_CREDENTIALS: Path to Firebase credentialsDATABASE_URI: Database connection string (optional)
ERP-Web-Project/
βββ app.py # Main application file
βββ wsgi.py # WSGI entry point
βββ passenger_wsgi.py # Passenger WSGI configuration
βββ requirements.txt # Python dependencies
βββ users.db # SQLite database (auto-generated)
βββ static/ # Static files
β βββ images/ # Image assets
β β βββ logo.png
β βββ videos/ # Video backgrounds
βββ templates/ # HTML templates
β βββ index.html # Landing page
β βββ login.html # Login page
β βββ register.html # Registration page
β βββ dashboard.html # Main dashboard
β βββ multi_dashboard.html # Multi-role dashboard
β βββ evaluation_start.html # Evaluation start page
β βββ evaluation_evaluate.html # Evaluation form
βββ uploads/ # User uploaded files (gitignored)
βββ firebase-service-account.json # Firebase credentials (gitignored)
After first setup, create an admin user through the registration page and assign appropriate roles through the database or admin panel.
- Managing Director: Full system access, final approval authority
- Team Lead: Team management, initial approval for leave and permissions
- HR: Employee management, HR requests handling
- Accounts: Financial requests and conveyance claims
- Employee: Basic access to personal requests and tasks
- Change the
app.secret_keyinapp.py - Never commit
firebase-service-account.jsonto version control - Use environment variables for sensitive configuration
- Enable HTTPS in production
- Regularly update dependencies
- Implement rate limiting for API endpoints
- Add CSRF protection for forms
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is proprietary and confidential. All rights reserved.
- Bhargavi Korimi - GitHub Profile
For support and queries, please open an issue in the GitHub repository.
- Flask framework and its extensive ecosystem
- Firebase for backend services
- Google APIs for integration capabilities
- All contributors who have helped improve this project
Note: This is an internal ERP system. Ensure all sensitive data and credentials are properly secured before deployment.