Skip to content
This repository has been archived by the owner on Nov 14, 2024. It is now read-only.

Commit

Permalink
fixes & Release Ready
Browse files Browse the repository at this point in the history
  • Loading branch information
pratikkabade authored Jul 27, 2024
1 parent 0fa3c03 commit 4fb02fe
Show file tree
Hide file tree
Showing 16 changed files with 180 additions and 98 deletions.
81 changes: 59 additions & 22 deletions README.md
Original file line number Diff line number Diff line change
@@ -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)
2 changes: 1 addition & 1 deletion index.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>App</title>
<title>Project-Pilot</title>
<script src="https://cdn.tailwindcss.com"></script>
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/full.min.css" rel="stylesheet" type="text/css" />
<link rel="icon" href="./src/assets/logo/Logo.svg" type="image/svg+xml">
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "project-pilot",
"private": true,
"version": "0.0.0",
"version": "1.0.0",
"type": "module",
"scripts": {
"dev": "vite",
Expand Down
18 changes: 18 additions & 0 deletions src/components/Notice.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
export const Notice = () => {
return (
<div role="alert" className="alert alert-error w-fit p-1 px-2">
<svg
xmlns="http://www.w3.org/2000/svg"
className="h-6 w-6 shrink-0 stroke-current"
fill="none"
viewBox="0 0 24 24">
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z" />
</svg>
<>DEPRICATED AS OF JULY-2024</>
</div>
)
}
2 changes: 1 addition & 1 deletion src/components/fm/FMTable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ export const FMTable = () => {
return (
<div>
<h2 className='mt-10 text-2xl font-semibold'>Other Expenses Tracker</h2>
<div className={`card card-table !w-fit overflow-x-auto ${animations ? 'skeleton slide-up' : 'bg-base-100'}`}>
<div className={`card card-table !w-fit overflow-x-auto ${animations ? 'bg-base-100 slide-up' : 'bg-base-100'}`}>
<table className="table cursor-default text-xl">

<thead>
Expand Down
98 changes: 66 additions & 32 deletions src/components/layout/AppFooter.tsx
Original file line number Diff line number Diff line change
@@ -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 (
<footer className="footer bg-base-200 rounded-t-3xl border-t-2 border-slate-300 text-base-content mt-10 p-10">
<aside>
<LogoSVG size={50} />
<p>
Project-Pilot
<br />
Your project, our platform
</p>
</aside>
<nav>
<h6 className="footer-title">Services</h6>
<Link to={'/DataRefresh'}>
<a className="link link-hover">Data Refresh</a>
</Link>
<a className="link link-hover">Design</a>
<a className="link link-hover">Marketing</a>
<a className="link link-hover">Advertisement</a>
</nav>
<nav>
<h6 className="footer-title">Company</h6>
<a className="link link-hover">About us</a>
<a className="link link-hover">Contact</a>
<a className="link link-hover">Jobs</a>
<a className="link link-hover">Press kit</a>
</nav>
<nav>
<h6 className="footer-title">Legal</h6>
<a className="link link-hover">Terms of use</a>
<a className="link link-hover">Privacy policy</a>
<a className="link link-hover">Cookie policy</a>
</nav>
</footer>
<div className="mt-10">
{show ?
<a href="#footer">
<div className="text-center p-5 hover:bg-base-300 hover:cursor-pointer" onClick={() => { setShow(!show) }}>
© 2024 Project-Pilot
{show ? <i className="fas fa-chevron-up ml-2"></i> : <i className="fas fa-chevron-down ml-2"></i>}
</div>
</a>
:
<div>
<footer id="footer" className="footer text-base-content p-10 bg-base-300">
<aside>
<LogoSVG size={50} />
<p>
Project-Pilot
<br />
Your project, our platform
</p>
</aside>
<nav>
</nav>
<nav>
</nav>
<nav>
<h6 className="footer-title">Features</h6>
<a className="link link-hover group" target="_blank" href="https://github.com/pratikkabade/Project-Pilot/blob/main/README.md#getting-started">
Getting Started
<span className="opacity-0 group-hover:opacity-100"></span>
</a>
<Link to={'/DataRefresh'}>
<a className="link link-hover">Data Refresh</a>
</Link>
<Link to={'/Login'}>
<a className="link link-hover">Accounts Page</a>
</Link>
</nav>
<nav>
<h6 className="footer-title">Company</h6>
<Link to={'/About'}>
<a className="link link-hover">About</a>
</Link>
<a className="link link-hover group" target="_blank" href="https://github.com/pratikkabade/Project-Pilot/">
GitHub
<span className="opacity-0 group-hover:opacity-100"></span>
</a>
<a className="link link-hover group" target="_blank" href="https://github.com/pratikkabade/Project-Pilot/issues">
Issues
<span className="opacity-0 group-hover:opacity-100"></span>
</a>
<a className="link link-hover group" target="_blank" href="https://github.com/pratikkabade/Project-Pilot/projects?query=is%3Aopen">
Roadmap
<span className="opacity-0 group-hover:opacity-100"></span>
</a>
</nav>
</footer>
<a href="#footer">
<div className="text-center p-5 bg-base-300 hover:bg-base-200 hover:cursor-pointer" onClick={() => { setShow(!show) }}>
© 2024 Project-Pilot
{show ? <i className="fas fa-chevron-down ml-2"></i> : <i className="fas fa-chevron-down ml-2"></i>}
</div>
</a>
</div>
}
</div>
)
}
31 changes: 11 additions & 20 deletions src/components/layout/AppNavbar.tsx
Original file line number Diff line number Diff line change
@@ -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 (
<div className="navbar fixed z-50 shadow-xl backdrop-blur-sm bg-base-100 rounded-b-3xl px-4 pr-6">
<div className="flex-1">
<a className="btn btn-ghost text-xl hover:text-blue-600 hover:bg-base-100">
<Link to={'/dashboard'} className="flex flex-row">
<Link to={'/home'} className="flex flex-row">
<LogoSVG size={30} />
</Link>
<Link to={'/home'} className="flex flex-row">
<Link to={'/dashboard'} className="flex flex-row">
Project-Pilot
</Link>
</a>
</div>
<div className="flex-none">
<ul className="px-1 items-center mr-2 font-bold">
{/* <ul className="px-1 items-center mr-2 font-bold">
<li className="px-3">
{
!id ? (
Expand All @@ -48,7 +39,7 @@ export const AppNavbar = () => {
)
}
</li>
</ul>
</ul> */}
<ThemeToggler />
</div>
</div>
Expand Down
2 changes: 1 addition & 1 deletion src/components/sm/SMTable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ export const SMTable = () => {
return (
<div>
<h2 className=' mt-10 text-2xl font-semibold'>Tasks insight</h2>
<div className={`card card-table ${animations ? 'skeleton slide-up' : 'bg-base-100'}`}>
<div className={`card card-table ${animations ? 'bg-base-100 slide-up' : 'bg-base-100'}`}>
<table className="table cursor-default text-xl">
<thead>
<tr className="text-xl">
Expand Down
2 changes: 1 addition & 1 deletion src/pages/DataRefresh.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ export const DataRefresh = () => {
return (
<div className='flex flex-row justify-center align-middle items-center py-40 pt-60'>
<button
className='btn btn-primary'
className='btn btn-primary rounded-full'
onClick={saveData}>
DataRefresh
</button>
Expand Down
4 changes: 2 additions & 2 deletions src/pages/Employee.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ export const Employee = () => {
thisTasks
.filter((task: TaskInterface) => task.status !== 'completed')
.map((task: TaskInterface) => (
<div key={task.task_id} className={`card ${animations ? 'skeleton slide-up' : 'bg-base-100'} flex flex-col m-3
<div key={task.task_id} className={`card ${animations ? 'bg-base-100 slide-up' : 'bg-base-100'} flex flex-col m-3
${task.status === 'in-progress' ? 'bg-yellow-50 dark:bg-yellow-900' :
task.status === 'pending' ? 'bg-red-50 dark:bg-red-950' : ''}
`}>
Expand Down Expand Up @@ -110,7 +110,7 @@ export const Employee = () => {
thisTasks
.filter((task: TaskInterface) => task.status === 'completed')
.map((task: TaskInterface) => (
<div key={task.task_id} className={`card ${animations ? 'skeleton slide-up' : 'bg-base-100'} border-2 !border-green-400 m-3`}>
<div key={task.task_id} className={`card ${animations ? 'bg-base-100 slide-up' : 'bg-base-100'} border-2 !border-green-400 m-3`}>
<h3 className='text-xl font-normal'>
Task:
<span className='font-bold ml-2'>{task.title}</span>
Expand Down
6 changes: 3 additions & 3 deletions src/pages/FM.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ export const FM = () => {
<h2 className=' mt-10 text-2xl font-semibold'>Quick insight</h2>
<div className="flex flex-row flex-wrap">
{finances.map((finance: FinanceInterface) => (
<div key={finance.project_id} className={`card ${animations ? 'skeleton slide-up' : 'bg-base-100'}`}>
<div key={finance.project_id} className={`card ${animations ? 'bg-base-100 slide-up' : 'bg-base-100'}`}>
<h3 className='text-2xl font-bold'>
{
projects.find(project => project.project_id === finance.project_id)?.name
Expand All @@ -91,7 +91,7 @@ export const FM = () => {

<h2 className=' mt-10 text-2xl font-semibold'>Add-Manage</h2>
<div className="flex flow-row flex-wrap">
<div className={`card ${animations ? 'skeleton slide-up' : 'bg-base-100'}`}>
<div className={`card ${animations ? 'bg-base-100 slide-up' : 'bg-base-100'}`}>
<select
className="select select-bordered w-full "
value={newProjectID} onChange={(e) => setnewProjectID(e.target.value)}>
Expand Down Expand Up @@ -183,7 +183,7 @@ export const FM = () => {
</button>
</div>

<div className={`card ${animations ? 'skeleton slide-up' : 'bg-base-100'}`}>
<div className={`card ${animations ? 'bg-base-100 slide-up' : 'bg-base-100'}`}>
{
projects.map((_: ProjectInterface, index) => (
<div key={index} className="flex flex-col">
Expand Down
Loading

0 comments on commit 4fb02fe

Please sign in to comment.