A modern, full-featured library management web application built with Angular 18 and Angular Material. This system provides separate interfaces for librarians and students to manage books, track borrowing, and handle library operations efficiently.
- Dashboard: Overview of library statistics and recent activities
- Book Management: Add, edit, and manage book inventory
- Student Management: Register and manage student accounts
- Book Issuance: Issue books to students with due date tracking
- Book Returns: Process book returns and manage overdue items
- Notifications: Send and manage notifications to students
- Settings: Configure system settings and user preferences
- Dashboard: Personal library overview and recent activities
- Book Search: Search and browse available books
- Issued Books: View currently borrowed books and due dates
- Profile Management: Update personal information
- Notifications: Receive and view library notifications
- JWT-based Authentication: Secure login/logout functionality
- Role-based Access Control: Separate interfaces for librarians and students
- Password Management: Forgot password and reset functionality
- Route Guards: Protected routes based on user roles
- Frontend Framework: Angular 18
- UI Components: Angular Material
- Authentication: JWT (JSON Web Tokens)
- Routing: Angular Router with Guards
- State Management: RxJS Observables
- Styling: SCSS
- Testing: Jasmine & Karma
LibraryManagement.WEB/
βββ src/
β βββ app/
β β βββ auth/ # Authentication Module
β β β βββ auth.guard.ts # Route protection guard
β β β βββ auth.service.ts # Authentication service
β β β βββ login/ # Login component
β β β βββ register/ # Registration component
β β β βββ forgot-password/ # Password recovery
β β β βββ reset-password/ # Password reset
β β β
β β βββ librarian/ # Librarian Module
β β β βββ dashboard/ # Librarian dashboard
β β β βββ manage-books/ # Book management interface
β β β βββ add-book/ # Add new books
β β β βββ edit-book/ # Edit existing books
β β β βββ manage-students/ # Student management
β β β βββ add-student/ # Add new students
β β β βββ issue-book/ # Book issuance
β β β βββ return-book/ # Book returns
β β β βββ notifications/ # Notification management
β β β βββ settings/ # System settings
β β β
β β βββ student/ # Student Module
β β β βββ dashboard/ # Student dashboard
β β β βββ search-books/ # Book search interface
β β β βββ issued-books/ # View borrowed books
β β β βββ profile/ # Profile management
β β β βββ notifications/ # Student notifications
β β β
β β βββ shared/ # Shared Resources
β β β βββ components/ # Reusable UI components
β β β βββ models/ # TypeScript interfaces
β β β β βββ book.model.ts # Book data structure
β β β β βββ student.model.ts # Student data structure
β β β β βββ book-issue.model.ts # Book issue tracking
β β β β βββ notification.model.ts # Notification structure
β β β β βββ index.ts # Model exports
β β β βββ services/ # Shared services
β β β βββ auth.service.ts # Authentication logic
β β β βββ library.service.ts # Library operations
β β β
β β βββ app.component.* # Main app component
β β βββ app.module.ts # Root module
β β βββ app-routing.module.ts # Application routing
β β βββ app.routes.ts # Route definitions
β β
β βββ assets/ # Static assets
β βββ environments/ # Environment configuration
β βββ index.html # Main HTML file
β βββ main.ts # Application entry point
β
βββ public/ # Public assets
βββ angular.json # Angular CLI configuration
βββ package.json # Dependencies and scripts
βββ tsconfig.json # TypeScript configuration
βββ README.md # Project documentation
- Node.js (v16 or higher)
- npm or yarn package manager
- Angular CLI (
npm install -g @angular/cli)
-
Clone the repository
git clone <repository-url> cd LibraryManagement.WEB
-
Install dependencies
npm install
-
Start the development server
npm start
-
Open your browser Navigate to
http://localhost:4200
npm start- Start development servernpm run build- Build for productionnpm run test- Run unit testsnpm run watch- Build and watch for changes
The application uses JWT-based authentication with role-based access control:
- Librarian Role: Full access to all library management features
- Student Role: Access to book search, borrowing history, and profile management
- Users access the login page
- Authentication is handled via JWT tokens
- Route guards ensure proper access control
- Users are redirected to role-specific dashboards
interface Book {
id: number;
title: string;
author: string;
publication: string;
stock: number;
pdfUrl?: string;
isActive: boolean;
}interface Student {
id: number;
email: string;
name: string;
isActive: boolean;
isVerified: boolean;
}Tracks book borrowing with due dates and return status.
- Responsive Design: Works on desktop, tablet, and mobile devices
- Material Design: Modern, accessible UI components
- Intuitive Navigation: Clear navigation structure for both user types
- Real-time Updates: Dynamic content updates using RxJS
- Form Validation: Comprehensive input validation and error handling
Configure environment variables in src/environments/environment.ts:
- API endpoints
- Authentication settings
- Feature flags
The application uses Angular Material's theming system for consistent styling.
Run the test suite:
npm testThe project includes:
- Unit tests for components and services
- Integration tests for routing
- E2E testing setup (if configured)
npm run buildThe built application can be deployed to any static hosting service:
- Netlify
- Vercel
- AWS S3
- Azure Static Web Apps
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new functionality
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
For support and questions:
- Create an issue in the repository
- Contact the development team
- Check the documentation
Built with β€οΈ using Angular 18 and Angular Material