• OrderPCBs.com

    A website for ordering printed circuit boards, via a direct API connection to the PCBWeb tool. This site will use the Stripe API for payment processing.

  • Customer viewable pages

    We need to have customer viewable pages for the ordering and checkout process.

    The customer should be able to see details about their orders. We do not expect at this time to provide real-time status of the orders, only that they have been ordered and the details about which design, the shipping info, which board house it was ordered from, the cost and any other details that are available at the time the order is placed.

  • Board House Admin pages

    For each board house we need to have the ability for someone to enter the board ordering and construction options (board material, board colors, maximum number of layers, minimum drill sizes, and so on). We cannot know all of the types of options available so this page should be flexible. Some of this information will be used for design rule checking in the PCBWeb tool, and some of it will be used for displaying ordering options.

  • API

    The API will do the following:

    • Give the PCBWeb tool the design rules and the ordering options.
      • Provide a quote endpoint that will provide a list of quotes to the tool based on quantity and turnaround.
      • Accept an order from the tool
  • Ordering and Checkout pages

    We have a design for these that was created by Nic Perner. See the PCBWeb Sierra Checkout mockups at https://www.dropbox.com/sh/6j7p2eb65o1dtgz/NE2HufPIns

    Important Note

    We have not yet determined if the design options will be changeable at checkout time. It seems likely that we may restrict these changes to the tool only. But the user might appreciate the flexibility to change these options on the website too. These changes may drive a price change.

  • Order History

    The order history will show a list of the orders for the customer. The customer may also see the details for an order. The customer will not be able to make any changes in the order history page.

  • Design Options

    Each design option will typically have a name, a list of possible values, and optionally a price associated with each of the values. This price may be an absolute amount or a percent based on.

  • Design Rules

    Each design rule should have a name and a minimum or maximum value, or a checkbox for design rules that are allowed/not allowed types of checks. Keith Ackermann will provide the list of supported design rules.

  • Board House Payments

    Initially we will have two options:
    Percentage of order cost - we keep some percent of the order cost.
    Percent over order cost - we add a percentage amount over the cost of the board.

  • Here is a design for the API portion of the site that was done by a contractor. Do not feel that you must conform to this design. However, the sequence diagram is pretty accurate. The Spooler object in the sequence diagram is no longer used. So any interactions with this object in the diagram should be ignored. Also, the gerber files will be uploaded as part of the POST api/OrderBoard call. So any subsequent tests for if the gerber is “complete” should be ignored.

    https://gingkoapp.com/pcbweb-board-orders

    Some of the API calls and web pages listed in the sequence diagram in the link above are not correct. Here is the current list of API calls and web pages that should be coded on this site:

    API calls
    POST api/QuoteBoard
    POST api/OrderBoard

    Web pages
    checkout/order#
    payment/order#
    order/order#

  • Sierra APIs

    Our first board house will be Sierra Circuits. You can access their APIs and documentation on this URL.

    apistaging.protoexpress.com

    LOGIN ID: sierra-pcbweb-admin
    Password: 3102518

    Existing Code

    We have some PHP code that was written by a contractor for this project. It is incomplete, but it does work for the api/QuoteBoard call. The remainder of the code may be of limited help. We also have some html/css/javascript that was written to implement Nic’s design for the checkout and payment pages. This may be useful even though it contains a small amount of embedded PHP.

