A project for the Software Engineering (IT-314) course, guided by Prof. Saurabh Tiwari.
- Introduction
- Tech Stack
- Project Structure
- Data Flow
- Key Features
- Best Practices
The G12 SpringTalk - A Chat Application is designed to provide a seamless and responsive chatting experience. It leverages a modular and scalable architecture combining the Atomic Design Pattern and MVC principles.
Watch the demo video here: G12 SprintTalk - A Chat Application | Demo Video
Download the app here: G12 SprintTalk - A Chat Application | Download
This project leverages the following technologies:
Our component hierarchy follows the atomic design methodology, which is inspired by chemistry's hierarchical organization of matter. This approach helps in creating a consistent, reusable, and scalable design system:
-
atoms/: The smallest, indivisible UI components. These are the basic building blocks of our interface.
Examples: buttons, input fields, icons, labels. -
molecules/: Simple groups of UI elements functioning together as a unit.
Examples: search bars (combining input and button atoms), menu items (combining icon and text atoms). -
organisms/: Complex UI components composed of molecules and/or atoms. These form distinct sections of the interface.
Examples: headers, forms, chat message bubbles.
The atomic design pattern allows for:
- Reusability: Atoms and molecules can be reused across different organisms and screens.
- Consistency: By using the same atoms throughout, we maintain a consistent look and feel.
- Scalability: New components can be easily created by combining existing atoms and molecules.
The application follows a modified MVC (Model-View-Controller) pattern:
- data/: Contains data models and schemas
- domain/: Business logic and domain-specific rules
- firebase/: Firebase configuration and services for real-time data and authentication
- components/: UI components following atomic design (atoms, molecules, organisms)
- screens/: Full application screens/pages
- globalStyles.js: Global styling configurations
- api/: API configurations and network requests
- helper/: Utility functions and helpers
- navigations/: Navigation logic and routing
-
User Interaction
- User interacts with components (atoms/molecules/organisms)
- Actions are triggered from the UI components
- For Enhanced Query Suggestions, the user taps the "Enhance" button to get refined suggestions.
-
Action Processing
- Helper functions process data when needed
- API calls are made if required
-
Data Management
- Firebase handles real-time data and authentication
- Domain logic processes business rules
-
UI Updates
- Components receive updated data through props or local state
- Screen components render updated UI
- Navigation updates if required
- Atomic Design: Modular and reusable component architecture
- Real-time Updates: Firebase integration for live data
- Navigation: Structured routing system
- API Integration: Organized API communication
- Enhanced Query Suggestion: A feature where users can tap the "Enhance" button while typing, allowing the system to generate refined suggestions (e.g., "happy birthday" → "Wishing you a very joyous birthday filled with laughter and cheer").
- Components are organized by complexity (atoms → molecules → organisms)
- Business logic is separated from UI components
- API calls are isolated in the api directory
- Helper functions are modularized for reusability
This architecture ensures a scalable, maintainable, and organized codebase while following modern development practices and patterns.