diff --git a/README.md b/README.md index 0d6babe..c132749 100644 --- a/README.md +++ b/README.md @@ -1,30 +1,67 @@ -# React + TypeScript + Vite +# Project Pilot -This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. +## Overview -Currently, two official plugins are available: +A React-based project management application designed to enhance collaboration, finance management, and task management. The application features tailored user interfaces for different roles: -- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh -- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh +- **Project Manager (PM)** +- **Finance Manager (FM)** +- **Scrum Master (SM)** +- **Employee (E)** -## Expanding the ESLint configuration +## Key Features -If you are developing a production application, we recommend updating the configuration to enable type aware lint rules: +- **Collaboration Tools**: Facilitate team collaboration. +- **Finance Management**: Manage project budgets and expenses. +- **Task Management**: Assign and track tasks for team members. +- **Role-Specific UI**: Customized user experience based on roles. -- Configure the top-level `parserOptions` property like this: +## Getting Started -```js -export default { - // other rules... - parserOptions: { - ecmaVersion: 'latest', - sourceType: 'module', - project: ['./tsconfig.json', './tsconfig.node.json'], - tsconfigRootDir: __dirname, - }, -} -``` +1. **Fetch Local Data**: + - Scroll to the bottom of the page. + - Click on the footer. + - Navigate to "Data Refresh" to store data locally in the browser. -- Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked` -- Optionally add `plugin:@typescript-eslint/stylistic-type-checked` -- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and add `plugin:react/recommended` & `plugin:react/jsx-runtime` to the `extends` list +2. **Login**: + - Scroll to the bottom of the homepage. + - Click on "Login" or "Manage Account" from the footer. + +3. **Sign In**: + - Use the following credentials: + + | Username | Password | + | -------------- | -------- | + | pm | p | + | fm | f | + | sm | s | + | employee:e/1 | (empty) | + | employee:e/2 | (empty) | + | employee:e/3 | (empty) | + +4. **Dashboard**: + - Upon signing in, you will be redirected to your respective dashboard. + +## Detailed Functionality + +- **Project Manager (PM)**: + - Create projects. + - View overview of expenses and tasks. + +- **Finance Manager (FM)**: + - Allocate funds. + - Create and manage expenses. + +- **Scrum Master (SM)**: + - Assign tasks to employees. + +- **Employee (E)**: + - View assigned tasks. + +## Conclusion + +This project management application provides a comprehensive solution for team collaboration, financial oversight, and task management, ensuring a streamlined workflow tailored to specific user roles. + +##### `DEPRICATED AS OF JULY-2024` + +[![wakatime](https://wakatime.com/badge/user/94eceae7-683a-4d18-a44b-59d4ffd2eb5d/project/32051a46-239e-4241-8dad-76e9a347ad49.svg)](https://wakatime.com/badge/user/94eceae7-683a-4d18-a44b-59d4ffd2eb5d/project/32051a46-239e-4241-8dad-76e9a347ad49) \ No newline at end of file diff --git a/index.html b/index.html index 825b84f..529c1a9 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ - App + Project-Pilot diff --git a/package-lock.json b/package-lock.json index 27885f5..c986aa2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "project-pilot", - "version": "0.0.0", + "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "project-pilot", - "version": "0.0.0", + "version": "1.0.0", "dependencies": { "axios": "^1.7.2", "flowbite-react": "^0.10.1", diff --git a/package.json b/package.json index a4abfbd..439bdf9 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "project-pilot", "private": true, - "version": "0.0.0", + "version": "1.0.0", "type": "module", "scripts": { "dev": "vite", diff --git a/src/components/Notice.tsx b/src/components/Notice.tsx new file mode 100644 index 0000000..7fdf7c8 --- /dev/null +++ b/src/components/Notice.tsx @@ -0,0 +1,18 @@ +export const Notice = () => { + return ( +
+ + + + <>DEPRICATED AS OF JULY-2024 +
+ ) +} \ No newline at end of file diff --git a/src/components/fm/FMTable.tsx b/src/components/fm/FMTable.tsx index f223ec6..68e4b33 100644 --- a/src/components/fm/FMTable.tsx +++ b/src/components/fm/FMTable.tsx @@ -125,7 +125,7 @@ export const FMTable = () => { return (

Other Expenses Tracker

-
+
diff --git a/src/components/layout/AppFooter.tsx b/src/components/layout/AppFooter.tsx index 1f90ced..a3ba815 100644 --- a/src/components/layout/AppFooter.tsx +++ b/src/components/layout/AppFooter.tsx @@ -1,39 +1,73 @@ import { Link } from "react-router-dom" import LogoSVG from "../../assets/logo/LogoSVG" +import { useState } from "react" export const AppFooter = () => { + const [show, setShow] = useState(true) return ( - +
+ {show ? + +
{ setShow(!show) }}> + © 2024 Project-Pilot + {show ? : } +
+
+ : +
+ + +
{ setShow(!show) }}> + © 2024 Project-Pilot + {show ? : } +
+
+
+ } +
) } \ No newline at end of file diff --git a/src/components/layout/AppNavbar.tsx b/src/components/layout/AppNavbar.tsx index 81267fd..fad89d2 100644 --- a/src/components/layout/AppNavbar.tsx +++ b/src/components/layout/AppNavbar.tsx @@ -1,40 +1,31 @@ import { Link } from "react-router-dom"; import { ThemeToggler } from "../ThemeToggler"; import LogoSVG from "../../assets/logo/LogoSVG"; -import { useEffect, useState } from "react"; -import { GetItem, SetItem } from "../../functions/ArrayData"; -import PageName from "../../functions/PageName"; +// import { useEffect, useState } from "react"; +// import { GetItem, SetItem } from "../../functions/ArrayData"; export const AppNavbar = () => { - const [id, setId] = useState(GetItem('login_details')); + // const [id, setId] = useState(GetItem('login_details')); - useEffect(() => { - PageName('Project-Pilot'); - }, []); - - useEffect(() => { - console.log(`ID has changed to: ${id}`); - }, [id]); - - const handleSignOut = () => { - SetItem('login_details', ''); - setId(''); - }; + // const handleSignOut = () => { + // SetItem('login_details', ''); + // setId(''); + // }; return (
- + - + Project-Pilot
-
    + {/*
    • { !id ? ( @@ -48,7 +39,7 @@ export const AppNavbar = () => { ) }
    • -
    +
*/}
diff --git a/src/components/sm/SMTable.tsx b/src/components/sm/SMTable.tsx index 4d692a7..4f3f593 100644 --- a/src/components/sm/SMTable.tsx +++ b/src/components/sm/SMTable.tsx @@ -113,7 +113,7 @@ export const SMTable = () => { return (

Tasks insight

-
+
diff --git a/src/pages/DataRefresh.tsx b/src/pages/DataRefresh.tsx index 6ad96c9..29bf8ad 100644 --- a/src/pages/DataRefresh.tsx +++ b/src/pages/DataRefresh.tsx @@ -19,7 +19,7 @@ export const DataRefresh = () => { return (
diff --git a/src/pages/Employee.tsx b/src/pages/Employee.tsx index 733ca2f..acf641d 100644 --- a/src/pages/Employee.tsx +++ b/src/pages/Employee.tsx @@ -70,7 +70,7 @@ export const Employee = () => { thisTasks .filter((task: TaskInterface) => task.status !== 'completed') .map((task: TaskInterface) => ( -
@@ -110,7 +110,7 @@ export const Employee = () => { thisTasks .filter((task: TaskInterface) => task.status === 'completed') .map((task: TaskInterface) => ( -
+

Task: {task.title} diff --git a/src/pages/FM.tsx b/src/pages/FM.tsx index c82c7aa..a3a5dbe 100644 --- a/src/pages/FM.tsx +++ b/src/pages/FM.tsx @@ -71,7 +71,7 @@ export const FM = () => {

Quick insight

{finances.map((finance: FinanceInterface) => ( -
+

{ projects.find(project => project.project_id === finance.project_id)?.name @@ -91,7 +91,7 @@ export const FM = () => {

Add-Manage

-
+
{
{ employees.map((employee: EmployeeInterface, index) => ( -
+

{employee.name} @@ -113,7 +113,7 @@ export const SM = () => {
{ projects.map((project: ProjectInterface, index) => ( -
+

{project.name} @@ -141,7 +141,7 @@ export const SM = () => {

Create Tasks

-
+