Thank you for your interest in a developer position at Igacode. This take-home test is designed to evaluate your frontend/backend development skills, specifically your ability to implement features, create UIs, and build and integrate API endpoints.
Build an application for a Book Management System that allows users to view, borrow, and return books. The system should help users track when books are due to be returned.
- You have one week to complete this test
- We estimate this should take 8-12 hours of focused work
- Please submit your solution within 7 days of receiving this test
-
Book Catalog
- Display a list of available books
- Show book details: title, author, cover image, availability status
- Implement search and filter functionality
-
Book Borrowing
- Allow users to borrow available books
- Set and display return deadlines(default: 2 weeks from borrowing date)
- Show confirmation after successful borrowing
-
Book Return Management
- Display currently borrowed books
- Allow users to return books
- Show overdue books with visual indicators
-
User Dashboard
- Show borrowed books with return deadlines
- Display statistics (e.g., books borrowed, books returned, books overdue)
-
Frontend Implementation
- Use ReactJS(preferable) or any other framework you have strong experience with
- Create a clean, intuitive UI with good user experience
-
API Integration
- IMPORTANT: Mock the backend API responses
- Document your mocked API endpoints and data structures
- Implement proper error handling and loading states
-
State Management
- Use appropriate state management (Redux, React Query, etc.)
- Ensure proper data flow across components
- User authentication flow (login/logout)
- Book reservation system
- User book history
- Admin panel for managing books
- Book recommendations based on borrowing history
- Dark/Light mode toggle
If your focus is on the frontend, you should mock the following API endpoints:
GET /api/books - Get all books
GET /api/books/:id - Get a specific book by ID
POST /api/books/:id/borrow - Borrow a book
POST /api/books/:id/return - Return a book
GET /api/users/current/books - Get user's borrowed books
-
Source Code
- Complete source code hosted on GitHub/GitLab/BitBucket
- Instructions to run the application locally
- README with project description, features, and tech stack used
-
Application
- Deployed version of your application(GitHub Pages, Netlify, Vercel, etc.)
- If deployment is not possible, provide a recording(Loom, Quicktime, ...) of the application
-
Documentation
- Component structure
- Mock API implementation details
- Any assumptions or design decisions made
- Future improvements if you had more time
Your submission will be evaluated based on:
-
Code Quality
- Clean and documented code
- Proper use of components, hooks, and other framework features
- Adherence to best practices
-
UI/UX Design
- Consistent styling
- Attention to detail
-
Functionality
- Implementation of all required features
- Proper state management
- Error handling and edge cases
-
Technical Decisions
- Appropriate choice of libraries and tools
- Efficient implementation of features
You can use the following data to populate your application:
[
{
"id": 1,
"title": "The Great Gatsby",
"author": "F. Scott Fitzgerald",
"coverImage": "https://example.com/great-gatsby.jpg",
"description": "A novel about the mysteriously wealthy Jay Gatsby and his love for Daisy Buchanan.",
"available": true
},
{
"id": 2,
"title": "To Kill a Mockingbird",
"author": "Harper Lee",
"coverImage": "https://example.com/mockingbird.jpg",
"description": "The story of racial inequality and moral growth in the American South.",
"available": false,
"dueDate": "2025-05-27"
},
// Add at least 10 more books with various statuses
]
- Host your code on a public repository(GitHub/GitLab/BitBucket)
- Deploy your application (if possible)
- Send an email to [[email protected]] with:
- Link to your repository
- Link to your deployed application (if applicable)
- Any additional notes or instructions
If you have any questions or need clarification, please email [[email protected]]
All the best! We look forward to seeing your solution.