0% found this document useful (0 votes)
34 views

Backend developer Assignment

Uploaded by

jayomaer
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)
34 views

Backend developer Assignment

Uploaded by

jayomaer
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
You are on page 1/ 3

Backend Developer Assignment

Objective

The goal of this assignment is to evaluate your knowledge in Laravel development, cloud
services (AWS, GCP, or Azure), CI/CD pipelines, and system architecture. You will be tasked
with developing a small web application and showcasing your skills in back-end development,
API creation, and system design.

Assignment Overview

You are tasked with building a basic Bookstore Management System. The system should
allow users to:

1. List Books: Display a list of available books.


2. Add Books: Add a new book to the system.
3. Update Book Details: Edit the details of existing books.
4. Delete Books: Remove books from the system.
5. Search Books: Allow searching books by title, author, or ISBN.

Additionally, you are required to:

● Implement user authentication: Create a user management system with basic user
roles (Admin/User) where only Admins can add, update, or delete books.
● Create APIs: Provide RESTful APIs for all book-related operations.
● Handle validation and error handling: Ensure proper validation of inputs and return
appropriate error messages for invalid operations.

Assignment Requirements

1. Technology Stack:
○ Use Laravel (latest version) for back-end development.
○ Use MySQL or PostgreSQL as the database.
○ Implement cloud hosting on AWS/GCP/Azure (optional).
2. System Design:
○ Create a proper folder structure following best practices.
○ Ensure scalability and maintainability in your code.
○ Demonstrate your knowledge in designing a distributed system, if applicable.
3. APIs:
○ Develop RESTful APIs for all CRUD operations (Create, Read, Update, Delete)
on books.
○ Implement pagination for listing books.
4. Authentication & Authorization:
○ Use Laravel’s built-in authentication features.
○ Implement role-based access control (RBAC) where Admin users can perform all
operations while regular users can only view the book list.
5. Deployment:
○ Deploy the application on one of the cloud platforms (AWS/GCP/Azure) Or a
local server environment
○ If using a local server, ensure the database is hosted locally (e.g., MySQL or
PostgreSQL).
○ Provide clear instructions in the README for setting up and running the
application.
6. CI/CD Pipeline (Optional):
○ Set up a CI/CD pipeline using Jenkins, GitLab CI, or any other CI/CD tool.
○ Automate the deployment process to the cloud.
○ Ensure that tests run as part of the pipeline.
7. Testing:
○ Write unit tests for the core functionalities (CRUD operations).
○ Include API tests to verify the behavior of your RESTful endpoints.
8. Documentation:
○ Provide clear instructions on how to set up and run the application.
○ Include API documentation

Evaluation Criteria

● Code Quality: Clean, readable, and well-structured code.


● System Design: Proper architecture and design for scalability.
● API Design: RESTful APIs that follow best practices.
● Security: Correct implementation of authentication, authorization, and input validation.
● Testing: Unit and API tests.
● Cloud Knowledge: Ability to deploy to and manage resources in a cloud environment.
● CI/CD Pipeline: (If applicable) Proper setup and functioning of continuous integration
and delivery.

Submission Guidelines

● Push your code to a public GitHub repository.


● Provide a README file with setup instructions and any additional notes.
● Include API documentation and any test results.
Bonus Tasks (Optional):

● Implement search functionality using Elasticsearch or Algolia.


● Use Docker to containerize the application and make it easy to deploy.

Deadline

Please submit your assignment within 7 days. If you require more time, let us know in advance.

You might also like