Skip to content

Repository files navigation

🧭 MINT Navigator

Smart Visitor Guidance & Feedback Management System

React Node.js MongoDB Express TailwindCSS Netlify

Developed for the Ministry of Innovation and Technology (MInT), Ethiopia

🌐 Live Demo🐛 Report Bug✨ Request Feature


📋 Table of Contents


🎯 About The Project

MINT Navigator is a comprehensive visitor guidance and feedback management system built for the Ministry of Innovation and Technology (MInT) in Ethiopia.

The system helps visitors navigate across the Ministry's two buildings, collects real-time visitor feedback, and generates data-driven department performance rankings to support executive decision-making.

💡 Visitors can find any department by floor, building, or sector. Executives can see which departments are performing best based on real customer ratings.


✨ Key Features

🚶 Visitor Features

  • Smart Navigation — Browse departments by sector, building, or floor
  • Step-by-Step Directions — Detailed directions with landmarks
  • Multilingual Support — English 🇬🇧, Amharic 🇪🇹, Afaan Oromo
  • Feedback Submission — Rate and comment on department service quality
  • Department Search — Real-time search across all departments

👨‍💼 Admin Features

  • Department Management — Full CRUD operations
  • Sector Management — Organize departments into sectors
  • Announcement System — Create and schedule visitor announcements
  • System Complaints — Monitor and resolve technical issues

📊 Analyst Features

  • Analytics Dashboard — Real-time charts and performance metrics
  • Department Rankings — Data-driven rankings based on customer ratings
  • Feedback Management — View, respond, and resolve visitor feedback
  • Report Generation — Export analytics reports for executives

🔐 Security

  • JWT-based authentication
  • Role-based access control (RBAC)
  • Rate limiting & input sanitization
  • Secure HTTP headers (Helmet)

🛠️ Tech Stack

Layer Technology
Frontend React 19, Vite, Tailwind CSS, Framer Motion
Backend Node.js, Express.js 5
Database MongoDB Atlas, Mongoose
Auth JWT, bcryptjs
Charts Recharts, Chart.js
Storage Cloudinary
Email Nodemailer
Deployment Netlify (frontend), Render (backend)

🏗️ System Architecture

┌─────────────────────────────────────────────────┐
│               MINT Navigator                     │
├──────────────┬──────────────┬────────────────────┤
│   Visitors   │    Admins    │      Analysts      │
│  Navigation  │  CRUD Ops    │  Analytics/Ranking │
│  Feedback    │  Announce    │  Feedback Inbox    │
└──────┬───────┴──────┬───────┴────────┬───────────┘
       └──────────────┼────────────────┘
                      │
             ┌────────▼────────┐
             │  React Frontend │  (Netlify)
             └────────┬────────┘
                      │ REST API
             ┌────────▼────────┐
             │ Express Backend │  (Render)
             └────────┬────────┘
              ┌───────┼──────────┐
              ▼       ▼          ▼
          MongoDB  Cloudinary  Nodemailer

🚀 Getting Started

Prerequisites

  • Node.js v18+
  • MongoDB Atlas account
  • Git

Installation

# 1. Clone the repository
git clone https://github.com/Ebo1996/mintnavigation.git
cd mintnavigation

# 2. Install backend dependencies
cd backend
npm install

# 3. Install frontend dependencies
cd ../frontend
npm install

Environment Variables

Backend (backend/.env):

PORT=5000
MONGODB_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret
CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_API_KEY=your_api_key
CLOUDINARY_API_SECRET=your_api_secret
EMAIL_USER=your_email@gmail.com
EMAIL_PASS=your_app_password

Frontend (frontend/.env):

VITE_API_URL=http://localhost:5000/api

Running the App

# Terminal 1 - Backend
cd backend
npm run dev

# Terminal 2 - Frontend
cd frontend
npm run dev

👥 User Roles & Permissions

Role Access
Visitor Browse departments, search, submit feedback
Admin CRUD departments & sectors, manage announcements
Feedback Analyst View analytics, manage feedback, generate reports
Sector Manager View & respond to sector-specific feedback
Department Head View & respond to department-specific feedback
Superadmin Full system access + user management

📡 API Documentation

Base URL:

Production:  https://mint-navigation-u0hc.onrender.com/api
Development: http://localhost:5000/api
Method Endpoint Description Auth
GET /departments Get all departments
GET /departments/:id Get single department
POST /departments Create department ✅ Admin
PUT /departments/:id Update department ✅ Admin
DELETE /departments/:id Delete department ✅ Admin
POST /feedback Submit feedback
GET /analytics/overview Dashboard stats ✅ Analyst
GET /analytics/rankings Department rankings ✅ Analyst
POST /admin/login Admin login

🤝 Contributing

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📞 Contact

Developers:

Name GitHub
Ebisa Berhanu Ebo1996
Anam Tesfa anotesfa
Natnael Kefyalew Nati121442

University: Jimma University Institute of Technology Department: Software Engineering

Link URL
🌐 Live Demo mintnavigation.netlify.app
📁 Repository github.com/Ebo1996/mintnavigation

📝 License

MIT License © 2026 Ebisa Berhanu, Anam Tesfa, Natnael Kefyalew

See LICENSE for more information.


🙏 Acknowledgments

  • Ministry of Innovation and Technology (MInT) — For the opportunity
  • Mr. Dinber Getahun — Immediate Supervisor
  • Mr. Teferi Kibebew — Department Advisor
  • Jimma University — Internship program support

Made with ❤️ for the Ministry of Innovation and Technology, Ethiopia

⭐ Star this repo if you found it helpful!

About

A full-stack office navigation and directory system for Ethiopia's Ministry of Innovation & Technology (MInT) — helping visitors find departments, offices, managers, and government services.

Topics

Resources

Stars

5 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages