PolyFlowBuilder is a tool allows you to easily visualize and plan your academic path during your stay at Cal Poly SLO.
Take PolyFlowBuilder for a spin on the official website.
Beta versions of the application are deployed on the beta website. Note that anything may change at any time (including data loss) on the beta website.
Meant as a replacement to the now-gone PolyFlows (see a Wayback Machine snapshot), PolyFlowBuilder was initially written by @AGuyWhoIsBored during the Summer of 2020. It is meant to be more up-to-date, more robust, more active, and aims to make course planning at Cal Poly SLO as efficient and productive as possible.
PolyFlowBuilder was rewritten during the 2022-2023 academic year at Cal Poly as a senior project to allow the project to grow, scale, and to be more organized for future maintenance. See the final senior project report here.
Since August 20, 2023, PolyFlowBuilder has been open source to ensure the vision of the project continues and does not become deprecated like its predecessor PolyFlows.
- Can create flowcharts with a specified catalog year, starting year, major, and concentration (if applicable), and it will auto-populate with the respective flowchart (if it's available)
- Default flowchart templates are available for the 2015-2017 catalog all the way up to the 2022-2026 catalog
- Drag-and-drop interface for managing individual courses on your flowchart
- Each class contains information about its catalog description, unit count, and prerequisites (if any)
- Can color your classes with specific and custom colors (designating major classes, support classes, GEs, etc...)
- You can export your created flowchart as a PDF for printing or for markup (I find this especially handy myself) (will be improved in future updates)
- You can validate your flowchart to ensure that you have the minimum units, minimum upper-division units, GWR class, USCP class, Curriculum Sheet validation, and class-by-class prerequisite validation (with curriculum sheet validation planned in the future!)
- Can add notes to your flowchart
- Can add/remove terms from your flowchart (i.e. if you're taking summer classes at CP)
- Can create custom classes (i.e. if you need an "elective" placeholder, or anything else of that nature)
- "Credit Bin" allows you to keep track of courses you've earned units for towards your degree that you got from other instutitions (e.g. incoming transfer units, floating units, etc.)
- Can create as many flows as you need to succeed
- Term data is included in course information if available, sourced from public Cal Poly data provided by the Registrar's Office
The content in this repository can be broken down into the following components:
-
Application source: all content in the
srcandstaticfolders, which is the source for the PolyFlowBuilder web application. -
PolyFlowBuilder Database source: all content in the
api/srcfolder, which contain the scripts that generate a sizeable portion of the data available through PolyFlowBuilder. -
PolyFlowBuilder Database data: all content in the
api/datafolder, which contains the data and associated metadata in JSON format that makes up the data available through PolyFlowBuilder. See the License and Attribution sections for how you are allowed to use this data. -
Migration source: all content in the
migrationfolder, which contain scripts to migrate user data from the current live version of PolyFlowBuilder to the new version (which lives in this repository). -
Database schema: all content in the
prismafolder, which contains the Prisma schema for the PolyFlowBuilder database. -
Tests: all content in the
testsfolder along with colocated unit tests in the Application source (see #1), which make up the tests for the project. -
Miscellaneous files: all other files not mentioned in the above sections (which are largely the files located at the root of the repository), which have a variety of uses.
These components are likely to be separated into their own repositories in the future, but for now they are all included here for simplicity.
Some major features planned for the future of PolyFlowBuilder (in no particular order) are:
- Multiple major/minor support
- Quarter-to-Semester (Q2S) transition support
- Flowchart Marketplace
- Improved PDF Exports
- More Advanced Validation Suites
- More Complete Testing
The PolyFlowBuilder source is licensed under the AGPL-3.0 license. See LICENSE.
The PolyFlowBuilder Database is licensed under the ODbL license. See LICENSE-DATA. Attribution is required for any and all public use of this data; see the Attribution section for more information.
The data that makes up the PolyFlowBuilder Database has been meticulously (and to a certain extent, manually) sourced, constructed, and refined over the lifespan of the project to be of the highest quality possible. Therefore, it is imperative that these data are attributed correctly to PolyFlowBuilder (and therefore to the Database contributors) if the PolyFlowBuilder Database is used in other works. Use of any portion of the PolyFlowBuilder Database is governed by the ODbL license (see License).
In particular, see this exerpt from ODbL section 4.3:
However, if you Publicly Use a Produced Work, You must include a notice associated with the Produced Work reasonably calculated to make any Person that uses, views, accesses, interacts with, or is otherwise exposed to the Produced Work aware that Content was obtained from the Database, Derivative Database, or the Database as part of a Collective Database, and that it is available under this License.
From this, an attribution notice is required when using data sourced from the PolyFlowBuilder Database. An example attribution notice could be:
Contains data from PolyFlowBuilder, which is made available under the Open Database License (ODbL).
If you have any questions about attribution, feel free to reach out.
For support with PolyFlowBuilder features, issues, concerns, or anything else related to the project, you can either:
-
Submit feedback on PolyFlowBuilder's official website.
-
Join the official PolyFlowBuilder Discord server and ask your question there.
