Create an employee management application using Angular, RxJS, and NgRx. The application should allow users to browse a list of users, view user details, and edit user details. The goal is to demonstrate your expertise in Angular architecture, state management, reactive programming, and writing unit tests.
Application Features
-
User List:
- Display a list of employees with basic information (name, email, role, and status).
- You can use mock data or fetch data from a mock API.
- Include a way to filter users, e.g. by name, email, or status.
- Display a list of employees with basic information (name, email, role, and status).
-
User Details:
- Display detailed information about a selected user (name, email, role, status, joining date).
- Include a way to edit the user details.
State Management with NgRx
- Implement global state management for users.
- Create actions, reducers, and selectors for managing user state.
Reactive Programming with RxJS
- Use RxJS operators to manage state, transform data streams, and handle asynchronous operations.
Unit Testing
- Use Jasmine and Karma to write a few unit tests.
Styling
- Use SCSS for basic styling.
- You may use Angular Material or any other UI library for a polished UI.
Documentation
- Provide a README file with instructions on how to set up and run the application.
- Persistent Storage: Use local storage or session storage to persist state across page reloads.
- Fork the repository.
- Commit your code regularly to show your progress.
- Ensure that the application runs without errors.
- Submit the GitHub repository link with your final submission.
- Code Quality: Clean, readable, and maintainable code.
- Application Structure: Proper use of Angular modules, components, services, and NgRx.
- State Management: Effective use of NgRx for global state management.
- Reactive Programming: Demonstration of RxJS for handling data streams and asynchronous operations.
- Functionality: Implementation of all required features and optional features.
- Testing: Coverage and quality of tests.
- User Experience: Aesthetic and functional UI/UX design. Responsive UI is not necessary in this task.
Good luck! We look forward to reviewing your submission.