A simple yet elegant user management application built with Vue 3 and Pinia for state management. This application demonstrates CRUD (Create, Read, Update, Delete) operations with a modern, responsive UI.
- User List Display - View all users in a clean, organized table
- Create User - Add new users with name and email
- Edit User - Update existing user information
- Delete User - Remove users with confirmation modal
- Responsive Design - Works seamlessly on desktop and mobile devices
- Modern UI - Clean interface with smooth animations and transitions
- State Management - Powered by Pinia for reactive data handling
- Vue 3 - Progressive JavaScript framework
- Pinia - State management library for Vue
- Vanilla CSS - Custom styling with CSS variables
- Google Fonts (Roboto) - Modern typography
hashmicro-fe-test/
├── index.html # Main HTML file
├── css/
│ └── style.css # Application styles
├── js/
│ ├── app.js # Vue application setup and component logic
│ └── store.js # Pinia store for user management
├── assets/
│ └── hashmicro.svg # HashMicro logo
└── README.md # Project documentation
-
Color Scheme:
- Primary Red:
#d32f2f - Navy Blue:
#0a1f44 - Orange:
#f57c00 - Background:
#f5f6f8
- Primary Red:
-
Animations:
- Smooth fade-in effects
- Slide-up modal animations
- Hover transitions on interactive elements
-
Responsive:
- Mobile-friendly layout
- Adaptive navigation
- Optimized for screens 768px and below
- A web server (e.g., MAMP, XAMPP, Live Server, or any HTTP server)
- Modern web browser (Chrome, Firefox, Safari, Edge)
-
Clone or download the project:
git clone https://github.com/teguhwin8/HashMicro-FE-Test.git cd hashmicro-fe-test -
Serve the application:
Option A: Using MAMP/XAMPP
- Place the project folder in your
htdocsdirectory - Start your server
- Navigate to
http://localhost/hashmicro-fe-test
Option B: Using Python
python -m http.server 8000
Then open
http://localhost:8000Option C: Using Node.js (http-server)
npx http-server -p 8000
Then open
http://localhost:8000Option D: Using VS Code Live Server
- Install the Live Server extension
- Right-click on
index.html - Select "Open with Live Server"
- Place the project folder in your
- The main page displays all users in a table format
- Each row shows the user's ID, name, and email
- Click the "Create User" button in the header
- Fill in the name and email fields
- Click "Create" to add the user
- The new user will appear in the table
- Click the "Edit" button next to the user you want to modify
- Update the name and/or email in the modal
- Click "Update" to save changes
- The table will reflect the updated information
- Click the "Delete" button next to the user you want to remove
- Confirm the deletion in the modal dialog
- Click "Hapus" to permanently delete the user
- The user will be removed from the table
The store.js file contains the Pinia store with:
- State: Array of users with default data
- Actions:
getUserById(userId)- Retrieve a specific usercreateUser(userData)- Add a new userupdateUser(userId, updatedData)- Update user informationdeleteUser(userId)- Remove a user
The app.js file contains:
- Vue 3 Composition API setup
- Modal state management
- Form handling for create/edit operations
- Delete confirmation logic
- HashMicro logo
- Navigation menu (Dashboard, Users, Products)
- Displays all users with ID, name, and email
- Action buttons for edit and delete operations
- Hover effects for better UX
- Delete Confirmation Modal: Confirms user deletion
- Form Modal: Handles both create and edit operations
- Chrome (latest)
- Firefox (latest)
- Safari (latest)
- Edge (latest)
- User data is stored in memory (Pinia store) and will reset on page reload
- No backend API integration - all operations are client-side
- IDs are auto-generated based on the highest existing ID + 1
Potential improvements for this application:
- Add backend API integration
- Implement persistent storage (localStorage/database)
- Add search and filter functionality
- Implement pagination for large datasets
- Add form validation with error messages
- Include user avatars
- Add sorting capabilities to table columns
- Implement dark mode toggle
- Add export functionality (CSV/PDF)
- Include unit tests
This project is created for HashMicro Frontend Test purposes.
Created as part of HashMicro Frontend Developer assessment.
Happy Coding! 🚀