0% found this document useful (0 votes)
48 views5 pages

Full Stack Developer Technical Test

Uploaded by

wahidsaeed1
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
48 views5 pages

Full Stack Developer Technical Test

Uploaded by

wahidsaeed1
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Technical Test for Full Stack Developer -

C# and Angular 10

Project Description

Task
Your task is to create a web application that calculates penalties for overdue book borrowings.
The penalty is calculated based on the number of days a book is overdue, excluding weekends.
Additionally, the application should allow the user to select the country, and the penalty will be
calculated accordingly based on the selected country's weekend configuration.

Technologies

Backend
- C# with .NET 8
- Entity Framework Core (EF Core)
- Design patterns and best practices

Frontend
- Angular 10
- Reactive Forms

Test Duration
You have 24 hours to complete this technical test. Make sure to manage your time effectively.

Project Requirements
Backend

1. Create a C# project using .NET 8 for the backend.


2. Implement a data model for book borrowings, including attributes like book title, borrower
information, borrowing date, and due date.
3. Implement a data model for countries, including attributes like country name and weekend
configuration.
4. Use Entity Framework Core (EF Core) to set up a database for storing book borrowings and
country configurations.
5. Implement a RESTful API that allows for the following functionality:
- Create a new book borrowing record.
- Calculate the penalty for an overdue book based on the number of days overdue and the
selected country's weekend configuration.
6. Implement appropriate error handling and validation for API requests.
7. Use design patterns and best practices for the backend development, such as SOLID
principles and dependency injection.

Frontend

1. Create an Angular 10 project for the frontend.


2. Implement a reactive form that allows users to input Checkout date, and Return date.
3. Provide a dropdown or selection component for users to choose the country.
4. Display the calculated penalty for overdue books on the frontend.
5. Ensure proper error handling and user feedback for form submissions.
6. Use Angular best practices and reactive programming principles in the frontend development.
7. Try to make UI beautiful as possible.

General
1. Provide clear instructions on how to set up and run your project in the [Link] file.
2. Make sure your code is well-documented with comments where necessary.
3. Use proper folder structure for organizing your code.
4. Ensure your code is clean, maintainable, and follows coding standards.
5. Test your application thoroughly, including unit tests for critical components.

Submission
Please submit your completed project as a compressed file (e.g., ZIP) via email or the provided
platform before the 24-hour deadline expires. Make sure to include both the backend and
frontend code along with any necessary instructions for running the application.

Good luck with your technical test, and we look forward to reviewing your work!

Reference

Please follow the references screenshots of final result.

Common questions

Powered by AI

The setup and running of the application are documented in a README.md file, which includes detailed instructions to guide users or developers in installing, configuring, and executing the application. This documentation is crucial for project delivery as it ensures the application is accessible and functional upon reaching the end-users or stakeholders. It minimizes installation issues, enables smooth transition and onboarding of new developers, and provides a reference for troubleshooting any setup-related issues .

Inclusion of country-specific weekend configurations in the data model is crucial for accurately calculating penalties for overdue books since weekends vary between countries. This configuration allows the application to dynamically adjust the penalty calculations by excluding the correct days of the week when counting overdue days. It ensures cultural relevance and legal compliance in different regions, which is critical for applications serving an international user base .

Dependency injection is used in the backend development to manage service lifetimes and decouple components, which allows for more modular and testable code. By injecting dependencies through constructors or properties, the application can achieve greater flexibility and maintainability. This practice is intended to promote loosely coupled systems, making it easier to swap implementations and manage dependencies at runtime, thereby improving the application's adaptability and robustness .

To enhance the UI and UX, strategies could include implementing responsive design for different screen sizes, improving navigation and accessibility features, using intuitive icons and typography, and enhancing user feedback with animations and visual cues. Personalized features, such as saving country preferences, and improving loading times with optimized asset management, can also elevate the user experience. Applying a user-centric design approach and regularly gathering user feedback for continuous improvements could further ensure the application's interface is engaging and effective .

The application calculates penalties for overdue books by determining the number of days a book is overdue while excluding weekends specific to the selected country. The user can select a country, and the backend, using C# and .NET 8, manages this calculation by referencing the country’s specific weekend configuration stored in the database using Entity Framework Core (EF Core).

Unit tests are essential for ensuring the correctness of individual components within the application, focusing on isolated pieces of code, such as functions or methods in both the backend and frontend. They should be structured to cover critical functionalities like API response handling, business logic in penalty calculations, and frontend components' data bindings and validations. Optimal structuring involves writing tests that are independent, repeatable, and cover edge cases to ensure the application behaves consistently in different scenarios .

The application emphasizes the use of SOLID principles and dependency injection as part of its design patterns and best practices. These practices help enhance the code's reliability, maintainability, and scalability. SOLID principles, such as the Single Responsibility Principle and Open/Closed Principle, ensure that components are modular and extensible, while dependency injection allows for easier testing and coupling between components. These principles together create a robust architecture that can evolve over time without significant restructuring .

The backend uses C# with .NET 8 and Entity Framework Core (EF Core) to leverage the robustness and reliability for web applications, along with design patterns and best practices like SOLID principles. On the frontend, Angular 10 is used to create a dynamic and responsive web interface, making use of reactive forms and Angular best practices. These technologies offer a balance of performance, scalability, and maintainability suited for developing complex web applications .

Reactive forms in Angular 10 are chosen because they provide a way to create dynamic and responsive forms where you can react to changes made by the user in real-time. They synchronize the form data model with a component model, allowing easy validation, complex form models, scalability, and maintaining form states. This enhances user interactions and ensures data integrity on form submissions .

Error handling is implemented both in the backend and frontend to ensure robust user interaction. In the backend, the RESTful API includes mechanisms for detecting and responding to errors and invalid requests, ensuring any exceptions are managed and logged appropriately. In the frontend, Angular 10 reactive forms provide validation logic to prevent invalid input, and user feedback mechanisms are in place to inform the user of errors and guide them toward resolution .

You might also like