CtrlAltDelete

# CtrlAltDelete https://johnvardanyan.github.io/CtrlAltDelete/ Logo

Synopsis

NinjaManager is a web-based task management application tailored for the administrative team at Code Ninjas, owned by Lego Haryanto. This tool is designed to efficiently handle day-to-day administrative tasks, including membership adjustments, customer request management, and task tracking.

The application is built to integrate seamlessly with the existing Code Ninjas Dashboard, ensuring familiarity and ease of use for employees. Key functionalities include a straightforward task creation system, a comprehensive calendar view for tracking due dates, and a dynamic task status indicator to monitor progress, past due, or completed tasks.

NinjaManager offers a clean, user-friendly interface with essential navigation options such as “Home”, “Create Task”, “Calendar”, “Overview”, and “History”. Each section provides specific functionalities - from displaying current tasks on the Home page to a detailed history of completed tasks. The task management process is streamlined, allowing for easy assignment of tasks to employees, setting priorities, and editing task details.

With NinjaManager, the Code Ninjas administrative team can effectively track and manage tasks, ensuring timely responses and efficient operations. This application is a strategic step towards enhancing administrative efficiency, providing a simple yet powerful tool for day-to-day management.

Home

Create

Installation

Prerequisites

Make sure you have the following installed on your machine:

Installation

  1. Clone the Repository
  2. Install Dependencies:
    • In the backend directory, run:
      npm install
      
    • Backend dependencies include:
      • dotenv (version 16.3.1)
      • express (version 4.18.1)
      • mongodb (version 6.2.0)
      • mongoose (version 7.6.3)
      • update (version 15.0.4)
      • nodemon (version 3.0.1) (installed globally) - Frontend dependencies include:
      • @testing-library/jest-dom (version 5.17.0)
      • @testing-library/react (version 13.4.0)
      • @testing-library/user-event (version 13.5.0)
      • react (version 18.2.0)
      • react-datepicker (version 4.21.0)
      • react-dom (version 18.2.0)
      • react-router-dom (version 6.17.0)
      • web-vitals (version 2.1.4)
  3. Configuration:

Database set-up:

To get your URI that will be used in the next step, navigate to ‘Database’ under ‘Deployment’. Locate your database and click on ‘Connect’. A pop-up window will appear. In this pop-up window, select the ‘Drivers’ option. Your database’s URI should be visible now. Copy it as it will be used in the next step.

Mailtrap set-up:

Once your domain is set-up, you will be able to find your mailtrap USER_NAME and PASSWORD on that same page or in settings. Add the following information using the Environment set-up below.

NinjaManager Roles set-up: NinjaManager currently has 3 roles: employee, admin, and owner. Both owner and admins can assign admins to employees using the “users” dropdown menu which allows users with those roles to delete tasks from the “History” page, however, only the Owner can remove admin privileges and remove users from the database. To assign ownership, you can do one of the 2 options:

Environment set-up:

Replace <username> and <password> with your actual credentials. Replace OWNER_EMAIL with your email. Replace EMAIL_USERNAME and EMAIL_PASSWORD with your mailtrap username and password.

  1. Connect to Backend Server, Database, and starting Development Server:
    • In the terminal, run the following command in the root directory:
      npm start
      
  2. App Startup:
    • The app should start up.

Deployment

Please refer to the following software and system requirements to ensure your machine can support our application.

Software Requirements:

System Requirements

Follow the steps below to deploy this project locally on your machine:

  1. Open Studio Visual Code.

  2. Go to File and click on Open Folder.

  3. Locate your CtrlAltDelete Repository (https://github.com/johnvardanyan/ctrlaltdelete) folder and click on Open.

  4. Once opened, navigate to Terminal.

  5. Click anywhere inside the Terminal and input the following command: npm start

  6. Next, you should see mongoDB local server start on port 8000 & local host should open on default browser on port 3000.

Testing

IDE: Visual Studio Code (version 1.89.0)

Testing Software:

Operating System: Windows 10 OS (19045.4291) version 22H2

Jest Configuration:

Open a terminal by selecting Terminal + New Terminal in the upper left-hand corner of the IDE. Make sure you are in the repository’s main file (CtrlAltDelete).

jest –init will have created a jest.config.js file. Please ensure the following configurations are set:

const config = {
clearMocks: true,
collectCoverage: true,
setupFilesAfterEnv: ['./jest.setup.js'],
moduleNameMapper: { '\\.(css|less|scss|sass)$': 'identity-obj-proxy' },
transform: { '^.+\\.(js|jsx|ts|tsx)$': ['babel-jest', { configFile: "./babel.config.js" }] },
coverageDirectory: "coverage",
testEnvironment: "jest-environment-jsdom",
verbose: true,
};

Selenium Configuration:

Open a terminal by selecting Terminal + New Terminal in the upper left-hand corner of the IDE. Make sure you are in the repository’s main file (CtrlAltDelete).

Developer Instructions

Required Software:

Required Libraries:

Frontend Dependencies:

Backend Dependencies:

Coding Standards:

Style Guidelines:

- Frontend Directory:
	- Public: Static files like the main HTML template and assets. 
 			 - Src: 
			- Components: Contains reusable React components for different UI parts. 
			- Context: Manages global state and context providers for the application. 
			- CSS: Holds all CSS files for styling different components and pages. 
			- Hooks: Custom hooks like useAuthContext.js and useTasksContext.js. 
			- Pages: Complete pages for the app, such as Login.js, Home.js, and Profile.js. 
			- App.js: The main entry point of the frontend application. 

Timeline

Key Milestones in CSC 190:

Key Milestones in CSC 191:

Credits

Meet the Team:

License

All rights are observed. This project is not open source.