AituConnect is a Telegram bot designed to enhance the university experience by connecting students through shared interests, events, and academic pursuits. Whether you're looking to join clubs, attend events, or find study partners, AituConnect simplifies the process within your university community.([GitHub][1])
- User Registration: Sign up with your university and major information.
- Post Creation: Share posts categorized by subjects to find like-minded peers.
- Post Browsing: Explore posts from other students at your university.
- Profile Management: Update your personal information and academic details.
- Notifications: Stay informed about new posts and events relevant to your interests.
AituConnect employs a distributed, message-driven architecture comprising two primary microservices:
-
MessageListenerService:
- Handles incoming messages and commands from Telegram users.
- Manages user sessions using Redis.
- Routes messages to appropriate handlers based on the user's current interaction step.
- Publishes messages to RabbitMQ queues for further processing.
-
MessageProducerService:
- Consumes messages from RabbitMQ queues.
- Executes business logic and performs database operations.
- Sends responses back to users via the Telegram Bot API.
Communication between services is facilitated through RabbitMQ, ensuring scalability and reliability.
AituConnect utilizes a pipeline pattern to manage multi-step user interactions. Each pipeline represents a specific user journey, maintaining the user's current state throughout the process.
Key Pipelines:
-
Registration:
- Steps:
ChoosingMajor→ChoosingUniversity
- Steps:
-
Post Creation:
- Steps:
TypingTitle→TypingContent→ChoosingSubject
- Steps:
-
Profile Editing:
- Steps:
EditInputOption→EditMajor→EditUniversity
- Steps:
-
Post Deletion:
- Steps:
ChoosingPost
- Steps:
-
Post Listing:
- Steps: N/A (single-step interaction)
The core entities in AituConnect's data model include:
-
User:
- Attributes:
Id,Username,University,Major
- Attributes:
-
Post:
- Attributes:
Id,Title,Content,CreatedAt,UserId
- Attributes:
-
Subject:
- Attributes:
Id,Name
- Attributes:
Posts are associated with subjects through a many-to-many relationship, enabling users to tag posts with relevant academic subjects.
- Programming Language: C#
- Framework: ASP.NET Core
- Database: PostgreSQL
- ORM: Entity Framework Core
- Caching: Redis
- Message Broker: RabbitMQ
- Containerization: Docker
- Bot Integration: Telegram Bot API([GitHub][2])
-
Clone the Repository:
git clone https://github.com/Vertiigor/AituConnect.git
-
Build and Run the Services:
Use Docker Compose to build and run the services:
docker-compose up --build
-
Interact with the Bot:
Start a conversation with your Telegram bot and explore the features!
Contributions are welcome! If you'd like to improve AituConnect, please fork the repository and submit a pull request. For major changes, open an issue first to discuss your proposed modifications.
Empowering students to connect, collaborate, and thrive within their university communities.([GitHub][1])