{"cards":[{"_id":"3c02bfe6363e91f21800000f","treeId":"3c02bfb3363e91f21800000d","seq":1,"position":1,"parentId":null,"content":"# OrderPCBs.com\n\nA website for ordering printed circuit boards, via a direct API connection to the PCBWeb tool. This site will use the Stripe API for payment processing."},{"_id":"3c02c733363e91f218000010","treeId":"3c02bfb3363e91f21800000d","seq":1,"position":1,"parentId":"3c02bfe6363e91f21800000f","content":"# Customer viewable pages\n\nWe need to have customer viewable pages for the ordering and checkout process.\n\nThe customer should be able to see details about their orders. We do not expect at this time to provide real-time status of the orders, only that they have been ordered and the details about which design, the shipping info, which board house it was ordered from, the cost and any other details that are available at the time the order is placed."},{"_id":"3c02e834363e91f218000014","treeId":"3c02bfb3363e91f21800000d","seq":1,"position":1,"parentId":"3c02c733363e91f218000010","content":"# Ordering and Checkout pages\n\nWe have a design for these that was created by Nic Perner. See the PCBWeb Sierra Checkout mockups at https://www.dropbox.com/sh/6j7p2eb65o1dtgz/NE2HufPIns\n\n## Important Note\n\nWe have not yet determined if the design options will be changeable at checkout time. It seems likely that we may restrict these changes to the tool only. But the user might appreciate the flexibility to change these options on the website too. These changes may drive a price change."},{"_id":"3c02f8fd363e91f218000015","treeId":"3c02bfb3363e91f21800000d","seq":1,"position":2,"parentId":"3c02c733363e91f218000010","content":"# Order History\n\nThe order history will show a list of the orders for the customer. The customer may also see the details for an order. The customer will not be able to make any changes in the order history page."},{"_id":"3c02d163363e91f218000012","treeId":"3c02bfb3363e91f21800000d","seq":1,"position":1.5,"parentId":"3c02bfe6363e91f21800000f","content":"# Board House Admin pages\n\nFor each board house we need to have the ability for someone to enter the board ordering and construction options (board material, board colors, maximum number of layers, minimum drill sizes, and so on). We cannot know all of the types of options available so this page should be flexible. Some of this information will be used for design rule checking in the PCBWeb tool, and some of it will be used for displaying ordering options."},{"_id":"3c0301dd363e91f218000016","treeId":"3c02bfb3363e91f21800000d","seq":1,"position":1,"parentId":"3c02d163363e91f218000012","content":"# Design Options\n\nEach design option will typically have a name, a list of possible values, and optionally a price associated with each of the values. This price may be an absolute amount or a percent based on."},{"_id":"3c031d45363e91f218000017","treeId":"3c02bfb3363e91f21800000d","seq":1,"position":2,"parentId":"3c02d163363e91f218000012","content":"# Design Rules\n\nEach design rule should have a name and a minimum or maximum value, or a checkbox for design rules that are allowed/not allowed types of checks. Keith Ackermann will provide the list of supported design rules."},{"_id":"3c0a71fae62a111de4000016","treeId":"3c02bfb3363e91f21800000d","seq":1,"position":3,"parentId":"3c02d163363e91f218000012","content":"# Board House Payments\n\nInitially we will have two options:\nPercentage of order cost - we keep some percent of the order cost.\nPercent over order cost - we add a percentage amount over the cost of the board.\n\n"},{"_id":"3c02db97363e91f218000013","treeId":"3c02bfb3363e91f21800000d","seq":1,"position":1.75,"parentId":"3c02bfe6363e91f21800000f","content":"# API\n\nThe API will do the following:\n * Give the PCBWeb tool the design rules and the ordering options. \n* Provide a quote endpoint that will provide a list of quotes to the tool based on quantity and turnaround.\n* Accept an order from the tool"},{"_id":"3c032328363e91f218000018","treeId":"3c02bfb3363e91f21800000d","seq":1,"position":1,"parentId":"3c02db97363e91f218000013","content":"Here is a design for the API portion of the site that was done by a contractor. Do not feel that you must conform to this design. However, the sequence diagram is pretty accurate. The Spooler object in the sequence diagram is no longer used. So any interactions with this object in the diagram should be ignored. Also, the gerber files will be uploaded as part of the POST api/OrderBoard call. So any subsequent tests for if the gerber is \"complete\" should be ignored.\n\nhttps://gingkoapp.com/pcbweb-board-orders\n\nSome of the API calls and web pages listed in the sequence diagram in the link above are not correct. Here is the current list of API calls and web pages that should be coded on this site:\n\n**API calls**\nPOST api/QuoteBoard\nPOST api/OrderBoard\n\n**Web pages**\ncheckout/order#\npayment/order#\norder/order#"},{"_id":"3c08e8f3e62a111de4000011","treeId":"3c02bfb3363e91f21800000d","seq":1,"position":2,"parentId":"3c02db97363e91f218000013","content":"# Sierra APIs\n\nOur first board house will be Sierra Circuits. You can access their APIs and documentation on this URL.\n \napistaging.protoexpress.com\n \nLOGIN ID: sierra-pcbweb-admin\nPassword: 3102518\n\n## Existing Code\n\nWe have some PHP code that was written by a contractor for this project. It is incomplete, but it does work for the api/QuoteBoard call. The remainder of the code may be of limited help. We also have some html/css/javascript that was written to implement Nic's design for the checkout and payment pages. This may be useful even though it contains a small amount of embedded PHP."},{"_id":"3c09f793e62a111de4000014","treeId":"3c02bfb3363e91f21800000d","seq":1,"position":3,"parentId":"3c02db97363e91f218000013","content":""},{"_id":"3c08c6dce62a111de400000f","treeId":"3c02bfb3363e91f21800000d","seq":1,"position":1.875,"parentId":"3c02bfe6363e91f21800000f","content":""},{"_id":"3c02cdeb363e91f218000011","treeId":"3c02bfb3363e91f21800000d","seq":1,"position":2,"parentId":"3c02bfe6363e91f21800000f","content":""}],"tree":{"_id":"3c02bfb3363e91f21800000d","name":"Order PCBs website","publicUrl":"order-pcbs-website"}}