This project is built in two parts.
- spycloud-api-server - this is the server that hold the endpoints used in the application
- user-dashboard - this is the react app for the user management dashboard
- clone the repo
- in a terminal, go to the spycloud-api-server (cd .\spycloud-api-server\ )
- install the npm packages (npm install)
- build the server (npm run build)
- run the server (npm run start)
The server will now run on Localhost:3001 The Swagger documentation is at http://localhost:3001/api-docs/
- clone the repo
- in a terminal, go to the spycloud-api-server (cd .\user-dashboard\ )
- install the npm packages (npm install)
- build the app (npm run build:prod)
- run the app (npm run start:prod)
- Go to url in browser: http://localhost:3000
The server will now run on Localhost:3000
- Linting (npm run lint)
- Run tests (npm run test)
Your task is to develop a simplified version of a User Management Dashboard using React with Hooks. This project aims to evaluate your technical expertise in modern React features, TypeScript, Material UI, component design, UX implementation, and optional usage of AI tools.
- Fetch a list of users from a mock API (
/api/users) using React Hooks. Alternatively, you can use a JSON file. - Display the fetched list in a responsive Material UI DataGrid or table. The table should include the following columns:
User ID,Name,Email,Status, andCreation Date. - Implement functionality for sorting and filtering the user list using React Hooks.
- Sorting should be available for the
Name,Email, andCreation Datefields. - Filtering should be available for the
Statusfield, allowing users to filter by the status of the user account (e.g., active, inactive).
- Sorting should be available for the
- Include a search box that performs a basic keyword filter on the
NameandEmailfields in the user list. - Implement pagination for the User List Page. Assume each page will display 10 user records.
- Each row in the user list should contain a "Details" button.
- Implement loading states for the User List Page. Show a loading spinner or similar indicator while the data is being fetched.
- Upon clicking the "Details" button on the User List Page, navigate the user to a new view that displays detailed information about the selected user.
- Implement routing (e.g., with React Router) to handle the navigation between the User List Page and the User Detail Page.
- The User Detail Page should display data such as name, email, status, creation date, and more.
- Implement a loading state for the User Detail Page. Show a loading spinner or similar indicator while the user data is being fetched.
- Implement a few components (e.g., Button, Card, UserRow, etc.) using a reusable design system approach.
- Ensure consistency in spacing, typography, and color across all components and pages by using a shared theme object.
- Code organization and quality.
- Proper use of modern React features, specifically React Hooks.
- Implementation of the design system.
- UX implementation.
- Adherence to the task requirements.
Please organize, design, test, and document your code as if it were going into production - then push your changes to the master branch.
Have fun coding! 🚀
The SpyCloud Team