- Fork the Repository (Mandatory)
- Fork this repository to your GitHub account before starting
- All work must be done in your forked repository
- Make sure your repository remains public until the evaluation
- Create feature branches for each component or functionality
- Submit your work through Pull Requests
This technical test simulates a real-world development environment where you'll be working as part of a team of 5 developers. We expect you to follow standard team development practices including proper git workflow, clear documentation, and maintainable code. Your work should reflect how you would contribute to a shared codebase.
Create a vehicle showcase application using Next.js and a backend of your choice (NestJS or Next.js API Routes). The application should display a list of vehicles with filtering and sorting capabilities.
You can either:
- Use the provided mock data
- Implement your own backend with the provided data structure
- Responsive design (mobile, tablet, desktop)
- Display a paginated vehicle list
- Filter vehicles by manufacturer, type, and year
- Sort vehicles by price and year
- Display detailed vehicle information
- Implement proper git workflow (feature branches, clear commits, PRs)
interface Vehicle {
id: string;
manufacturer: string; // e.g., "BMW", "Tesla", "Toyota"
model: string; // e.g., "X5", "Model 3", "Camry"
year: number;
type: VehicleType;
price: number;
fuelType: string;
transmission: string;
mileage?: number;
features: string[];
images: string[];
description: string;
createdAt: Date;
updatedAt: Date;
}
enum VehicleType {
SUV = 'SUV',
SEDAN = 'SEDAN',
TRUCK = 'TRUCK',
SPORTS = 'SPORTS',
LUXURY = 'LUXURY',
ELECTRIC = 'ELECTRIC'
}
enum FuelType {
GASOLINE = 'GASOLINE',
DIESEL = 'DIESEL',
ELECTRIC = 'ELECTRIC',
HYBRID = 'HYBRID',
PLUGIN_HYBRID = 'PLUGIN_HYBRID'
}
The most important part of the evaluation will be a video call where you'll present:
- Your technical choices and their justification
- Architecture decisions
- Code organization
- Challenges encountered and solutions
- Potential improvements and scalability
- Live demonstration of the application
- Clean and maintainable code
- TypeScript usage
- Component organization
- Error handling
- Testing approach
- Responsive design implementation
- Git workflow
- Documentation
- Code organization
- Commit clarity
- Expected time: 4-6 hours
- Technical presentation: 20 minutes + 10 minutes Q&A
Prepare to discuss:
- Technical stack choices
- Architecture decisions
- State management approach
- Data fetching strategy
- Performance considerations
- Testing strategy
- Potential improvements
- Scalability considerations
- Fork the repository (mandatory)
- Create feature branches for each component
- Make atomic commits with clear messages
- Submit work through Pull Requests
- Document major decisions in PR descriptions
- Follow Clean Architecture principles
- Implement proper TypeScript types/interfaces
- Create reusable components
- Include unit tests for core functionality
- Document API endpoints and components
Good luck! 🚀