This is my submission for the Software Engineer Take-Home Assessment. The app is a simple contact list manager built with a Node.js/Express backend and a React (Vite) frontend.
- Open a terminal and go to the backend folder:
cd backend - Install dependencies:
npm install
- Start the backend server:
The backend will run on http://localhost:4000
npm start
- Open a new terminal and go to the frontend folder:
cd frontend - Install dependencies:
npm install
- Start the frontend app:
The frontend will run on http://localhost:5173
npm run dev
- Add a contact with name and email
- View all contacts
- Search contacts by name or email (case-insensitive)
- Prevents adding duplicate emails
- Handles empty fields with error messages
- I used in-memory storage for the backend to keep things simple and easy to run locally. This means contacts are lost if the backend restarts.
- The search is done on the backend for efficiency, but the UI updates as you type.
- I focused on clean, readable code and clear error handling.
- Duplicate emails are not allowed (shows an error)
- Both name and email are required (shows an error)
- Search works for both name and email, and is case-insensitive
- Add the ability to delete contacts
- Use a database for persistent storage
- Add automated tests for backend and frontend
- Improve the UI/UX with better styling and feedback