IM Connect is a robust, real-time instant messaging platform designed to bridge the gap between Enterprises and Industry Experts. It provides a seamless communication channel tailored for consultation, technical support, and professional collaboration.
- Role-Based System: Distinct workflows and profiles for Enterprises (seeking help) and Experts (providing solutions).
- Real-Time Messaging: Low-latency chat powered by WebSockets.
- Multimedia Support:
- Text, Emoji
- Image sharing (with preview)
- File attachments
- Smart Chat Features:
- Message Read/Unread Status
- Message Recall (Soft delete)
- Unread Message Counters
- Pinned Conversations
- User Profiles: Rich profile management including specialized tags, bios, and organizational info.
- Search: Efficient lookup for messages and contacts.
- Responsive UI: Modern, clean interface built with Tailwind CSS and Framer Motion.
- Core: React 19
- Build Tool: Vite
- Styling: Tailwind CSS v4
- State & Routing: React Router DOM, Custom Hooks.
- Icons: Lucide React.
- Animations: Framer Motion.
- Runtime: Node.js
- Server Framework: Express.js
- Real-Time Communication: ws (WebSocket)
- Database: SQLite (Development) / Compatible with PostgreSQL/MySQL.
- ORM: Prisma
- Object Storage: Support for Local Storage and Aliyun OSS.
Follow these instructions to get the project up and running on your local machine.
- Node.js: v18 or higher
- Package Manager: pnpm (recommended) or npm
-
Clone the repository
git clone https://github.com/7-ch/im-connect.git cd im-connect -
Install Dependencies
pnpm install
-
Environment Configuration Create a
.envfile in the root directory. You can reference the following keys:# Database DATABASE_URL="file:./dev.db" # Server PORT=8080 # Object Storage (Optional - defaults to local FS if not set) OSS_REGION= OSS_ACCESS_KEY_ID= OSS_ACCESS_KEY_SECRET= OSS_BUCKET=
-
Database Setup Generate the Prisma client and push the schema to the database.
pnpm db:migrate
-
Seed Data (Optional) Populate the database with initial users and conversations for testing.
pnpm db:seed
You can run the frontend and backend separately.
1. Start the Backend Server
node server.jsThe server will start on port
8080(or your configured port).
2. Start the Frontend Development Server
pnpm devThe application will be accessible at
http://localhost:5173.
├── src/ # Frontend application
│ ├── components/ # Reusable UI components (ChatBubble, ContactList, etc.)
│ ├── pages/ # Main route pages (Login, Chat, etc.)
│ ├── hooks/ # Custom React hooks (useAuth, usesSocket, etc.)
│ ├── utils/ # Frontend helpers
│ └── assets/ # Static assets
├── server/ # Backend application
│ ├── routes/ # Express API routes
│ ├── socket.js # WebSocket event handlers
│ └── seed.js # Database seeding logic
├── prisma/ # Database schema and migrations
├── public/ # Public static files
└── scripts/ # Utility scriptspnpm dev: Start frontend dev server.pnpm build: Build frontend for production.pnpm db:studio: Open Prisma Studio to view/edit database records.pnpm db:reset: Reset database (Caution: deletes all data).
For detailed deployment instructions, please refer to DEPLOY.md.
We provide a convenient shell script to automate the deployment process:
./scripts/deploy.sh- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the MIT License. See LICENSE for more information.





