You are tasked with developing an online bookstore application. The application should allow users to browse books, search for books by title or author, and view book details. As a bonus, users should be able to register an account and log in, add books to their "favorites" list, and manage their "favorites" list.
- Frontend Development:
- Implement a responsive web interface using React.
- Design intuitive user interfaces for browsing books, searching for books by title or author, and viewing book details.
- Backend Development:
- Implement CRUD operations for managing and browsing books, as well as viewing book details.
- Integrate with a database of your choice to store book data.
- NOTE: We ask that you do not use Next.js for this assessment. Any other backend framework is fine.
- Database Design:
- Design an appropriate database schema to store information about books.
- Additional Features:
- Implement validation and error handling on both the frontend and backend to ensure data integrity and provide a smooth user experience.
- Allow for the entire project to be stood up using a single Docker Compose command.
- Bonus Points:
- Implement user authentication for login and registration functionalities (3rd party library/services are allowed).
- Implement a "favorites" list where the user can save and manage their favorite books.
- Verify your work with unit tests.
- Use a monorepo build system to structure your project (hint: We are big fans of Nx).
- Zip your project and submit the zip via LiquidFiles.
- Provide documentation outlining the architecture, design decisions, and any additional information necessary to understand and evaluate the application.
- Include a README.md file with instructions on how to run the application and any assumptions made during development.
- Code quality, organization, and adherence to best practices.
- Functionality completeness and correctness according to the provided requirements.
- User interface design, usability, and responsiveness.
- Database design and efficiency.
- Clarity and completeness of documentation.
- Whether the entire project can be stood up using a single Docker Compose command.