The Event Management System (EMS) is a Role-Based Access Control (RBAC) application designed to streamline event management with a secure and efficient approach. With predefined roles such as ADMIN, ORGANIZER, and VIEWER, alongside granular permissions like Manage Users, Manage Roles, Manage Events, and Register Events, the system ensures users have appropriate access based on their responsibilities.
- Create/Add Roles: Only
ADMINor users with themanage_rolespermission can create roles and assign permissions. - Read/View Roles: Only accessible to
ADMINor users with themanage_rolespermission. - Update Roles: Only
ADMINor users with themanage_rolespermission can modify role names or permissions. - Delete Roles: Only
ADMINor users with themanage_rolespermission can delete roles.
- Create/Add Users: Only
ADMINor users with themanage_userspermission can add users and set their account status (ACTIVEorINACTIVE). - Read/View Users: Only accessible to
ADMINor users with themanage_userspermission. - Update Users: Modify details like email, role, status, or additional permissions (
ADMINor users withmanage_users). - Delete Users: Only
ADMINor users with themanage_userspermission can delete users.
- Create/Add Events:
ORGANIZERor users withmanage_eventspermission can create events. - Read/View Events:
ORGANIZER(creator) or users withmanage_events/register_eventspermissions can view events.- Special Case: Log in as
sarves(predefinedORGANIZER) to view multiple events. If a newORGANIZERlogs in, no events will be listed until they create one.
- Update/Delete Events:
OnlyORGANIZER(creator) or users withmanage_eventspermission can update or delete events.
- Export to Excel: Accessible to
ORGANIZERor users withmanage_eventsandexport_eventspermissions. - Export to PDF: Planned for future implementation.
- View and Register:
VIEWERor users with theregister_eventspermission can view and register for events.
- Frontend:
- 🚀 React powered by Vite for lightning-fast development.
- 💻 Built with TypeScript, Hooks, and modern tools.
- 🎨 Material UI (MUI) for prebuilt, customizable components.
- 📖 Redux for centralized state management.
- 🎨 Tailwind CSS for responsive and modern UI styling.
git clone https://github.com/TinkerWizard/RBAC-Event-Management-System.gitcd RBAC-Event-Management-System
npm installnpm run devUse the following credentials to test the application:
| Role | Username | Password | Status |
|---|---|---|---|
| ADMIN | sadha | sadha | ACTIVE |
| ORGANIZER | sarves | sarves | ACTIVE |
| VIEWER | sanjay | sanjay | ACTIVE |
| VIEWER | saran | saran | INACTIVE |
| ORGANIZER | nalan | nalan | ACTIVE |
- Log in using the credentials above.
- Perform actions based on your role and permissions:
ADMIN: Manage users, roles, and permissions.ORGANIZER: Create, view, update, delete, and export events.VIEWER: View and register for events.
- Log in as an ADMIN:
- Use sadha's credentials to login.
- You are presented with cards and metric bars showing some metadata's of users and roles. Below that, you can see Roles table and Users tables. Also, you can see the events list since
sadhahas been given the permissionregister_events. - You will see Roles tables with predefined roles
ADMIN,ORGANIZERandVIEWER. - By default, you(even the admin) cannot delete/edit these roles. Since, the basic CRUD operations require these three roles.
- Add a role. Then, you can perform other operations such as read, update and delete roles.
- You cannot add a duplicate role.
- You can give multiple permissions for the role. Each permissions give you rights to access certain screens and certain actions.
- You can delete roles.
- You will see Users tables with predefined users
sadha,sarves,sanjay,saranandnalan. - You can filter users based on roles or status.
- You can sort based on username or email.
- By default, you(even the admin) cannot delete the users
sadha,sarvesandsanjay. Since, the basic CRUD operations require users with the respective rights. - Add a user. Then, you can perform other operations such as read, update and delete users or tinker around with
saranornalan. - Try logging in as
saran. Since,saranisINACTIVE, you won't be prompted to the dashboard. You have to log in as an admin to updatesaranasACTIVE. - You cannot add a duplicate username or email.
- You can give additional permissions for the user. Each permissions give you rights to access certain screens and certain actions.
- By giving
register_eventspermission to an ADMIN, the ADMIN can view the event list screen. Just like the usersadha. - You can delete users.
- Log in as an ORGANIZER:
- Use
sarvescredentials to log in as an ORGANIZER. - You are presented with cards showing some metadata's of events. Below that, you can see Events in Grid. Also, you can see the events list since
sarveshas been given the permissionregister_events. - The events section below has all the neccessary data of all events.
- You can do CRUD operations on the events listed.
- Since you're logged in as
sarves, you're presented with events that are added usingsarves. - If you login as
nalan, you wont see any events. You're free to add events to check how other ORGANIZER's events are not listed. Thus, you cannot read, update or delete other ORGANIZER's events. - You can export events details and get them as an excel sheet.
- You can delete events.
- Use
- Log in as a VIEWER:
- Use
sanjaycredentials to log in as an VIEWER. - You are presented with events list.
- You can filter/search the event list by typing the location.
- You can filter the event list based on the STATUS of the events.(Upcoming, Ongoing, Completed, Cancelled).
- You can sort events by Title or Date.
- Registering an event was not implemented and marked for future implementations.
- Use
- Minimal and sleek minimizes distraction
A clean and clutter-free interface reduces cognitive load, allowing users to focus on the essential features and tasks. Unnecessary elements are removed to maintain simplicity. - Easy navigation. All the required data is available on the same screen
Organizing information in a way that is easy to access and scan helps users accomplish tasks efficiently without switching between multiple screens or menus.
- Smooth and adaptive
The design adapts seamlessly to various screen sizes and orientations, ensuring a consistent experience on desktops, tablets, and mobile devices. Flexbox and grid layouts, along with responsive utilities, play a key role in achieving this adaptability. - Device-specific optimizations
Interactive elements are adjusted for touchscreens (e.g., larger buttons) on mobile devices, while keyboard and mouse-based interactions are optimized for desktop users.
- Real-time validation
Form fields validate input as users type, providing instant feedback to reduce errors and improve the user experience. For example, email fields check for valid email formats on the fly. - User-friendly error messages
Error messages are clear, concise, and actionable, guiding users to correct their input. Instead of "Invalid input," a message like "Password must be at least 6 characters" is more helpful. - Prevent submission errors
Validation ensures required fields are filled and data is in the correct format before submission, minimizing frustration and improving data accuracy.
- React for building the user interface.
- Redux for state management.
- Material UI for UI components.
- Tailwind CSS for styling.
- PDF Export: Enable exporting events to PDF.
- Notifications: Add notifications for event registrations.
- Activity Logs: Track and display user activity.
- Register events: Register and unregister events in real-time.
Q: Can multiple users share the same role?
A: Yes, roles can be assigned to multiple users.
Q: Can an organizer edit another organizer's events?
A: No, only the creator of the events can edit events.