The project is a secure web app for field agents to log in, collect product data with geolocation tracking, and sync it with an admin dashboard. The dashboard allows real-time report generation, account management, and data visualization for administrators.
- Clone the repository:
git clone [https://github.com/mwakazi-dev/agent-insight] cd [agent-insight]
-
Install dependencies:
npm install -
Start the the app:
npm run dev -
Run unit test:
npm run test
__tests__/: All Unit testsapp/: Main application routespublic/: Images and iconscomponents/: Reusable React componentsconstants/: For code clarity and consistencycontext/: Context providers to manage global statehooks/: Custom React hookslib/: reusable functions and utilitiesstore/: makes use of Redux toolkit for global state managementslices/: slices for Redux state managementservices/: Services for API callsstyles/: Handle all application stylestypes/: TypeScript type definitions
- Real-time data synchronization using Firebase Realtime Database
- User authentication and authorization using Firebase Authentication
- Geolocation tracking for product collection
- Admin dashboard with real-time report generation, account management, and data visualization
-
TypeScript: Implemented for improved code quality and maintainability.
-
REST API for Form Submission: Implemented for compatibility with existing backend systems.
-
Modular Component Structure: Enhances reusability and maintainability.
-
Form Validation: Ensures data integrity before submission.
-
Error Handling: Improves user experience by gracefully handling potential issues.
-
Loading States: Provides visual feedback during asynchronous operations.
-
Eslint and Prettier: Ensures consistent code style and readability
-
Ant Design: Used for UI components and design system.
-
Firebase Authentication: Secure user authentication and authorization
-
Firebase Realtime Database: Real-time data synchronization
-
Husky precommit hooks: Enforces code quality and consistency
-
Documentation: Added comments and documentation to enhance code readability and collaboration.
- Styling DRY principles
- Implement Storybook for component documentation, testing and team collaboration
- Refactor the codebase to follow best practices and improve code quality
- Improve testing coverage
- Implement more advanced features like data validation, error handling, and more advanced report generation
- Implement internationalization and localization
- Implement more secure authentication and authorization mechanisms