Empower Your Projects with port_mss_action: Streamline, Secure, and Scale!
The Portal Interno MSS project streamlines Infrastructure as Code (IaC) development by automating AWS CDK deployment, managing dependencies, and simplifying testing workflows. Key features include dynamic environment-based deployment, seamless integration with AWS services, and efficient testing setups. Ideal for IaC developers and teams seeking streamlined deployment and testing processes.
|
Feature |
Summary |
| ⚙️ |
Architecture |
|
| 🔩 |
Code Quality |
|
| 📄 |
Documentation |
- Primary Language: Python
- Language Counts: txt - 3, py - 116, bat - 1, json - 1, yml - 5
- Package Managers: pip - requirements-dev.txt, iac/requirements.txt, iac/requirements-dev.txt
|
| 🔌 |
Integrations |
- Dependencies: github_actions, docker, pip, repo_owner.yml, create_pr.yml, docker-compose.yml, cdk.json, source.bat, requirements-dev.txt, python, ci.yml, cd.yml, requirements.txt, pytest-cov, boto3, python-dotenv, pytest
|
| 🧩 |
Modularity |
|
| 🧪 |
Testing |
- Test Commands: Using
pip - pytest
|
| ⚡️ |
Performance |
|
| 🛡️ |
Security |
|
| 📦 |
Dependencies |
|
| 🚀 |
Scalability |
|
└── port_mss_action/
├── .github
│ └── workflows
├── README.md
├── iac
│ ├── .gitignore
│ ├── README.md
│ ├── __init__.py
│ ├── adjust_layer_directory.py
│ ├── app.py
│ ├── cdk.json
│ ├── iac
│ ├── local
│ ├── requirements-dev.txt
│ ├── requirements.txt
│ └── source.bat
├── requirements-dev.txt
├── src
│ ├── __init__.py
│ ├── modules
│ └── shared
└── tests
├── __init__.py
├── modules
└── shared
PORT_MSS_ACTION/
__root__
| requirements-dev.txt |
- Facilitates testing and development by specifying required dependencies - Ensures seamless integration of pytest, pytest-cov, boto3, and python-dotenv for efficient testing and development workflows within the project architecture. |
iac
| app.py |
- Orchestrates AWS CDK deployment based on environment variables, adjusting layer directories for Lambda functions - Determines deployment stage based on GitHub branch name and sets relevant tags - Creates an AWS CloudFormation stack with specified configurations and tags. |
| requirements.txt |
Define dependencies for AWS CDK and Constructs library in the requirements file to manage infrastructure as code for the project. |
| source.bat |
- Enables activation of a Python virtualenv on Windows by running a batch script - Simplifies the process and eliminates the need for separate documentation on Windows-specific virtualenv activation commands. |
| cdk.json |
Enables configuration settings for AWS CDK, ensuring secure and efficient deployment across AWS and AWS China regions. |
| requirements-dev.txt |
Define testing dependencies for the infrastructure as code project. |
| adjust_layer_directory.py |
- The code file `adjust_layer_directory.py` facilitates adjusting the directory structure for Infrastructure as Code (IaC) projects - It handles copying shared directories to a specified destination, ensuring the correct structure for Lambda layers - This functionality streamlines the organization and deployment of resources within the project architecture. |
local
| docker-compose.yml |
Facilitates local DynamoDB setup for development environment using Docker Compose. |
iac
| bucket_stack.py |
- Defines AWS S3 buckets and CloudFront distributions for member and project photos based on the environment - Manages access policies and caching strategies for secure and optimized content delivery. |
| dynamo_stack.py |
- Creates DynamoDB tables with specified attributes, indexes, and removal policies based on the environment - Exports removal policies for actions and members with dynamic names. |
| lambda_stack.py |
- Generates Lambda functions for API Gateway integration, handling various CRUD operations for projects, members, and actions - Manages permissions for DynamoDB, SES, and S3 based on function requirements within the project's serverless architecture. |
| iac_stack.py |
- Defines infrastructure for a REST API with AWS services like Cognito, DynamoDB, S3, and Lambda functions - Manages environment variables, CORS settings, and permissions for various functions - Integrates user authentication and authorization using Cognito User Pools. |
src
modules
delete_action
app
| delete_action_controller.py |
- Handles the deletion of an action by validating parameters, processing the request, and returning the appropriate response based on the outcome - The controller interacts with the use case to delete the action, constructs a view model, and responds with success or error messages as needed. |
| delete_action_presenter.py |
- Implements a Lambda handler for deleting actions, integrating with controllers and use cases - Retrieves repositories for actions and members from the environment - Parses incoming Lambda request data and processes it through the delete action controller, returning a formatted Lambda response. |
| delete_action_viewmodel.py |
Defines view models for actions and deletion actions, facilitating data transformation for the frontend. |
| delete_action_usecase.py |
- Implements the Delete Action Usecase, handling the deletion of an action based on user permissions and ownership - Validates user registration, active status, and authorization to delete the action - Ensures only the action owner or an admin can perform the deletion operation. |
create_member
app
| create_member_presenter.py |
- Generates Lambda HTTP responses for creating a new member in the system - Orchestrates the flow between the HTTP request, member creation use case, and controller - Handles the event data and context to process the request and return the appropriate response. |
| create_member_controller.py |
- Handles the creation of a new member by validating and processing incoming data - If all required parameters are present and valid, it creates a new member entity, generates a view model, and returns a successful response - Handles various error scenarios gracefully, providing appropriate error messages for missing parameters, duplicate items, and other issues. |
| create_member_usecase.py |
- Implements a use case to create a new member in the system, ensuring uniqueness of user ID - Converts member details to title case and timestamps the hiring date. |
| create_member_viewmodel.py |
- Transforms member data into a structured dictionary for creating a new member - The code encapsulates the member details and generates a formatted output for the creation process, ensuring consistency and ease of use within the project architecture. |
delete_project
app
| delete_project_viewmodel.py |
- The `delete_project_viewmodel.py` file defines classes to represent and serialize project data for deletion - It encapsulates project details and formats them into a dictionary for deletion confirmation messages - This file plays a crucial role in managing project data during deletion operations within the codebase architecture. |
| delete_project_controller.py |
- Handles the deletion of a project by validating parameters, executing the deletion process, and returning the appropriate response based on the outcome - The controller interacts with the use case to delete the project, constructs a view model, and responds with success or error messages as needed. |
| delete_project_usecase.py |
- Implements a use case to delete a project, ensuring the user has the necessary permissions and the project exists - It interacts with repositories to handle the deletion process securely within the project architecture. |
| delete_project_presenter.py |
- Handles the deletion of projects by orchestrating the communication between the controller and use case - Retrieves necessary data from the request, processes the deletion, and constructs the appropriate response for the Lambda function. |
update_action
app
| update_action_presenter.py |
- Handles HTTP requests to update actions by interfacing with repositories and executing the necessary business logic through a controller - The code orchestrates the flow by processing incoming data, invoking the appropriate use case, and generating a response for the client. |
| update_action_viewmodel.py |
- UpdateActionViewModel encapsulates the logic to transform an Action object into a dictionary representation for updating actions - It serves as a bridge between the Action entity and the presentation layer, ensuring a clean separation of concerns within the codebase architecture. |
| update_action_usecase.py |
- Implements the Update Action Usecase, handling updates to action details based on specified parameters - Validates user permissions and ensures data integrity by updating associated members and start date accordingly. |
| update_action_controller.py |
- Handles updating action details based on user input, validating and processing data to create a new action entity - Utilizes a structured approach to ensure data integrity and consistency, returning a view model with the updated action information - Handles various error scenarios gracefully, providing appropriate responses for different types of issues encountered during the update process. |
get_history
app
| get_history_presenter.py |
- Handles the retrieval of historical data by orchestrating interactions between the controller, use case, and repositories - Parses incoming Lambda requests, enriches them with user information, and generates appropriate HTTP responses for the API endpoint. |
| get_history_viewmodel.py |
- Generates a view model for historical actions, encapsulating user, time, and project details - Converts actions to dictionaries for easy serialization, including stack and action type tags - Handles pagination with a last evaluated key for efficient retrieval. |
| get_history_controller.py |
- Handles retrieving user history based on specified parameters, validating input data, and returning the appropriate response - Parses and processes user requests, ensuring data integrity and error handling - The controller orchestrates the use case to fetch actions and generates a view model for the response, handling various exceptions for different scenarios. |
| get_history_usecase.py |
- Implements a use case to retrieve user actions history, handling pagination and access control based on user roles - Validates user permissions and fetches relevant actions from repositories, ensuring data integrity and security within the codebase architecture. |
create_action
app
| create_action_viewmodel.py |
- The code in create_action_viewmodel.py defines classes to represent and transform action data for creating new actions within the project architecture - It encapsulates the necessary attributes and methods to handle the conversion of action objects into dictionary formats for further processing and messaging purposes. |
| create_action_controller.py |
- Handles the creation of actions by validating and processing incoming data, then invoking the appropriate use case to create the action - Returns a view model representing the created action in the response - Handles various error scenarios and maps them to the corresponding HTTP status codes for proper error handling. |
| create_action_presenter.py |
- Facilitates the creation of actions by handling HTTP requests and responses through a structured flow of controller and use case interactions - Integrates with external interfaces and repositories to manage action and member data effectively within the project architecture. |
| create_action_usecase.py |
- Implements a use case to create an action, ensuring user permissions and data integrity - Validates user registration, permission status, and creates associated actions - Manages action creation and association with members, enforcing project rules and maintaining data consistency. |
get_all_projects
app
| get_all_projects_presenter.py |
- Handles the retrieval of all projects by orchestrating the communication between the controller, use case, and repositories - Parses incoming Lambda requests, processes the data, and constructs the appropriate HTTP response for the client. |
| get_all_projects_controller.py |
- Handles requests to retrieve projects based on specified dates and user, ensuring data integrity and user permissions - Parses request data, validates types, and triggers the use case to fetch projects - Converts project data into a view model for response - Handles various error scenarios gracefully, returning appropriate HTTP responses. |
| get_all_projects_viewmodel.py |
- Transforms project data into a structured format for display - The code organizes project details into a view model hierarchy, facilitating easy retrieval and presentation of multiple projects. |
| get_all_projects_usecase.py |
- Retrieve and enrich project data by fetching all projects within a specified timeframe - Validate user permissions and filter projects based on user roles - Calculate hours worked on each project and return the updated project list. |
update_member
app
| update_member_viewmodel.py |
Transforms member data into a view-friendly format for updating, encapsulating necessary fields and metadata. |
| update_member_controller.py |
- Handles updating member information based on incoming requests, ensuring data integrity and type validation - Utilizes a structured approach to validate and process various fields such as name, email, role, stack, year, and more - Returns appropriate responses for different error scenarios, maintaining robustness and reliability in the system. |
| update_member_presenter.py |
- Handles updating member information by orchestrating the communication between the controller, use case, and repository - Retrieves the requester's user information from the event context and returns the response in a standardized format. |
| update_member_usecase.py |
- Manages updating member details, ensuring data integrity and authorization - Validates and processes changes based on user roles and permissions - Handles exceptions and triggers email notifications for specific scenarios - Maintains consistency and security in member data modifications. |
delete_member
app
| delete_member_presenter.py |
- Handles the deletion of a member by orchestrating the communication between the controller, use case, and repository - Parses incoming Lambda requests, processes the deletion operation, and constructs the appropriate Lambda response. |
| delete_member_viewmodel.py |
- Transforms member data into a dictionary for deletion confirmation - The code encapsulates member details and generates a structured output with a deletion message. |
| delete_member_usecase.py |
- Implements the deletion of a member from the system based on specified conditions, ensuring that only authorized users can perform this action - Handles scenarios where the user initiating the deletion is an admin or a regular user, safeguarding against unauthorized access. |
| delete_member_controller.py |
- Handles the deletion of a member in the system by validating the request parameters, executing the deletion process, and returning the appropriate response based on the outcome - The controller interacts with the use case and view model to manage the deletion operation and provide feedback to the user. |
update_action_validation
app
| update_action_validation_viewmodel.py |
- Facilitates updating action validation status with a structured view model - The code defines two classes to represent action validation data and its update, ensuring a clear separation of concerns within the codebase architecture. |
| update_action_validation_presenter.py |
- Handles HTTP requests, enriches them with user data, and delegates to a controller for processing - Utilizes repositories to validate and update actions, ensuring proper authorization and data integrity within the project's architecture. |
| update_action_validation_controller.py |
- Handles updating action validation status based on user input, ensuring required parameters are present - Converts data to appropriate formats, handles errors, and returns responses with corresponding HTTP status codes. |
| update_action_validation_usecase.py |
- Validates and updates action items based on user permissions and validity status - Checks user roles and activity status before allowing updates - Sends email notifications for invalid actions to associated members. |
create_project
app
| create_project_controller.py |
- Handles project creation requests by validating and processing incoming data, then invoking the appropriate use case to create a new project - If any required parameters are missing or errors occur during processing, it returns the corresponding HTTP error response. |
| create_project_presenter.py |
- Facilitates project creation by orchestrating interactions between the controller, use case, and repositories - Handles Lambda requests, enriches data, and generates appropriate HTTP responses. |
| create_project_usecase.py |
Generates unique project codes and creates new projects, ensuring user roles, permissions, and project uniqueness are validated before persisting data. |
| create_project_viewmodel.py |
Transforms a Project into a formatted dictionary for display, encapsulating project details and creation message. |
batch_get_member
app
| batch_get_member_viewmodel.py |
Transforms member data into a structured format for retrieval, enabling seamless integration with the project's architecture. |
| batch_get_member_usecase.py |
- Implements a use case to retrieve multiple members by user IDs, ensuring they are active and registered - The code interacts with a member repository to fetch and validate member data, handling errors for unregistered users or inactive members. |
| batch_get_member_controller.py |
- Handles batch retrieval of member data, validating user input and returning appropriate responses based on the outcome - Validates user IDs, processes the request, and constructs a view model for successful responses - Handles various error scenarios like missing parameters, wrong types, and unregistered users, ensuring proper HTTP status codes are returned. |
| batch_get_member_presenter.py |
- Handles HTTP requests to retrieve member data by orchestrating the use case and controller components - Parses incoming data, processes it through the controller, and constructs an HTTP response for the client. |
get_history_project
app
| get_history_project_controller.py |
- Handles retrieving project history based on specified parameters, validating input data, and returning the results in a structured format - The controller ensures proper user authentication, parameter validation, and error handling, providing a seamless interaction between the user interface and the project history retrieval logic. |
| get_history_project_viewmodel.py |
- Define a view model that transforms actions into a structured dictionary for retrieving project history - The model encapsulates action details and handles conversion to a dictionary format, including associated members and tags. |
| get_history_project_presenter.py |
- Handles the HTTP request for retrieving project history by orchestrating the interaction between the controller, use case, and repositories - Parses the incoming request, processes it through the use case, and constructs the appropriate HTTP response for the client. |
| get_history_project_usecase.py |
- Implements a use case to retrieve project history, ensuring user permissions and pagination - Validates user access, retrieves actions based on role, and handles pagination for historical data retrieval. |
get_member
app
| get_member_controller.py |
- Handles incoming requests, validates parameters, and retrieves member data using the GetMemberUsecase - Converts data into a view model and returns a response based on the outcome, such as OK, BadRequest, Forbidden, or InternalServerError, ensuring proper error handling and response generation in the application. |
| get_member_viewmodel.py |
Transforms member data into a structured dictionary for retrieval, maintaining key attributes and values. |
| get_member_usecase.py |
- Retrieve member data, calculate hours worked, and assign projects based on user activity within specified date range - Validates user ID, checks registration status, and ensures user is active before returning member details. |
| get_member_presenter.py |
- Facilitates retrieving member data by orchestrating interactions between the member repository, action repository, and the use case - The presenter handles incoming HTTP requests, enriches them with user context, and delegates processing to the controller for generating an appropriate HTTP response. |
get_project
app
| get_project_presenter.py |
- Handles the retrieval of project data by orchestrating interactions between the project controller, use case, and repositories - Parses incoming HTTP requests, extracts user information, and generates appropriate HTTP responses for the project retrieval operation. |
| get_project_usecase.py |
- Retrieves project details based on a provided code and user ID, ensuring the user is registered and active - Validates input parameters and handles potential errors, returning the project information if found. |
| get_project_viewmodel.py |
Transforms project data into a structured view for retrieval, encapsulating key project details. |
| get_project_controller.py |
- Handles incoming requests to retrieve project details, ensuring required parameters are present and valid - Utilizes a use case to fetch project data and constructs a view model for response - Handles various error scenarios and returns appropriate HTTP responses based on the outcome. |
get_all_members
app
| get_all_members_usecase.py |
- Retrieves and processes member data based on specified criteria, including active status and admin role validation - Calculates hours worked and assigns projects to members - Ensures user permissions are met before returning the member data. |
| get_all_members_viewmodel.py |
Converts and structures member data for retrieval, ensuring consistency and ease of use across the codebase architecture. |
| get_all_members_controller.py |
- Handles requests to retrieve all members, validating parameters and handling errors appropriately - Utilizes a use case to fetch members based on the requester's user ID, then formats the data using a view model before returning a response with the member information. |
| get_all_members_presenter.py |
- Handles HTTP requests to retrieve all members by utilizing a controller that interacts with a use case - The use case accesses member and action repositories to fetch the required data - The presenter formats the response for the Lambda function, ensuring seamless communication between the client and the backend system. |
update_project
app
| update_project_controller.py |
- Handles updating project details based on user input, validating and processing data to ensure accuracy - Utilizes a structured approach to manage project information, interacting with external interfaces for seamless integration - Returns appropriate responses for successful updates or error scenarios, maintaining data integrity throughout the process. |
| update_project_presenter.py |
- Handles updating project data by orchestrating interactions between the project repository, use case, and controller - Parses incoming HTTP requests, extracts user information, and generates appropriate HTTP responses. |
| update_project_viewmodel.py |
- UpdateProjectViewmodel class transforms and structures project data for updates - It encapsulates the logic to convert project details into a dictionary format, including a message indicating successful project updates. |
| update_project_usecase.py |
- UpdateProjectUsecase class handles updating project details based on user input - It validates user permissions, project existence, and member associations before making updates through repositories - This code ensures data integrity and security within the project architecture. |
get_all_members_admin
app
| get_all_members_admin_presenter.py |
- Handles the Lambda function for retrieving all members in the admin panel by orchestrating the necessary components like controllers, use cases, and repositories - The code integrates with external interfaces for HTTP requests and responses, ensuring seamless communication within the project architecture. |
| get_all_members_admin_controller.py |
Handles requests to retrieve all members for admin view, validating parameters and returning appropriate responses based on the outcome. |
| get_all_members_admin_usecase.py |
- Generates a list of active members, their hours worked, and associated projects within a specified date range - Validates user permissions and handles edge cases like no active members or empty results - Integrates with repositories to fetch member and action data for comprehensive reporting. |
| get_all_members_admin_viewmodel.py |
- Transforms member data into a structured format for admin display - The code organizes member details and formats them into dictionaries for easy retrieval and presentation. |
shared
| environments.py |
- Defines environment variables and repositories based on the application stage - Determines repository implementations for actions and members - Handles loading environment variables and configuring local settings - Provides methods to retrieve environment settings and repositories. |
domain
entities
| member.py |
Defines a Member entity with essential attributes and validation methods to ensure data integrity and consistency within the project's domain model. |
| action.py |
- Defines a structured entity for actions within the project, enforcing data integrity and consistency - Validates and stores essential details such as user ID, dates, duration, and project information - Implements methods to ensure the correctness of action attributes like titles, descriptions, and associated members. |
| associated_action.py |
- Defines an entity for an associated action with validation checks for action ID, start date, and user ID - The class ensures data integrity and consistency for associated actions within the project's domain entities. |
| project.py |
- Defines a Project entity with attributes like code, name, and description - Validates user IDs and project code length - Allows changing Product Owner and Scrum Master user IDs - Handles photo validation and provides methods for comparison and representation. |
repositories
| member_repository_interface.py |
- Defines an interface for member repository operations, including creating, deleting, updating, and retrieving members - Also supports batch operations and sending active member emails. |
| action_repository_interface.py |
- Defines an interface for interacting with actions, projects, and associated actions - It outlines methods for creating, updating, and deleting actions and projects, as well as retrieving associated actions by user ID or project code - Additionally, it includes functionality for managing action durations and sending notifications. |
enums
| course_enum.py |
Defines course enums for various engineering disciplines in the project's shared domain. |
| stack_enum.py |
Defines stack categories for different project domains. |
| role_enum.py |
Defines role enums for various team positions in the project's shared domain. |
| action_type_enum.py |
Defines action types for various activities within the project, such as coding, meetings, code reviews, learning, presentations, design, architecture, and work. |
| active_enum.py |
Defines active status states for the domain, such as ACTIVE, FREEZE, DISCONNECTED, and ON_HOLD. |
infra
external
dynamo
| dynamo_table.py |
- Facilitates interaction with DynamoDB tables by managing the connection and providing access to the specified table - This class abstracts the setup and teardown logic required to work with DynamoDB, enhancing the codebase's modularity and maintainability. |
datasources
| dynamo_datasource.py |
- The `dynamo_datasource.py` file in the project's architecture serves as a crucial component for interacting with DynamoDB tables - It encapsulates functionality for managing data sources, including defining the partition and sort keys - By leveraging the boto3 library, this code file enables seamless communication with DynamoDB tables, ensuring efficient data retrieval and manipulation within the system. |
| mock_db.py |
Manages a list of classes for the DynamoDB mock database in the shared infrastructure. |
| manual_upload_database.py |
- Improve data integrity by identifying and handling duplicates in the DynamoDB table - The code initializes a DynamoDB datasource, retrieves data, and performs a batch write operation - Additionally, it includes a function to identify duplicate records based on specified keys. |
repositories
| load_action_mock_to_dynamo.py |
- Initialize and load mock data into DynamoDB for the project's action and project entities - The code sets up a DynamoDB table, then populates it with mock data for actions, projects, and associated actions - This process ensures a local DynamoDB instance is ready for testing or a real DynamoDB instance for production use. |
| member_repository_mock.py |
- Manages a mock repository for members, allowing creation, deletion, retrieval, and updating of member information - Implements methods to handle member data and send active member emails. |
| load_member_mock_to_dynamo.py |
- Initialize and load mock data into a DynamoDB table for the project's member repository - The code sets up the DynamoDB table and populates it with mock member data using a DynamoDB client and repository classes - This process ensures the availability of test data for the member repository in a local or real DynamoDB environment. |
| action_repository_dynamo.py |
- The code file `action_repository_dynamo.py` in the `src/shared/infra/repositories` directory serves as an implementation of the Action Repository Interface within the project architecture - It facilitates the interaction with a DynamoDB datasource to handle actions, associated actions, members, and projects - This file encapsulates the logic for storing and retrieving data related to actions, ensuring seamless communication with the underlying data storage while maintaining consistency with the project's domain entities. |
| member_repository_dynamo.py |
- Manages member data in DynamoDB, including creation, retrieval, update, and deletion operations - Handles member photo uploads to S3 with presigned URLs - Sends email notifications for member activation - Implements methods for batch retrieval and updating member details. |
| action_repository_mock.py |
- The code file `action_repository_mock.py` serves as a mock implementation of an action repository interface within the project's architecture - It defines data structures for projects, actions, and associated actions, mimicking the behavior of a real repository - This file plays a crucial role in providing a simulated environment for testing and development purposes, enabling seamless integration of actions within the project's ecosystem. |
dto
| associated_action_dynamo_dto.py |
Converts data between AssociatedAction and DynamoDB formats, facilitating seamless interaction with the database layer. |
| member_dynamo_dto.py |
- Defines a data transfer object (DTO) for a member entity, facilitating conversion to and from a DynamoDB-compatible format - Enables seamless interaction between the application's domain entities and the underlying data storage layer. |
| project_dynamo_dto.py |
Converts project data between DynamoDB format and entity objects, facilitating seamless integration within the project architecture. |
| user_api_gateway_dto.py |
Converts user data from the API Gateway to a standardized DTO object for seamless integration within the project's infrastructure. |
| action_dynamo_dto.py |
- Defines a data transfer object (DTO) for actions in the project, facilitating conversion between different data representations - The DTO encapsulates essential action details and provides methods for conversion to and from DynamoDB-compatible formats - This abstraction streamlines data handling and ensures consistency across the system. |
helpers
enum
errors
| controller_errors.py |
Define custom error classes for handling missing parameters, wrong type parameters, and wrong file types in the controller_errors module, enhancing error management in the project architecture. |
| base_error.py |
Defines a base error class to handle custom error messages across the codebase architecture. |
| domain_errors.py |
Define custom domain errors for better error handling in the project's shared helpers. |
| usecase_errors.py |
- Define custom error classes for specific scenarios like no items found, duplicated items, forbidden actions, user permissions, and invalid pagination amounts - These classes enhance error handling and provide clear feedback within the codebase architecture. |
external_interfaces
| external_interface.py |
- Defines abstract classes for request and response interfaces to standardize external interactions within the project architecture - This code file establishes a clear structure for handling data and status codes in external interfaces, promoting consistency and ease of integration across various components. |
| http_lambda_requests.py |
- The code file in src/shared/helpers/external_interfaces/http_lambda_requests.py defines classes for handling HTTP requests and responses in a Lambda environment - It encapsulates logic for constructing and formatting HTTP responses, including setting default headers and handling request data - The classes provide a structured approach for managing communication with external interfaces in AWS Lambda functions. |
| http_models.py |
- Defines HTTP request and response models with data, headers, and status code attributes - Handles overlapping keys between body, query parameters, and headers - Provides a structured representation of incoming and outgoing HTTP messages. |
| http_codes.py |
- Define standard HTTP response classes for different status codes in the project's shared helpers - These classes encapsulate response logic for OK, Created, No Content, Bad Request, Internal Server Error, Not Found, Conflict, Redirect, and Forbidden responses, enhancing code readability and maintainability. |
utils
| compose_invalid_action_email.py |
Generates an invalid action email message by composing a customized HTML template with member and action details. |
| compose_member_active_email.py |
- Generates an HTML email message to notify a member of their system activation status - Incorporates member's name dynamically into the message template. |
.github
workflows
| REPO_OWNER.yml |
- Implements a workflow that checks and approves the owner of a repository on pull request reviews for specified branches - It leverages a reusable CI workflow file from the `maua-dev/ci_workflows_reusable` repository to streamline the process. |
| CI.yml |
- Automate CI/CD pipeline for testing and code coverage - Run tests, generate coverage reports, and upload to Codecov using GitHub Actions - Ensure Python 3.9 setup and dependencies installation before executing tests - This workflow triggers on push, pull requests, and manual dispatch. |
| CREATE_PR.yml |
- Automates the creation of pull requests on specific branches by leveraging a reusable workflow file - This setup streamlines the process of initiating code reviews and collaboration within the project, enhancing overall development efficiency and code quality. |
| CD.yml |
Automates AWS CDK deployment based on branch pushes and workflow triggers, setting up AWS credentials and deploying infrastructure with specified configurations. |
Before getting started with port_mss_action, ensure your runtime environment meets the following requirements:
- Programming Language: Python
- Package Manager: Pip
- Container Runtime: Docker
Install port_mss_action using one of the following methods:
Build from source:
- Clone the port_mss_action repository:
❯ git clone https://github.com/Maua-Dev/port_mss_action
- Navigate to the project directory:
- Install the project dependencies:
Using pip 
❯ pip install -r requirements-dev.txt, iac/requirements.txt, iac/requirements-dev.txt
Using docker 
❯ docker build -t Maua-Dev/port_mss_action .
Run port_mss_action using the following command:
Using pip 
Using docker 
❯ docker run -it {image_name}
Run the test suite using the following command:
Using pip 
Contributing Guidelines
- Fork the Repository: Start by forking the project repository to your github account.
- Clone Locally: Clone the forked repository to your local machine using a git client.
git clone https://github.com/Maua-Dev/port_mss_action
- Create a New Branch: Always work on a new branch, giving it a descriptive name.
git checkout -b new-feature-x
- Make Your Changes: Develop and test your changes locally.
- Commit Your Changes: Commit with a clear message describing your updates.
git commit -m 'Implemented new feature x.'
- Push to github: Push the changes to your forked repository.
git push origin new-feature-x
- Submit a Pull Request: Create a PR against the original project repository. Clearly describe the changes and their motivations.
- Review: Once your PR is reviewed and approved, it will be merged into the main branch. Congratulations on your contribution!
Contributor Graph
This project is protected under the MIT License.