Full Stack Developer (Django_React)
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
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