Instruction file imported from micaela-pupparo/TicketApp (
.github/instructions/skills.instructions.md). Copyright stays with the author.
Provide project context and coding guidelines that AI should follow when generating code, answering questions, or reviewing changes.
Technical Focus
This project is designed to demonstrate strong skills in:
- C#
- WPF with MVVM
- Entity Framework Core
- Asynchronous programming
- Clean architecture principles
C# Best Practices
- Use async/await correctly
- Avoid blocking calls
- Use LINQ for querying
- Prefer interfaces over concrete implementations
- Follow SOLID principles
WPF and MVVM Expectations
- Strict MVVM implementation
- Use ICommand instead of event handlers
- Use bindings for all UI interactions
- Use ObservableCollection for UI updates
- Implement INotifyPropertyChanged correctly
- Use INotifyDataErrorInfo for validation
Entity Framework Core
- Use DbContext properly
- Apply migrations correctly
- Use Include() for relationships
- Use AsNoTracking() for read-only queries
- Write efficient LINQ queries
- Avoid N+1 query problems
Async and Responsiveness
- All database operations must be asynchronous
- Do not block the UI thread
- Ensure UI remains responsive during:
- Data loading
- Searching
- Exporting
Error Handling and UX
- Handle exceptions gracefully
- Do not allow application crashes
- Provide clear user feedback
- Support UI states:
- Loading
- Empty
- Error
Architecture and Design
- Follow layered architecture
- Respect separation of concerns
- Use dependency injection
- Use a dialog/navigation service for window management
- Keep ViewModels independent from Views
Trade-offs
- Avoid overengineering due to time constraints
- Prefer clarity over abstraction
- Use simple navigation (windows instead of complex routing)
Advanced Features (if applicable)
- Soft delete using global query filters
- Audit fields (CreatedAt, UpdatedAt)
- Export to JSON and XML
- Logging with ILogger
- Support for CancellationToken
What to prioritize
- Code clarity
- Correct use of MVVM
- Proper async usage
- Maintainable structure
- Good user experience