GithubHelp home page GithubHelp logo

cpbaja / parts-management Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 1.0 777 KB

This repository contains the Parts Management software for Cal Poly's Baja SAE team. It features a user-friendly UI for team members to add, edit, and monitor the parts they need to purchase or manufacture for the Baja car. The software holds information about a part's subsystem, subassembly, status, priority, stock, cad, and much more. This software is currently in alpha and unreleased.

Python 37.46% HTML 4.52% JavaScript 58.02%
webapp database bom parts-management bom-3-electric-jubilee

parts-management's Introduction

CPBaja Parts Management

CP Baja Parts-Management CI

Overview

This repository contains the Parts Management software for Cal Poly's Baja SAE team. It features a user-friendly UI for team members to add, edit, and monitor the parts they need to purchase or manufacture for the Baja car. The software holds information about a part's subsystem, subassembly, status, priority, stock, cad, and much more. This software is currently in alpha and unreleased.

Click here to view the UI prototype.

Development Environment Setup

Follow these steps to set up the development environment.

  1. Clone this repository.

  2. Install node.js from this link. We do not use node.js but we do use npm (node package manager).

  3. In the frontend directory, run the following command to install frontend dependencies:

    npm install

  4. In the backend directory, run the following command to install backend dependencies:

    pip install -r requirements.txt

  5. In the backend directory, add the .env file to access the database. Retrieve this file from a team member who maintains this code.

For more detailed instructions, see the backend and frontend readme files.

  • Click here to view the backend source and readme file.
  • Click here to view the frontend source and readme file.

Style Checking

PyCodeStyle and PyLint for Python

To install PyCodeStyle, run the following command:
pip install pycodestyle

In your editor of choice, add the python path and enable linting. For VSCode, open the command palette (Ctrl+Shift+P) and select the Python: Enable Linting command.

Alternatively, for VSCode, add the following to .vscode/settings.json:

{
  "python.pythonPath": "<path>",
  "python.linting.Enabled": true,
  "python.linting.lintOnSave": true
}

Replace path with the python path.

Prettier and ESLint for JavaScript

This setup is inspired by this tutorial. Please follow the link for further guidance.

To install ESLint and Prettier, run the following command in the frontend directory:
npm install --save-dev eslint prettier eslint-config-prettier eslint-plugin-prettier husky lint-staged

The following Prettier options are modified from their default value:

Option Description
"jsxBracketSameLine": true Put the > of a multi-line JSX element at the end of the last line instead of being alone on the next line (does not apply to self closing elements).
"endOfLine": "auto" Maintain existing line endings (mixed values within one file are normalized by looking at what’s used after the first line).

Format on Save

In your editor of choice, enable format on save. For VSCode, add the following to .vscode/settings.json:

{
  "editor.defaultFormatter": null,
  "editor.formatOnSave": true,
  "[javascript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  }
}

parts-management's People

Contributors

iangallagherm avatar rahul-go avatar rockjack00 avatar

Watchers

 avatar  avatar

Forkers

visioninhope

parts-management's Issues

Implement Manufacturing Status in Frontend

As a technical director, I would like to be able to distinguish between "complete for go/no-go" and "complete for competition" (with verification of available quantity), so that I can focus on which parts are most urgent during different parts of the build season.

Time Estimate: 1 hour

Present final project

Develop a final presentation.
Checklist here.

  • Oral Presentation
  • Update Github repository and Kanban board
  • Project documentation
  • Unit testing
  • Continuous Integration
  • Project Overall Implementation

Time Estimate: 4 hours
Actual Time: 4 hours

Add part quantities to frontend

As a subsystem lead, I want to keep track of parts and how many of each have been made / ordered so that I know how many spares I have.

Time Estimate: 4 hours

Validation on ordering/manufacturing priorities

As a subsystem lead, I would like the ordering priority to forcibly have a higher priority than the manufacturing priority, so that their use is more streamlined.

Time Estimate: 2 hours

Set up core frontend

Implement a basic frontend using React.js, starting with the Overall View page.

Add CAD/drawing links to full edit page

As a former lead, I want to be able to click on a link to the drawing and routing sheet (if it exists), so that I can easily see the part in question.

Time Estimate: 2 hours

Show details on quick view

As a subsystem lead, I would like to be able to hover over a component so that I can see a summary of its details.

Hide extraneous part information unless onClick'd.

Time Estimate: 6 hours
Actual Time: 6 hours

Filter items by type

As a Subsystem Lead, I want to see all of the fasteners used in my subsystem, so that I can order them all at the same time.

Create use case diagram

The goal of this assignment is to design a UML use case diagram for your project as a form of providing a big picture of the desired functionalities (scope) and allowing us to define what would be the MVP (Minimum Viable Product) for the quarter.
Canvas page here.

  • Use Cases names
  • Actors
  • Communication Association
  • Include and External relationships
  • Others

Time Estimate: 1 day

Link to diagram

Add/Edit subassemblies

As a technical director, I want to be able to easily create and remove subassemblies, so that I can continue to use this tool as the car evolves.

Set up frontend routing

As management, I want to be able to type /subsystem (where subsystem is replaced by the subsystem name) into the URL to quickly filter parts by subsystem.

Time Estimate: 1 day
Time Spent: 10 hr

Filter Items by type

As a Subsystem Lead, I want to see all of the fasteners used in my subsystem, so that I can order them all at the same time.

Time Estimate: 1 hour

Bug: Subassembly does not clear when switching subsystems

It may seem to clear because the subassembly selection goes blank, but the frontend is still requesting the subassembly filter from the backend.

How to duplicate:

  1. Select a subsystem
  2. Select a subassembly
  3. Select a different subsystem
  4. Observe that the get request to the backend still contains the subsystem filter from the previous subsystem.

Set up backend core

Implement a basic Python / Flask Backend to interface between the frontend and database.

Search Bar

As a team member, I want to be able to search the inventory tracker for a specific part, so that I can quickly determine if it in stock.

Handle status codes correctly

The backend should return the appropriate status code at each request. The frontend should interpret these status codes and act appropriately.

Time Estimate: 2 hours
Reach Goal

Filter Parts by Machine

As a manufacturing lead, I want to be able to sort parts by which machines and processes they require, so that I can schedule the manufacturing timeline for the upcoming weeks.

As a machinist, I want to see all of the parts that I am planning to make and their status, so that I can easily plan out when I will machine things.

Time Estimate: 2 hours

Create three users each

Each team member is required to write three user stories. There should be some team coordination to avoid overlapping stories.
Canvas Assignment here.

  • Tyler (3)
  • Ian (3)
  • Rahul (3)

Time Estimate: 1hr

Set up style checker

Set up tools to assist team members in making the code consistent in terms of code style. Depending on the IDE you're using, code linters/formatters may be pluggable into your IDE. Otherwise, you can run some of the code linters/formatters in the command line as well.
Canvas page here.

Time Estimate: 4 hours

Write backend tests

At minimum, hit 100% coverage.

Time Estimate: 2 hours
Actual Time: 2 hours

Add bearing type to backend

As a lead, I want to be able to differentiate bearings from other kinds of parts, so that they are easy to order in bulk.

Time Estimate: 1 hour
Time Spent: 15 min

Add basic full edit page

Implement a React.js frontend page for editing parts.

Time Estimate: 1 day
Actual Time: 8 hours

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.