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

Full Stack Developer (Django_React)

The document outlines a technical assignment for building a full-stack invoice management system using Django REST Framework for the backend and React for the frontend. It specifies requirements for models, API endpoints, and features such as invoice creation, validation, and pagination, along with frontend functionalities like a responsive interface and state management. Additionally, it details deliverables, evaluation criteria, and submission guidelines, emphasizing code quality and core feature functionality.

Uploaded by

tejaba8886
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views

Full Stack Developer (Django_React)

The document outlines a technical assignment for building a full-stack invoice management system using Django REST Framework for the backend and React for the frontend. It specifies requirements for models, API endpoints, and features such as invoice creation, validation, and pagination, along with frontend functionalities like a responsive interface and state management. Additionally, it details deliverables, evaluation criteria, and submission guidelines, emphasizing code quality and core feature functionality.

Uploaded by

tejaba8886
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

Full Stack Developer (Django/React)

Technical Assignment
Overview
Build a full-stack invoice management system with a Django REST Framework backend and
React frontend. The system should allow creating and managing invoices with multiple line
items through a single API endpoint.

Backend Requirements
Models
1. Invoice
○ id: Auto-incremented primary key
○ invoice_number: CharField (unique)
○ customer_name: CharField
○ date: DateField
2. InvoiceDetail
○ id: Auto-incremented primary key
○ invoice: ForeignKey to Invoice
○ description: CharField
○ quantity: IntegerField (positive)
○ unit_price: DecimalField
○ line_total: DecimalField (computed field)

API Requirements

Primary Endpoint

● URL: /api/invoices/
● Methods: GET, POST, PUT, DELETE
Features
1. Create/Update invoice with details in a single request
2. Implement proper validation for all fields
3. Auto-compute line_total and total_amount
4. Return appropriate error messages
5. Include pagination for GET requests

Sample Request Payload


json
{
"invoice_number": "INV001",
"customer_name": "John Doe",
"date": "2024-11-12",
"details": [
{
"description": "Product A",
"quantity": 2,
"unit_price": 50.00
},
{
"description": "Product B",
"quantity": 1,
"unit_price": 75.00
}
]
}

Frontend Requirements
React Application
1. Create a responsive invoice management interface
2. Implement following features:
○ Invoice list view with pagination
○ Create/Edit invoice form
○ Delete invoice functionality
○ Basic search and filter options
Technical Requirements
1. Use modern React (hooks, functional components)
2. Implement proper form validation
3. Show loading states and error messages
4. Use a state management solution (Context API or Redux)
5. Make the UI mobile-responsive

Deliverables
1. Source Code
○ Organized Django project structure
○ Well-structured React application
○ .gitignore file
○ Requirements.txt/package.json
2. README.md
○ Setup instructions
○ Basic API documentation
○ Deployment URL (if applicable)
3. Repository
○ Submit via public Git repository (GitHub/GitLab)
○ No zip files accepted

Bonus Points
1. Unit tests for both frontend and backend
2. Docker configuration
3. Live deployment (e.g., Heroku, Vercel, Railway, etc.)

Evaluation Criteria
1. Code Quality
○ Clean, maintainable code
○ Proper error handling
○ Use of design patterns
○ Code organization
2. Functionality
○ All required features working
○ API performance
○ Frontend usability
3. Technical Choices
○ Appropriate use of Django/React features
○ Security considerations

Important Notes
1. You will be required to explain your code and design choices during the interview
2. Focus on code quality over quantity of features
3. Ensure all core features work perfectly before adding bonus features

Submission
● Share the repository URL
● Include any deployment URLs (if applicable)
● Ensure the repository is public and accessible

You might also like