Skip to content

Enterprise IT Asset Management System A comprehensive, full-stack IT Asset Management System built with Django REST Framework and React. πŸš€ Features Core Functionality βœ… Asset Management: Track hardware, software, and IT equipment βœ… Category Management: Organize assets by categories (Laptops, Desktops, Servers, etc.) βœ… Vendor Manageme

Notifications You must be signed in to change notification settings

Elvis256/it-asset-management

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

124 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Enterprise IT Asset Management System

A comprehensive, full-stack IT Asset Management System built with Django REST Framework and React.

πŸš€ Features

Core Functionality

  • βœ… Asset Management: Track hardware, software, and IT equipment
  • βœ… Category Management: Organize assets by categories (Laptops, Desktops, Servers, etc.)
  • βœ… Vendor Management: Manage manufacturers and suppliers
  • βœ… Location Tracking: Track physical locations of assets
  • βœ… User Assignment: Assign assets to employees
  • βœ… Status Tracking: Monitor asset lifecycle (Available, Assigned, Maintenance, Retired)
  • βœ… Maintenance Records: Log maintenance activities and schedule preventive maintenance
  • βœ… Asset History: Complete audit trail of all asset changes
  • βœ… Software License Management: Track licenses, seats, and expiration dates
  • βœ… Dashboard: Real-time statistics and insights
  • βœ… Search & Filter: Powerful search capabilities across all assets
  • βœ… JWT Authentication: Secure API access with token-based authentication

Technical Features

  • RESTful API architecture
  • Responsive web interface
  • Token-based authentication
  • Role-based access control ready
  • Database migrations
  • Admin interface
  • Comprehensive filtering and search
  • Pagination support
  • Cross-origin resource sharing (CORS) enabled

πŸ“‹ Technology Stack

Backend

  • Python 3.12+
  • Django 5.0 - Web framework
  • Django REST Framework - RESTful API
  • SQLite - Database (easily switchable to PostgreSQL/MySQL)
  • JWT Authentication - Secure token-based auth

Frontend

  • React 18 - UI framework
  • Vite - Build tool
  • Axios - HTTP client
  • Modern CSS - Responsive design

πŸ› οΈ Installation & Setup

Prerequisites

- Python 3.12+
- Node.js 20+
- pip (Python package manager)
- npm (Node package manager)

Backend Setup

  1. Navigate to backend directory
cd backend
  1. Install Python dependencies
pip3 install -r requirements.txt
  1. Run database migrations
python3 manage.py makemigrations
python3 manage.py migrate
  1. Create superuser (admin account)
python3 manage.py createsuperuser
# Follow prompts to create admin user
# Suggested: username: admin, password: admin (for testing)
  1. Load initial data (optional)
python3 manage.py shell

Then in the Python shell:

from assets.models import Category, Vendor, Location
from django.contrib.auth.models import User

# Create categories
Category.objects.create(name="Laptop", description="Portable computers")
Category.objects.create(name="Desktop", description="Desktop computers")
Category.objects.create(name="Server", description="Server hardware")
Category.objects.create(name="Network Equipment", description="Routers, switches, etc.")
Category.objects.create(name="Monitor", description="Display screens")

# Create vendors
Vendor.objects.create(name="Dell", website="https://dell.com", contact_email="[email protected]")
Vendor.objects.create(name="HP", website="https://hp.com", contact_email="[email protected]")
Vendor.objects.create(name="Lenovo", website="https://lenovo.com", contact_email="[email protected]")
Vendor.objects.create(name="Cisco", website="https://cisco.com", contact_email="[email protected]")

# Create locations
Location.objects.create(name="Headquarters", building="Main Building", floor="1", address="123 Main St")
Location.objects.create(name="Data Center", building="DC-1", floor="B1", address="456 Tech Blvd")
Location.objects.create(name="Branch Office", building="Branch-1", floor="2", address="789 Office Park")

print("Initial data created successfully!")
exit()
  1. Start the development server
python3 manage.py runserver

Backend will be available at: http://localhost:8000 Admin interface: http://localhost:8000/admin

Frontend Setup

  1. Navigate to frontend directory
cd frontend
  1. Install dependencies
npm install
  1. Start the development server
npm run dev

Frontend will be available at: http://localhost:3000

πŸ” Default Login Credentials

After creating the superuser, use those credentials:

  • Username: admin (or what you created)
  • Password: admin (or what you created)

πŸ“‘ API Endpoints

Authentication

  • POST /api/token/ - Obtain JWT token
  • POST /api/token/refresh/ - Refresh JWT token

Assets

  • GET /api/assets/items/ - List all assets
  • POST /api/assets/items/ - Create new asset
  • GET /api/assets/items/{id}/ - Get asset details
  • PUT /api/assets/items/{id}/ - Update asset
  • DELETE /api/assets/items/{id}/ - Delete asset
  • GET /api/assets/items/dashboard_stats/ - Dashboard statistics
  • POST /api/assets/items/{id}/assign/ - Assign asset to user
  • POST /api/assets/items/{id}/unassign/ - Unassign asset

