This is a React-based frontend project designed with modern tools and frameworks. The application incorporates various features like authentication, task management, real-time notifications, permission handling, and more, making it suitable for scalable and complex web applications.
- Features
- Project Structure
- Installation
- Usage Instructions
- Core Application Workflow
- API Documentation
- Component Highlights
- Custom Hooks
- Context Management
- Screenshots
- Development Workflow
- Future Scope
- Contributing
- License
- Contact
- Authentication: Secure login and sign-up forms with validation.
- Task Management: Intuitive drag-and-drop task board for organizing projects.
- Role-Based Access Control: Manage roles, permissions, and access levels.
- Real-Time Notifications: Stay updated with live notifications for task updates and system events.
- Responsive Design: Optimized for mobile and desktop views.
- Customizable Components: Built using reusable UI components.
- State Management: Context API for managing user and workspace state.
- Dynamic Sidebar: Interactive and personalized sidebar with company and workspace management.
frontend_project
├── components.json # Component metadata
├── package.json # Project dependencies and scripts
├── tailwind.config.js # Tailwind CSS configuration
├── tsconfig.json # TypeScript configuration
├── tsconfig.node.json # Node-specific TypeScript configuration
├── vite.config.ts # Vite configuration
├── yarn.lock # Yarn lock file
├── src # Source files
│ ├── api # API services for backend integration
│ ├── components # UI components and forms
│ ├── context # Global context providers
│ ├── hooks # Custom React hooks
│ ├── pages # Page components
│ ├── styles # Global styles
│ ├── types # TypeScript interfaces and types
│ └── utils # Utility functions
- Node.js (>= 14.x)
- Yarn (>= 1.22.x)
- Clone the repository:
git clone https://github.com/nagadheerajb/fs19_frontend.git cd your-repo-name
- Install dependencies:
yarn install
- Start the development server:
yarn dev
- Open the app in your browser at
http://localhost:3000
.
-
Adding a Task:
- Navigate to the Task Board page.
- Click the "Create Task" button.
- Fill in the task details and assign it to a user.
- Click "Submit" to save.
-
Managing Roles:
- Go to the Role Management page.
- Create a new role or edit an existing one.
- Assign permissions and save changes.
-
Receiving Notifications:
- Perform an action like adding a task or updating a role.
- Observe the real-time notification popup in the application header.
-
Using the Sidebar:
- Navigate through dynamic links for different sections.
- Add a new company or workspace using the "Add" button with a modal form.
- View updates in real-time as changes are made.
-
Sign Up for the Application:
- Users can register with their details to create an account.
-
Log In to the Application:
- After registering, users can securely log in to their account.
-
Create a New Company:
- Users can create a new company to group related projects and workspaces.
-
Set Up a Workspace:
- Within a company, users can create workspaces to organize their projects.
-
Create Projects Under the Workspace:
- Users can define specific projects within a workspace.
-
View and Create Tasks:
- Navigate to the task board to view tasks.
- Create new tasks and assign them to users.
-
Assign Tasks to Users:
- Users can assign tasks to other team members, ensuring collaboration.
-
Comment Under Tasks:
- Add comments to tasks for effective communication and tracking.
-
Receive Real-Time Notifications:
- Users are notified instantly of updates like task assignments or new comments.
-
Promote and Demote Tasks:
- Tasks can be prioritized or reprioritized to reflect their importance.
Key API services in the project:
-
Authentication:
auth.ts
: Handles login and signup operations.
-
Tasks:
task.ts
: API operations for fetching, creating, and managing tasks.
-
Roles and Permissions:
role.ts
: Manage user roles.permission.ts
: Handle permission-related API calls.rolepermission.ts
: Manage relationships between roles and permissions.
-
Notifications:
notification.ts
: Fetch and manage real-time notifications.
-
Company Management:
company.ts
: Handles company-related data operations.
-
Workspace Management:
workspace.ts
: Manage workspaces.
- Reusable Inputs: Components like
email-input.tsx
,password-input.tsx
, andfirst-name-input.tsx
simplify form creation. - Modal Form:
modal-form.tsx
andModalFormHandler.tsx
allow dynamic form rendering within modals. - Protected Routes:
protected-route.tsx
ensures secure navigation for authenticated users.
- Dashboard Content:
dashboard-content.tsx
serves as the main container for displaying user and project data. - Details Management: Components like
company-details.tsx
andworkspace-details.tsx
handle the display and editing of entity details. - Collapsible Projects:
ProjectCollapsible.tsx
organizes projects in expandable sections.
- Login Form:
login-form.tsx
with modular components for header, body, and footer. - Sign-Up Form:
sign-up-form.tsx
with similar modularity and validation.
- Task Board:
TaskBoardContent.tsx
with drag-and-drop task management. - Task Dialog:
TaskDialog.tsx
provides a modal for editing task details. - User Search:
UserSearch.tsx
facilitates assigning tasks to users.
- Dynamic Navigation:
Side-bar.tsx
withSidebarNav.tsx
for rendering links. - Action Buttons: Add companies and workspaces with
SidebarButton.tsx
.
- Permission Management:
PermissionManagementContent.tsx
for handling access controls. - Role Management:
RoleManagementContent.tsx
andRolePermissionManagementContent.tsx
for defining and assigning roles and permissions.
-
Authentication:
useLoginMutation.ts
: Handle login logic.useSignUpMutation.ts
: Simplify user registration processes.
-
Data Fetching:
useFetchUser.ts
: Fetch the current logged-in user's data.useNotifications.ts
: Manage real-time notifications.useTasks.ts
: Fetch and manage task data.
-
Mutations:
useCommentMutations.ts
: Handle comment-related actions.useCompanyMutations.ts
: Manage company data operations.useWorkspaceMutations.ts
: Handle workspace creation and updates.
-
Permission Handling:
usePermissions.ts
: Check and manage user permissions.useRolePermissions.ts
: Fetch and manage role-permission relationships.
- Global State Management:
user-context.tsx
: Provides global user data and actions.workspace-context.tsx
: Manages workspace state and operations.
-
Setting Up:
- Follow the installation steps above.
-
Debugging:
- Use the browser developer tools.
- Check logs for errors in the console.
- Add unit and integration tests.
- Improve accessibility features.
- Integrate advanced analytics.
- Expand role and permission customizations.
- Enhance notification settings and controls.
- Implement advanced sidebar features like collapsible groups and drag-and-drop reordering.
Contributions are welcome! Follow these steps:
- Fork the repository.
- Create a new branch:
git checkout -b feature-name
- Commit your changes:
git commit -m "Add feature-name"
- Push to your branch:
git push origin feature-name
- Open a pull request.
This project is licensed under the MIT License.
For inquiries or support, please email [email protected].