AppArchitecture - IEEE-Team-3/map GitHub Wiki
The App Architecture for TeamApp is designed with scalability, maintainability, and flexibility in mind. The architecture is divided into three primary layers: Frontend, Backend, and Database.
- React.js: Used for building interactive and dynamic UI components.
- TypeScript: Ensures type safety and better development experience.
- Tailwind CSS: Utility-first CSS framework for quick UI development.
- Pages: Pages represent different views in the app (e.g., Dashboard, Team Creation, Profile).
- Components: Reusable UI components (e.g., buttons, form elements, modals).
- State Management: Local state managed through React hooks. Global state handled using context providers or Redux (if necessary).
- Express.js: Lightweight and fast framework for building RESTful APIs.
- MongoDB: NoSQL database for storing user, team, task, and other dynamic data.
- JWT: Used for secure and stateless authentication.
- Controllers: Handle the logic for different API endpoints.
- Models: Mongoose schemas to model data for users, teams, tasks, roles, etc.
- Routes: API routes for different endpoints (e.g., /teams, /tasks, /users).
- Middleware: Authentication middleware, error handling, and request validation.
- Services: Business logic for handling points system, leaderboard calculations, etc.
- MongoDB: The NoSQL database chosen for flexible data storage and scalability.
- Mongoose: Object Data Modeling (ODM) library to manage relationships and interactions with MongoDB.
- Users Collection: Stores user profiles, roles, and other related information.
- Teams Collection: Stores team information and nested sub-teams.
- Tasks Collection: Stores tasks and assignments related to points and task tracking.
- Points System: A separate collection for storing points transactions and history.
- Leaderboards: Stores leaderboard data for ranking members based on points.
- Chat System: Uses WebSockets (or a similar library like Socket.io) for real-time chat communication.
- Notifications: Real-time notifications for task assignments, updates, and messages.
-
Docker: The entire application (frontend, backend, database) will be containerized using Docker for easy deployment across environments.
-
CI/CD: Future continuous integration and deployment pipelines will be set up to automate testing and deployment.