Categories

  • GET /api/assets/categories/ - List categories
  • POST /api/assets/categories/ - Create category

Vendors

  • GET /api/assets/vendors/ - List vendors
  • POST /api/assets/vendors/ - Create vendor

Locations

  • GET /api/assets/locations/ - List locations
  • POST /api/assets/locations/ - Create location

Maintenance

  • GET /api/assets/maintenance/ - List maintenance records
  • POST /api/assets/maintenance/ - Create maintenance record

Software Licenses

  • GET /api/assets/licenses/ - List licenses
  • POST /api/assets/licenses/ - Create license
  • GET /api/assets/licenses/expiring_soon/ - Licenses expiring in 90 days

Users

  • GET /api/users/ - List users
  • POST /api/users/ - Create user
  • GET /api/users/me/ - Current user details
  • GET /api/users/{id}/assets/ - User's assigned assets

πŸ—‚οΈ Database Schema

Main Models

Asset

  • Basic info: asset_tag, name, description
  • Hardware: manufacturer, model, serial_number
  • Financial: purchase_date, purchase_cost, warranty_expiry
  • Status: status, assigned_to, location
  • Lifecycle: deployment_date, retirement_date

Category - Asset categories Vendor - Manufacturers and suppliers Location - Physical locations MaintenanceRecord - Maintenance history AssetHistory - Audit trail SoftwareLicense - License management

🎨 Frontend Structure

frontend/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   └── Header.jsx
β”‚   β”œβ”€β”€ pages/
β”‚   β”‚   β”œβ”€β”€ Login.jsx
β”‚   β”‚   β”œβ”€β”€ Dashboard.jsx
β”‚   β”‚   └── Assets.jsx
β”‚   β”œβ”€β”€ services/
β”‚   β”‚   └── api.js
β”‚   β”œβ”€β”€ App.jsx
β”‚   β”œβ”€β”€ main.jsx
β”‚   └── index.css
β”œβ”€β”€ index.html
β”œβ”€β”€ vite.config.js
└── package.json

πŸ”§ Configuration

Backend Configuration (backend/asset_management/settings.py)

  • Database settings
  • CORS configuration
  • JWT token expiration
  • API pagination settings

Frontend Configuration (frontend/vite.config.js)

  • API proxy configuration
  • Development server port

πŸ“¦ Production Deployment

Backend

Database Configuration

The system supports both SQLite (default) and PostgreSQL:

For SQLite (Development):

# Default - no configuration needed
python3 manage.py migrate

For PostgreSQL (Production - Recommended):

# Set environment variables
export DB_ENGINE=django.db.backends.postgresql
export DB_NAME=it_asset_db
export DB_USER=your_db_user
export DB_PASSWORD=your_secure_password
export DB_HOST=localhost
export DB_PORT=5432

# Run migrations
python3 manage.py migrate

Deployment Steps

  1. Set DEBUG = False in settings.py
  2. Configure production database (PostgreSQL recommended)
  3. Set secure SECRET_KEY using environment variables
  4. Configure static files: python3 manage.py collectstatic
  5. Use production WSGI server (Gunicorn, uWSGI)
  6. Set up proper ALLOWED_HOSTS

Frontend

  1. Build for production: npm run build
  2. Serve the dist folder with web server (Nginx, Apache)
  3. Update API URL in production environment

πŸ” Security Notes

  • Change default SECRET_KEY in production
  • Use environment variables for sensitive data
  • Enable HTTPS in production
  • Configure proper CORS settings
  • Implement rate limiting
  • Regular security updates

πŸ“ˆ Future Enhancements

  • QR code/barcode scanning
  • Asset depreciation calculator
  • Email notifications for warranty expiration
  • Advanced reporting and analytics
  • File attachments for assets
  • Mobile app
  • Integration with Active Directory/LDAP
  • Bulk import/export (CSV, Excel)
  • Advanced role-based permissions
  • Multi-tenant support

🀝 Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch
  3. Commit your changes
  4. Push to the branch
  5. Open a pull request

πŸ“„ License

This project is open source and available under the MIT License.

πŸ“ž Support

+256742020610 [email protected]

For issues, questions, or contributions, please open an issue on the repository.

πŸ™ Acknowledgments

Built with Django, React, and modern web technologies for enterprise IT asset management.

About

Enterprise IT Asset Management System A comprehensive, full-stack IT Asset Management System built with Django REST Framework and React. πŸš€ Features Core Functionality βœ… Asset Management: Track hardware, software, and IT equipment βœ… Category Management: Organize assets by categories (Laptops, Desktops, Servers, etc.) βœ… Vendor Manageme

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published