ControlNest is a powerful full-stack platform that enables structured, role-based communication within organizations like colleges or companies. It supports hierarchical group management, Excel-based contact upload, and real-time message delivery with notification control, making internal communication seamless, traceable, and highly targeted.
Built with Next.js for the web frontend, Flutter for the mobile app, FastAPI for the backend, and PostgreSQL for the database.
- 🚀 Key Features
- 🏗️ Real-world Use Case
- 🛠️ Tech Stack
- 📁 Project Structure
- ⚙️ Setup & Installation
- 📤 Upload Flow
- 🔐 Role and Permissions
- 📬 Message Handling
- 🧑💻 Contributing
-
🧱 Hierarchical Group Creation Create nested groups to reflect your organization’s structure (e.g.,
Company > IT > Development > Interns). -
📥 Contact Upload via Excel Bulk upload contacts and assign them to their respective groups using a simple Excel template.
-
✉️ Targeted Group Messaging Send messages to a specific group or subgroup — only relevant members receive the message.
-
🔄 Edit/Delete Messages with Sync When a message is edited or deleted, it disappears from both the sender’s and receiver’s dashboard and notification tray.
-
🔔 Push Notifications Instant alerts sent to the mobile app for every new message, with clean-up on deletion/edit.
-
📊 Traceability and Transparency All messages are logged with timestamps, sender, target group, and audit info.
Imagine a college structure:
College
├── CSE Department
│ ├── HOD
│ ├── Faculty
│ └── Students
│ ├── Final Year
│ └── Juniors
├── ECE Department
└── Admins
You can:
- Upload this hierarchy as a group tree.
- Upload contacts via Excel and assign to nodes like "Final Year CSE Students".
- Send messages to
CSE > Students > Final Yearonly. - Edit or delete the message, which updates in real time across all users.
| Layer | Tech |
|---|---|
| Frontend | Next.js (React) |
| Mobile App | Flutter |
| Backend | FastAPI (Python) |
| Database | PostgreSQL |
| Auth | JWT + Role-Based Access |
| File Upload | Excel parsing with Pandas |
| Notifications | Firebase Cloud Messaging (FCM) |
controlnest/
├── backend/
│ ├── app/
│ │ ├── models/
│ │ ├── routers/
│ │ ├── core/
│ │ └── utils/ # Excel upload, message utils
│ └── main.py
├── frontend/ # Web app (Next.js)
├── mobile/ # Flutter mobile app
└── README.md
git clone https://github.com/vishnuhari17/ControlNest.git
cd ControlNestcd backend
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
fastapi run main.pycd frontend_final_admin
npm install
npm run devcd notification
flutter pub get
flutter runUpload an Excel file with:
group_name |
parent_name |
|---|---|
| College | (empty) |
| CSE | College |
| Final Year | CSE |
name |
phone |
|---|---|
| Ravi | 9876543210 |
| Meera | 9871234567 |
The system will automatically assign the contact to the corresponding group.
| Role | Permissions |
|---|---|
| Admin | Manage groups, contacts, send to all |
| HOD | Manage dept-level groups, send to dept/subgroup |
| User | Receive and view messages only |
-
Create: Message is sent to all contacts in the selected group/subgroup. Push notification sent via FCM.
-
Edit/Delete: Message is removed from:
- Sender’s dashboard
- Receiver’s dashboard
- Notification tray (via FCM removal)
-
Audit Trail: All message logs include timestamp, editor, and status (
sent,edited,deleted).
# Fork, Clone, and Create a Branch
git checkout -b feature/group-upload-fix
# Commit and Push
git commit -m "Improved group upload error handling"
git push origin feature/group-upload-fixOpen a Pull Request 🚀