> For the complete documentation index, see [llms.txt](https://docs.de-centra.com/decentra-docs-1/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.de-centra.com/decentra-docs-1/explore-our-roles/developers/submission-guidelines.md).

# Submission Guidelines

Every developer must adhere to the following guidelines when submitting code to Decentra projects. Failure to comply with these rules will result in *invalidated submissions*.&#x20;

This checklist ensures that all contributions are consistent, high-quality, and secure.

1. **Follow Style Guide**
   * Adhere to the standard coding conventions and style guidelines.
   * Ensure code is well-structured, readable, and follows naming conventions.
   * Refer to the [Style Guide](/decentra-docs-1/explore-our-roles/developers/submission-guidelines/style-guide.md) for detailed instructions.
2. **Include Comprehensive Tests**
   * Achieve 100% test coverage with unit tests, integration tests, and security tests.
   * Ensure all functions and interactions are thoroughly tested.
   * Refer to the [Testing Guidelines](/decentra-docs-1/explore-our-roles/developers/submission-guidelines/testing-guidelines.md) page for specific instructions.
3. **Comply to Smart Contract Security standards**&#x20;
   * Address common attack vectors and ensure the code is secure.
   * Conduct thorough tests to identify and mitigate potential vulnerabilities such as reentrancy, overflow/underflow, and unauthorized access.
   * Refer to the [Addressing Common Attack Vectors](/decentra-docs-1/explore-our-roles/developers/submission-guidelines/testing-guidelines/addressing-attack-vectors-via-tests.md) page for detailed instructions.
4. **Test for Gas Efficiency**
   * Ensure the code is optimized for gas efficiency.
   * Document gas usage in the [PR](/decentra-docs-1/explore-our-roles/developers/submission-guidelines/how-to-contribute/pr-template.md), highlighting any optimizations made.
   * Use tools to measure gas consumption and verify improvements.
5. **Add Natspec Documentation**
   * Provide detailed Natspec comments for all functions, events, and complex code sections.
   * Ensure the documentation explains the purpose and functionality clearly.
   * Refer to the [Style Guide](/decentra-docs-1/explore-our-roles/developers/submission-guidelines/style-guide.md) for best practices on writing Natspec comments.
6. **Document New Functionalities**
   * Clearly document any new functionalities added to the project.
   * Ensure documentation is comprehensive and easy to understand.
   * Use diagrams or flowcharts if necessary to illustrate complex functionalities.
7. **Justification for Coding Choices**
   * Explain your coding choices and security considerations in the [PR](/decentra-docs-1/explore-our-roles/developers/submission-guidelines/how-to-contribute/pr-template.md) description.
   * Discuss any security measures implemented, such as input validation, access control, and error handling.
   * Provide a rationale for design decisions, especially for complex or unconventional approaches.
8. **Follow PR Template**
   * Use the platform’s structured PR template for all submissions.
   * Ensure all sections of the PR template are completed accurately and thoroughly.
   * Detailed instructions on how to use the PR template can be found on the How to Contribute page.
9. **Add Screenshots or Evidence (if applicable)**
   * For changes that affect the UI or have visual components, include screenshots in the PR.
   * Provide evidence of test results, gas efficiency measurements, and security tests.
10. **Review and Self-Check**
    * Before submitting, review your code and ensure it meets all the guidelines.
    * Conduct a self-check against this checklist to ensure compliance with all requirements.

***

By following this submission checklist, you ensure that your contributions to Decentra projects are consistent, high-quality, and secure. This not only facilitates a smoother review process but also helps maintain the overall integrity and reliability of the platform.
