1. Look and Feel:
- Fully responsive design utilizing Bootstrap.
- Sign up, log in, and log out functionality.
- Integration of a free Multi-Factor Authentication (MFA) method, such as Google Authenticator or Authy.
3. User Roles:
- Definition of user roles, including "Admin", "Advanced", "Basic", "Player", and "Public".
4. Permission Management:
- Assigning permissions to different roles, such as create, read, update, and delete resources.
5. Access Control:
- Enforcing the assigned permissions based on user roles.
6. User Management:
- Allowing administrators to create, update, and delete user accounts.
- Including tables: tracks, waypoints, claims, and gpstrackers.
8. Resource Sharing:
- Allowing users to share resources (tracks) with each other, enabling multiple users to work on the same track.
9. Activity Tracking:
- Logging changes made by users to track who made the changes and when.
- Storing logs in a dedicated table, including user ID, resource type, resource ID, action type, and timestamp.
10. User Hints:
- Providing a 'Hint' module for administrators to give hints or notifications to users at certain places in the application.
11. Modular End User Functions:
- Designing the application to accommodate additional map-related functionalities as separate modules, with access controlled by user management.
- Future modules can be added without the need to create a new backend with MFA and user management.
12. Public Access:
- Allowing basic features for website visitors without an account.
- If needed, use Laravel's built-in API capabilities with JSON Web Tokens (JWT) for authentication and communication between the frontend and backend.
Coding Standards: Adhere to the official coding standards and best practices for Laravel, Bootstrap, and any other technologies used in the project. For example, you should follow the PSR (PHP Standard Recommendation) coding standards, especially PSR-1, PSR-2, and PSR-12 for PHP.
Version Control: the use of a version control system is required. we use GitLAB for that.
Code Reviews: Code revieuws can be requested. They will ben done by me or another developer.
Documentation: The developer provides clear, concise, and up-to-date documentation for the code, including inline comments, README files, and any necessary external documentation.
Automated Testing: Encourage the developer to write automated tests using tools like PHPUnit for PHP and Laravel Dusk for browser testing.
Continuous Integration (CI) and Continuous Deployment (CD): Implement a CI/CD pipeline using GitLAB
Performance Optimization: You are encouraged to follow performance best practices for Laravel, Bootstrap, and any other technologies used in the project. This can include techniques like caching, database query optimization, and efficient use of frontend resources.
Security: The developer follows security best practices, such as validating and sanitizing user input, protecting against CSRF attacks, and properly configuring authentication and authorization. The Laravel framework already provides many built-in security features, so it's important to make the most of these.
Code Reusability and Modularity: Write modular and reusable code, adhering to the DRY (Don't Repeat Yourself) principle. This will make the code easier to maintain and extend in the future.
Keep up with updates: Ensure thatyour check for updates to the technologies used in the project and applies them as necessary.