This project was generated with Angular CLI version 18.1.1.
For development, we recommend using WebStorm, a powerful IDE ideal for JavaScript development. It is free for students and faculty members with a .edu email. You can download it here.
-
Download & Install WebStorm: Visit the WebStorm site and download the software. Remember to register with your .edu email to get it for free.
-
Clone the Repository: Using WebStorm, clone the PMKS+ repository to your local machine.
-
Install Node JS: https://nodejs.org/en/download
-
Install Dependencies: The necessary dependencies should automatically install when the repository is cloned. If any dependencies are missing, you can run
npm install
to add them. -
Set Up Run Configurations: Create two run configurations in WebStorm:
- First Configuration: A npm configuration that runs 'npm start'.
- Second Configuration: A JavaScript Debug configuration with the URL set to
http://localhost:4200
. This allows you to run a locally hosted test site on port 4200 and use breakpoints and the debugger to identify errors.
- Angular DevTools: We recommend using the Angular DevTools extension for your browser (available for both Chrome and Firefox). This tool provides additional functionality for debugging and optimizing your Angular applications.
With these steps, you should have a fully functional development environment for PMKS+. Happy coding!
We encourage high code quality and strive for clean, readable, and maintainable code. Here are some general practices we follow:
-
Code Purposefully: Code should be written in a simple, obvious style with descriptive variable and function names. Avoid commenting code to explain how it works; instead, code should be written in a way that is inherently understandable. Use comments to explain why—to describe high-level behavior and its importance.
-
Keep Code Short: Try to keep classes under 200 lines of code if possible and functions short. This prevents the emergence of "god" classes that can make the codebase difficult to maintain.
-
Good OOP Practices: Follow principles like SOLID, DRY, and prefer composition over inheritance. If complex relationships seem necessary, reach out first so we can discuss the best approach.
-
Follow Programming Conventions:
- File names should always be dash-delimited, with dots being used to denote the “type” of the file. For example:
currency-converter.pipe.ts1
- All service classes should end with the term
Service
. For example:HeroService1
- Selectors for your components should always be dash-delimited, like files, and contain the appropriate app prefix. For example:
app-hero-list
- The name of a component class should end with
Component
. For example:HeroListComponent
- The name of a directive class should end with
Directive
. For example:HighlightDirective
- The name of a module class should end with
Module
. For example:AppModule2
- The name of a pipe class should be in
PascalCase
and end withPipe
. For example:CurrencyConverterPipe2
- For more details, check out Angular's offical coding style guide.
While the codebase may not always perfectly adhere to these conventions, the aim is to continually improve the codebase to meet these standards.
We follow an agile scrum-style workflow, using an issue tracker (Kanban board) in our GitHub organization here.
The process is as follows:
- Create a fork for each issue you work on.
- Once you've resolved an issue in your fork, submit a pull request to the main branch.
Please note, the main branch has a CI/CD workflow setup that will update the production website, so nothing should be pushed directly to the main branch!
The commits to the main branch will get reflected on app.pmksplus.com
All other branches will get published to https://[BRANCHNAME]--pmks.netlify.app (For example https://staging--pmks.netlify.app)
Landing Page: https://pmksplus.com
This project was generated with Angular CLI version 18.1.1.
Run ng serve
for a dev server. Navigate to http://localhost:4200/
. The application will automatically reload if you change any of the source files.
Run ng generate component component-name
to generate a new component. You can also use ng generate directive|pipe|service|class|guard|interface|enum|module
.
Run ng build
to build the project. The build artifacts will be stored in the dist/
directory.
Run ng test
to execute the unit tests via Karma.
Run ng e2e
to execute the end-to-end tests via a platform of your choice. To use this command, you need to first add a package that implements end-to-end testing capabilities.
To get more help on the Angular CLI use ng help
or go check out the Angular CLI Overview and Command Reference page.
PMKS+ is licensed under the MIT License, a popular, permissive open-source license. The full license text is included in the LICENSE file in this repository.
For any queries, you can reach out to the development team at gr-pmksplus@wpi.edu.
PMKS+ is based on PMKS, developed by Prof. Matthew I. Campbell, Professor, Mechanical Engineering, Oregon State University.
- Jessica M. Rhodes (BS/MS RBE '25)
- Ansel Chang (CS '25)
- Jacob Adamsky (CS' 24)
- Kohmei Kadoya (BS/MS RBE '23)
- Alex Galvan (BS ME/RBE ’21)
- Haofan Zhang (BS/MS CS ’20)
- Trevor Dowd (BS CS ’20)
- Robert Dutile (BS CS ’20)
- Milap Patel (BS ME/CS ’20)
- Michael Taylor (BS CS ’19)
- Griffin Cecil (BS CS ’19)
- Dimitrios Tsiakmakis (BS CS ’19)
- Praneeth Appikatla (BS CS ’19)
- Peter Prygocki (BS CS ’20)
- Fabian Gaziano (BS CS '20)
- Zhihao Xie (BS RBE '19)
- Albert Nana Beka (BS/MS ME '19)
- Jonathan Andrews (BS RBE ’18)
- Brandon Knox (BS RBE ’18)
- Guillermo Rivera (BS RBE ’18)
- Brad Leach (BS ME ’18)
- Garrett Holman (BS ME ’18)
- Oluchukwu Okafor (BS ME ’18)
- Adel Benchemam (Massachusetts Academy of Math and Science '26)
- Lucas Panta (Worcester Technical High School '25)
- Naseem Blount (Worcester Technical High School '25)
- Prof. David Brown (CS)
- Prof. Pradeep Radhakrishnan (ME, RBE)