marianm91 / storyclash-notes

0 stars 0 forks source link

Case Study #2

Open marianm91 opened 5 days ago

marianm91 commented 5 days ago

Code Tech Debt

Frontend : Currently, all notes are loaded at once. For larger data volumes, it would be more efficient to manipulate notes directly in the frontend when creating, editing, or deleting to avoid reloading the entire list. Also loading states of the page should be added. Most of the styling is done in pixels. Adding proper responsive design (Vuetify, BootstrapVue, Tailwind...) and testing on different devices would improve the user experience. Backend: Improve serialization by using groups to manage data exposure, instead of circular_reference_handler in NoteService.php. Define different environments (.env, docker...)

Advanced Features

Rich Text Editing: Add rich text support (bold, italics, etc.) in texarea inputs. Permissions: Implement user-level permissions for reading, editing, or deleting notes. Real-Time Collaboration: Enable real-time note editing using WebSockets or services like Pusher. Pagination/Infinite Scrolling: Implement pagination or infinite scrolling to load notes incrementally for better performance. Search: Add a search feature to find notes efficiently.

Security Enhancements

Authentication/Authorization: Use Symfony’s Security component for user login, registration, and roles. CSRF Protection: Ensure all forms have CSRF protection. Input Validation: Sanitize and validate all input to prevent XSS and SQL injection.

DevOps, Monitoring

CI/CD Pipeline: Automate testing, code checks and deployments with GitHub Actions or CircleCI. Dockerization: Containerize the app for consistency and scalability using Docker. Automated Testing: Implement automated tests with PHPUnit for Symfony and Jest for Vue.js. End to end tests like Behat or Panther. Performance and Logging: Use services like Monolog for logging and tools like Sentry for real-time monitoring. Coding Standards and Linting: For PHP, use tools like PHP_CodeSniffer or PHP-CS-Fixer to enforce PSR standards, PHPStan for static code analysis. For JavaScript (Vue.js), use ESLint to enforce coding standards.

Concurrency and Conflict Resolution

Optimistic Locking: Use version control to prevent overwriting changes from multiple users editing the same note. Real-Time Updates: Push real-time updates with WebSockets to prevent conflicts. Conflict Resolution UI: Provide a UI for users to merge or resolve conflicting changes.

marianm91 commented 5 days ago

Requirements: https://storyclash.notion.site/Storyclash-Notes-Project-8f57e928696e46809d394876f3a536c9